程序员的资源宝库

网站首页 > gitee 正文

k8s sealos安装(k8s安装loki)

sanyeah 2024-04-03 18:37:53 gitee 6 ℃ 0 评论

k8s sealos安装

1.1 简介

官网地址: https://github.com/labring/sealos
基于kubeadm安装

附属:

  • 他用go基于ssh协议写了一个远程传递工具
  • 他帮我们准备了资源包,里面包括安装脚本,配置文件和镜像,放在阿里云的存储上,不再需要担心网络问题影响部署

https://www.sealyun.com/zh-Hans/docs/Intro
目前sealos不是完全免费的,1.1版本左右的是免费的,稳定版测试的版本。1.2.3是收费的,一年100左右

2.1 部署架构


目前一些大型公司会用一个集群来部署同一种服务,而不是一个集群里部署多个服务。当然,如果只有十几台机器就没必要这样部署了

对于kubeadm来说,同一个集群中如果有多个etcd,就会自动称为etcd集群,这是kubeadm的功能,不是etcd的。

3.1 安装前准备

我们准备4台机器,组装三主一从,从节点没必要整那么多

192.168.40.130  k8s-master01
192.168.40.131  k8s-master02
192.168.40.132  k8s-master03
192.168.40.133  k8s-node1
//设置主机名
hostnamectl  set-hostname  k8s-master01

//拷贝主机文件到其他主机
cat /etc/hosts
192.168.40.130 k8s-master01
192.168.40.131 k8s-master02
192.168.40.132 k8s-master03
192.168.40.133 k8s-node1

scp /etc/hosts root@192.168.40.131:/etc/hosts
...

//安装依赖包
yum install -y conntrack ntpdate ntp ipvsadm ipset  iptables curl sysstat libseccomp wget  vim net-tools git chrony


//设置防火墙为 Iptables 并设置空规则
systemctl  disable firewalld
yum -y install iptables-services  &&  systemctl  start iptables  &&  systemctl  enable iptables  &&  iptables -F  &&  service iptables save

//修改三个主节点的chrony,让他到阿里云同步时间
cat /etc/chrony.conf

server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 192.168.0.0/16	//允许大网段,我这里没做很多限制
local stratum 10	//权重,master的节点1,2,3的权重最好不一样,为10,11,12即可
logdir /var/log/chrony


//修改一个从节点的chrony
cat /etc/chrony.conf

server 192.168.40.130 iburst	//从三个master节点同步时间
server 192.168.40.131 iburst
server 192.168.40.132 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony

//重启并开机自启后确认时间是否一致
systemctl restart chronyd;systemctl enable chronyd

//关闭 SELINUX
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

//调整内核参数,对于 K8S
cat > kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0 # 禁止使用 swap 空间,只有当系统 OOM 时才允许使用它
vm.overcommit_memory=1 # 不检查物理内存是否够用
vm.panic_on_oom=0 # 开启 OOM	
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
cp kubernetes.conf  /etc/sysctl.d/kubernetes.conf
sysctl -p /etc/sysctl.d/kubernetes.conf

//调整系统时区
//设置系统时区为 中国/上海
timedatectl set-timezone Asia/Shanghai
//将当前的 UTC 时间写入硬件时钟
timedatectl set-local-rtc 0
//重启依赖于系统时间的服务
systemctl restart rsyslog 
systemctl restart crond

//关闭系统不需要服务
systemctl stop postfix && systemctl disable postfix

//设置 rsyslogd 和 systemd journald
mkdir /var/log/journal # 持久化保存日志的目录
mkdir /etc/systemd/journald.conf.d
cat > /etc/systemd/journald.conf.d/99-prophet.conf <<EOF

[Journal]
# 持久化保存到磁盘
Storage=persistent
# 压缩历史日志
Compress=yes
SyncIntervalSec=5m
RateLimitInterval=30s
RateLimitBurst=1000
# 最大占用空间 10G
SystemMaxUse=10G
# 单日志文件最大 200M
SystemMaxFileSize=200M
# 日志保存时间 2 周
MaxRetentionSec=2week
# 不将日志转发到 syslog
ForwardToSyslog=no
EOF

systemctl restart systemd-journald

echo "1" > /proc/sys/net/bridge/bridge-nf-call-iptables

//开启网桥和防火墙的连接模块
cat  /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4

chmod 755 /etc/sysconfig/modules/ipvs.modules && bash
modprobe  br_netfilter



//升级系统内核为 4.44
从网盘下载4.4内核
链接:https://pan.baidu.com/s/1m3jaUUSChfURDnGwzP_zJA 
提取码:vbx0

//安装4.4内核,从网盘下载后上传到机器
yum -y install kernel-lt-4.4.222-1.el7.elrepo.x86_64.rpm
//设置开机从新内核启动
cat /boot/grub2/grub.cfg  | grep 4.4

截取:CentOS Linux (4.4.222-1.el7.elrepo.x86_64) 7 (Core)  这一段
//设置开机自启
grub2-set-default 'CentOS Linux (4.4.222-1.el7.elrepo.x86_64) 7 (Core)'

//重启机器
reboot
uname -r 查看内核版本

系统初始化到这里就可以了,kubeadm等一些都是sealos自动帮我们安装的

4.1 安装Sealos

在开始安装前我们需要下载好两个包,我放到网盘里了
链接:https://pan.baidu.com/s/1m3jaUUSChfURDnGwzP_zJA
提取码:vbx0

  • sealos
  • kube1.16.0.tar.gz
//注意了注意:因为是用go写的一个ssh传递工具,所以需要没有像ansible那样很复杂,初始化时,几台机器的密码必须一样,初始化完成后可以再改成别的密码
//我们的所有机器必须2核心以上,否则报错。这些包我们上传到一个机器上即可,他们之间会相互复制
//下载并安装 sealos, sealos 是个 golang 的二进制工具,直接下载拷贝到 bin 目录即可, release 页面也可下载
wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos && \
    chmod +x sealos && mv sealos /usr/bin
	
//如果上面sealos没有下载,而是从网盘下载的,放到/usr/bin下后就可以初始化k8s集群了
mv sealos /usr/bin/;chmod 755 /usr/bin/sealos

//安装一个三 master 的 kubernetes 集群,他会把文件传递到所有节点,并用kubeadm部署k8s
sealos init --passwd 123456 --master 192.168.40.130 --master 192.168.40.131 --master 192.168.40.132 --node 192.168.40.133 --user root --version v1.16.0 --pkg-url=/root/kube1.16.0.tar.gz

//如果初始化报错,需要clean后再初始化,我这里其中一台机器1核心,他要求必须1核心以上,我这报错了。。
sealos clean --master 192.168.40.130 --master 192.168.40.131 --master 192.168.40.132 --node 192.168.40.133

4.1.1 增加 Master 节点

sealos join --master 192.168.0.6 --master 192.168.0.7

//或者多个连续 IP
sealos join --master 192.168.0.6-192.168.0.9  

4.1.2 增加 node

sealos join --node 192.168.0.6 --node 192.168.0.7

//或者多个连续 IP
sealos join --node 192.168.0.6-192.168.0.9  

4.1.3 删除指定 Master 节点

sealos clean --master 192.168.0.6 --master 192.168.0.7

//或者多个连续 IP
sealos clean --master 192.168.0.6-192.168.0.9 

4.1.4 删除指定 node 节点

sealos clean --node 192.168.0.6 --node 192.168.0.7

//或者多个连续 IP
sealos clean --node 192.168.0.6-192.168.0.9 

4.1.5 清理集群

sealos clean --all

4.1.6 备份集群

sealos etcd save

4.1.7 节点状态

//kube-scheduler 状态查看
 kubectl  get endpoints kube-scheduler -n kube-system -o yaml
    NAME             ENDPOINTS   AGE
    kube-scheduler   <none>      12m
    [root@k8s-master01 ~]# kubectl  get endpoints kube-scheduler -n kube-system -o yaml
    apiVersion: v1
    kind: Endpoints
    metadata:
      annotations:
        control-plane.alpha.kubernetes.io/leader: '{"holderIdentity":"k8s-master02_d9af3300-cdad-49ce-838a-2ccdd38fbf18","leaseDurationSeconds":15,"acquireTime":"2021-03-01T07:09:24Z","renewTime":"2021-03-01T07:21:27Z","leaderTransitions":1}'
      creationTimestamp: "2021-03-01T07:08:32Z"
      name: kube-scheduler
      namespace: kube-system
      resourceVersion: "2013"
      selfLink: /api/v1/namespaces/kube-system/endpoints/kube-scheduler
      uid: b34592b6-0fe0-4cdd-9887-4b5fc9e8de97
	  
	  
	  
//kube-controller-manager 状态查看
kubectl  get endpoints kube-controller-manager -n kube-system -o yaml
    apiVersion: v1
    kind: Endpoints
    metadata:
      annotations:
        control-plane.alpha.kubernetes.io/leader: '{"holderIdentity":"k8s-master02_690df468-d680-4231-a8b9-4c8fa452eecf","leaseDurationSeconds":15,"acquireTime":"2021-03-01T07:09:24Z","renewTime":"2021-03-01T07:25:47Z","leaderTransitions":1}'
      creationTimestamp: "2021-03-01T07:08:32Z"
      name: kube-controller-manager
      namespace: kube-system
      resourceVersion: "2440"
      selfLink: /api/v1/namespaces/kube-system/endpoints/kube-controller-manager
      uid: 69f747dd-57d7-4aec-8443-9b3906ee9963

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表