安装准备

两台机器(基于CentOS 7.9):
10.10.1.60 (K8S Master) 
10.10.1.61 (K8S Worker)

安装K8S

升级内核

3.10内核在大规模集群具有不稳定性,所以需要升级内核 。(所有机器都要升级到一样)

#查看内核版本
$ uname -sr 

#系统更新
$ yum update

#载入公钥
$ rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

#安装 ELRepo 最新版本
$ yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

#列出可以使用的 kernel 包版本
$ yum list available --disablerepo=* --enablerepo=elrepo-kernel 

#安装指定的 kernel 版本:(已查看版本为准,采用lt长期支持版本)
$ yum install -y kernel-lt-5.4.214-1.el7.elrepo --enablerepo=elrepo-kernel

#查看系统可用内核
$ cat /boot/grub2/grub.cfg | grep menuentry

#设置开机从新内核启动
$ grub2-set-default "CentOS Linux (5.4.214-1.el7.elrepo.x86_64) 7 (Core)"
 
#查看内核启动项
$ grub2-editenv list
saved_entry=CentOS Linux (5.4.214-1.el7.elrepo.x86_64) 7 (Core)
 
#重启系统使内核生效:
$ reboot
 
#启动完成查看内核版本是否更新:
$ uname -r
5.4.188-1.el7.elrepo.x86_64

时间同步

k8s 要求节点中的时间必须精确一致,故这里安装chrony从网络同步时间。(所有机器都要同步到一样)

#安装
$ yum -y install chrony
#修改配置,如果有ACC时钟,以ACC时钟为主
$ vim /etc/chrony.conf
server ntp.aliyun.com iburst
server ntp.tencent.com iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
 
#启动和配置自启动
$ systemctl enable chronyd
$ systemctl start chronyd

k8s集群安装

其中sealos是一个k8s的部署工具。

#下载并安装sealos, sealos是个golang的二进制工具,直接下载拷贝到bin目录即可, release页面也可下载
$ wget -c https://sealyun-home.oss-cn-beijing.aliyuncs.com/sealos/latest/sealos
$ chmod +x sealos 
$ mv sealos /usr/bin
 
#下载离线资源包,将下载的kube1.22.8.tar.gz放到本地
https://download.csdn.net/download/lu_linux/86798774

#安装一个单master的kubernetes集群
$ sealos init --passwd 123456 --master 10.10.1.60 --node 10.10.1.61 --pkg-url kube1.22.8.tar.gz --version v1.22.8
#或者
$ sealos init --master 10.10.1.60 --node 10.10.1.61 --pkg-url kube1.22.8.tar.gz --pk /root/sealos/id_rsa-ansible --version v1.22.8 #加了秘钥就不需要--passwd 密码123456

# 安装一个三master的kubernetes集群
$ sealos init --passwd '123456' \
--master 10.10.1.44 --master 10.10.1.45 --master 10.10.1.46 \
--node 10.10.1.40 --node=10.10.1.42 --node=10.10.1.43 \
--pkg-url /root/kube1.22.8.tar.gz \
--version v1.22.8

注意:
由于测试资源限制只有两台设备,这里安装的是单master集群,一个作为master,一个作为worker节点。

安装成功可以看到如下日志:

...
17:53:13 [INFO] [ssh.go:65] [10.10.1.61:22] This node has joined the cluster:
17:53:13 [INFO] [ssh.go:65] [10.10.1.61:22] * Certificate signing request was sent to apiserver and a response was received.
17:53:13 [INFO] [ssh.go:65] [10.10.1.61:22] * The Kubelet was informed of the new secure connection details.
17:53:13 [INFO] [ssh.go:65] [10.10.1.61:22] 
17:53:13 [INFO] [ssh.go:65] [10.10.1.61:22] Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
17:53:13 [INFO] [ssh.go:65] [10.10.1.61:22] 
17:53:13 [INFO] [ssh.go:27] [ssh][10.10.1.61:22] mkdir -p /etc/kubernetes/manifests
17:53:13 [DEBG] [ssh.go:39] [ssh][10.10.1.61:22]command result is: 
17:53:13 [INFO] [scp.go:174] [ssh][10.10.1.61:22]transfer total size is: 0MB
17:53:13 [DEBG] [ssh.go:72] [10.10.1.61:22] rm -rf /root/kube
17:53:14 [DEBG] [print.go:35] ==>SendPackage==>KubeadmConfigInstall==>InstallMaster0==>JoinMasters==>JoinNodes
17:53:14 [INFO] [print.go:39] sealos install success.
17:53:14 [INFO] [init.go:96] 
      ___           ___           ___           ___       ___           ___     
     /\  \         /\  \         /\  \         /\__\     /\  \         /\  \    
    /::\  \       /::\  \       /::\  \       /:/  /    /::\  \       /::\  \   
   /:/\ \  \     /:/\:\  \     /:/\:\  \     /:/  /    /:/\:\  \     /:/\ \  \  
  _\:\~\ \  \   /::\~\:\  \   /::\~\:\  \   /:/  /    /:/  \:\  \   _\:\~\ \  \ 
 /\ \:\ \ \__\ /:/\:\ \:\__\ /:/\:\ \:\__\ /:/__/    /:/__/ \:\__\ /\ \:\ \ \__\
 \:\ \:\ \/__/ \:\~\:\ \/__/ \/__\:\/:/  / \:\  \    \:\  \ /:/  / \:\ \:\ \/__/
  \:\ \:\__\    \:\ \:\__\        \::/  /   \:\  \    \:\  /:/  /   \:\ \:\__\  
   \:\/:/  /     \:\ \/__/        /:/  /     \:\  \    \:\/:/  /     \:\/:/  /  
    \::/  /       \:\__\         /:/  /       \:\__\    \::/  /       \::/  /   
     \/__/         \/__/         \/__/         \/__/     \/__/         \/__/  

                  官方文档:sealyun.com
                  项目地址:github.com/fanux/sealos
                  QQ群   :98488045
                  常见问题:sealyun.com/faq

在master运行“kubectl get nodes”可以看到集群节点。

$ kubectl get  nodes
NAME                    STATUS   ROLES                  AGE    VERSION
master1.dev   Ready    control-plane,master   107s   v1.22.8
work1.dev     Ready    <none>                 79s    v1.22.8

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐