导出相关binary制作k8s本地包,并使用本地包的方式安装启动
关闭交换区:
sudo swapoff -a
sudo swapon --show
sudo vi /etc/fstab, 注释掉/swap行
这次把我之前安装的k8s的包导出来保存。
cd /var/cache/apt/ ls kube* cd ~ && mkdir k8sdbinstall sudo cp *_1.23.17* kubernetes-cni, cri-tools ~/k8sdbinstall
接下来保存相关的docker镜像, 使用docker save -o export.tar imageId/imageName:tagName保存多个镜像,
导出全部镜像,需要切换到su执行 #!/bin/bash docker save $(docker images --format '{{.Repository}}:{{.Tag}}') -o allinone.tar 导入所有镜像 docker load -i allinone.tar
此时打开allinone.tar使用tar -xvf allinone.tar, 看到所有镜像的排列,里面有repositories文件记录每个id对应的镜像名称
全新安装:
打开一台新的vm, 上面没有安装任何东西
sudo vi /etc/hostname, 更改机名, 安装vim和ssh server以便其他机能scp给它, sudo apt install -y openssh-server
将docker20.10也放在一起:
这样打包起来
回到空机,先安装docker: sudo apt install -y docker.io
拷贝:
关闭ufw,sudo systemctl stop ufw.service:
在空机上恢复: docker load -i allinone.tar
dpkg -i *.deb
解决依赖: sudo apt -f install, 会删除不完整的安装,
还需要 cri-tools, 还有kubernetes-cni,这两个包也要放到保存, 按顺序安装 sudo dpkg -i kubernetes-cni, 然后cri-tools, 然后 kubectl, 然后 kubelet, 最后kubeadm
安装完成
此时运行join命令出错,缺少依赖socat,和conntrack,执行sudo apt --fix-broken install,
之后, systemctl unmask kubelet.service, systemctl enable kubelet.service, 上一次token已经过期,这里要重新创建token,在空机上执行,
在主机上查看节点
,至此k8s 采用本地空机binary安装包的形式安装配置完成
在master机上sudo kubectl get svc -A 查看 dashboard地址
https://192.168.170.133:31020
sudo kubectl get secret -A|grep k8sadmin*找到dashboard的token,用于登陆!
所有机器编辑 /etc/fstab的挂载文件系统表文件,重启,再次查看,所有node迅速ready!
为node添加label选择器:
sudo kubectl label node k8s-node-clone1 env=prod
创建deployment:
在spec下添加行:
node-selector:
env: prod