Kubernetes安装(Sealos)

1. 在联网服务器拉取镜像并打包

  1. 访问Sealos源码下载二进制包,复制到联网服务器。
  2. 使用tar xvf sealos_5.1.1_linux_amd64.tar.gz sealos解压,使用mv sealos /usr/local/bin/放到全局工具目录,使用sealos version验证生效。
  3. 访问Registry Explore网站确定registry.cn-shanghai.aliyuncs.com/labring/kubernetesregistry.cn-shanghai.aliyuncs.com/labring/helmregistry.cn-shanghai.aliyuncs.com/labring/cilium的版本。
  4. 使用如下命令拉取远程镜像到本地(使用sealos images查看本地镜像):
    1
    2
    3
    sealos pull registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.31.11
    sealos pull registry.cn-shanghai.aliyuncs.com/labring/helm:3.19.2
    sealos pull registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.14.19
    
  5. 使用如下命令将本地镜像打包(仅归档不压缩):
    1
    2
    3
    sealos save -o kubernetes-v1.31.11.tar registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.31.11
    sealos save -o helm-v1.19.2.tar registry.cn-shanghai.aliyuncs.com/labring/helm:v3.19.2
    sealos save -o cilium-v1.14.19.tar registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.14.19
    
  6. 将镜像包复制到离线服务器(master节点),所有离线服务器使用相同密码。

2. 在离线服务器装载镜像并安装

  1. 在离线服务器(master节点)部署Sealos
  2. 使用如下命令将镜像包装载为本地镜像(使用sealos images查看本地镜像):
    1
    2
    3
    sealos load -i kubernetes-v1.31.11.tar
    sealos load -i helm-v1.19.2.tar
    sealos load -i cilium-v1.14.19.tar
    
  3. 使用sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.31.11 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.19.2 registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.14.19 --masters 10.10.10.20 --nodes 10.10.10.21,10.10.10.22 -p L+ah204313805安装Kubernetes
  4. 安装完成后使用kubectl get node -o wide查看节点状态,使用kubectl get pod -A -o wide查看容器组状态(如果coredns没启动,有可能是/etc/resolv.conf为空导致coredns获取不到上游DNS信息)。
  5. 使用cat .kube/config获取集群信息(如果server后边的信息不对需要先修改),在图形化界面导入即可管理集群。
  6. 使用kubeadm certs check-expiration命令查看证书过期时间,会发现super-admin.conf的有限期只有一年,到期后可以使用如下脚本自动续期:

vi /usr/local/bin/renew-k8s-certs.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash
LOG_FILE="/var/log/k8s-cert-renew.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')

echo "[$DATE] 开始检查并续期证书..." >> $LOG_FILE

# 续期所有证书
kubeadm certs renew all >> $LOG_FILE 2>&1

# 重启控制平面组件(关键步骤)
for component in kube-apiserver kube-controller-manager kube-scheduler etcd; do
  if [ -f "/etc/kubernetes/manifests/$component.yaml" ]; then
    # 临时移走 manifest 文件,触发 Pod 重启
    mv /etc/kubernetes/manifests/$component.yaml /tmp/
    sleep 20
    mv /tmp/$component.yaml /etc/kubernetes/manifests/
  fi
done

# 重启 kubelet
systemctl restart kubelet

# 更新当前用户的 kubeconfig
cp /etc/kubernetes/admin.conf /root/.kube/config

echo "[$DATE] 证书续期完成" >> $LOG_FILE

chmod +x /usr/local/bin/renew-k8s-certs.sh
crontab -e

1
0 3 1 */2 * /usr/local/bin/renew-k8s-certs.sh