k8s部署问题
一、初始化问题
前几年做项目的时候搭过没问题,现在想在虚拟机里弄起来复习下,结果初始化的时候跑到这就卡

先ls -la /etc/kubernetes/manifests/看了下

再sudo journalctl -u kubelet --since "5 minutes ago" | grep -E "(static|pod|manifest)"看下日志

大概是kubelet拉镜像,结果每次都超时失败
我记得设置了镜像,但是可能containerd没用这个配置,要修改 /etc/containerd/config.toml,把sandbox_image改为阿里云镜像源
sudo sed -i 's|sandbox_image = "registry.k8s.io/pause:3.9"|sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"|g' /etc/containerd/config.toml
重启下containerd sudo systemctl restart containerd
确认下是否生效sudo grep sandbox_image /etc/containerd/config.toml
如下图就行

之前失败太多次了,每次都要reset并且手动删些文件,干脆写成shell脚本,然后chmod +x initkube.sh。每次重来就./initkube.sh运行
点击查看代码
#!/bin/bash
sudo kubeadm reset -f
echo "OK"
sudo rm -rf /etc/kubernetes/
echo "OK"
sudo rm -rf /var/lib/kubelet/
echo "OK"
sudo kubeadm init --config kubeadm-config.yaml --v=5
echo "OK"

终于行了

二、加入集群问题
node1如下图报错kubelet

大概API Server 没有启动
sudo systemctl status kubelet查下状态,不正常

查日志sudo journalctl -xeu kubelet --since "5 minutes ago" --no-pager | grep -E "(error|failed|unable|fatal|invalid|refused|timeout)" -i
kubelet 无法找到 /etc/kubernetes/bootstrap-kubelet.conf

……回去看了下master,节点没就绪

journalctl -u kubelet -f --since "5 minutes ago" | grep -E "(error|failed|unable)" -i看kubelet日志

看master的podkubectl get pods -A

master 节点没有 CNI 网络插件,kubelet无法初始化网络,所以节点状态一直是 NotReady。
搞个flannel
wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
sed -i 's|docker.io/flannel/|registry.aliyuncs.com/google_containers/|g' kube-flannel.yml
kubectl apply -f kube-flannel.yml
看下状态kubectl get pods -n kube-system | grep flannel
看STATUS应该是在慢慢拉镜像,需要等一段时间

最后在node上执行kubeadm join 192.168.0.102:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:8b3972bf2b5348848d8566c7890fc797d101be9e023f36209c34496850c0781d
三、etcd不监听masterIP自己一直销毁重启
试了下sudo ss -tlnp | grep 2379没在监听,但是sudo vim /etc/kubernetes/manifests/etcd.yaml进去,--listen-client-urls和--advertise-client-urls都写明了是指向masterIP的

sudo crictl --runtime-endpoint unix:///var/run/containerd/containerd.sock ps -a | grep etcd看下有没有在运行
*可以sudo crictl --runtime-endpoint unix:///var/run/containerd/containerd.sock inspect <容器ID> | grep -A 10 -E "(exitCode|Error|message)"查查日志
一般配置没问题就是资源问题了,之前碰到过,排查出来是硬盘太小了……

浙公网安备 33010602011771号