云原生入门之K8S主节点部署问题处理
1、使用kubeadm init进行主节点初始化时,无法找到镜像的解决办法:-image-repository=registry.aliyuncs.com/google_containers2、关于docker和kubelet的cgroupfs不一致的解决方案:修改docker配置文件:【修改或创建/etc/docker/daemon.json,加入下面的内容:】{"exec-opts": ["n
1、使用kubeadm init进行主节点初始化时,无法找到镜像的解决办法:
-image-repository=registry.aliyuncs.com/google_containers
2、关于docker和kubelet的cgroupfs不一致的解决方案:
修改docker配置文件:【修改或创建/etc/docker/daemon.json,加入下面的内容:】
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
重启docker和kubelet服务
服务没有启动成功的效果图:
成功启动效果图:
非master节点kubelet服务不启动。
在主节点初始化后,需要复制如下命令,这些命令是控制面板中的命令:
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:
kubeadm join cluster-endpoint:6443 --token r14a8k.1weleptpyrp24bu7 \
--discovery-token-ca-cert-hash sha256:0ea27450e0b7e4e622781a00021cb261303a0899e8383af8a87251d33e74c1ca \
--control-plane
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join cluster-endpoint:6443 --token r14a8k.1weleptpyrp24bu7 \
--discovery-token-ca-cert-hash sha256:0ea27450e0b7e4e622781a00021cb261303a0899e8383af8a87251d33e74c1ca
当出现了以上命令的时候,我们 可以在上述命令中找到如下配置,然后在/bin/bash环境中输入并运行。
我们运行完之后,我们可以通过kubectl get node 来查看当前kubenetes下的节点信息。
我们可以看到当前的节点状态为NotReady,所以我们需要在当前基础上部署一个网络插件,通过部署网络插件来让节点的状态变化。
对于网络插件的部署方式,我们可以通过kubeadm init的时候出现的结果来进行查找。
我们打开这个链接。可以看到如下组件信息。
这里我们选择Calico这个组件进行搭建。
首先我们使用curl命令下载Calico的组件。
然后使用kubectl对下载下来的组件进行配置。
curl https://docs.projectcalico.org/manifests/calico.yaml -O
kubectl apply -f calico.yaml
随后我们应用这个配置文件,
出现如上显示后,我们可以看到我们的主节点已经成功运行了。
随后我们在master节点下输入如下命令,查看是否存在容器(pod)
同时我们也可以使用kubectl get pods -A来查看当前master节点所运行的PODS容器
需要注意的是,我们需要知道kubectl get pods -A 命令的执行结果和docker ps的结果是相同的,相同的组件在docker中被称为容器,而在kubernetes中被称为pods。
顺便贴一下部署命令:
sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.23.4
kube-proxy:v1.23.4
kube-controller-manager:v1.23.4
kube-scheduler:v1.23.4
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull nginx
done
EOF
chmod +x ./images.sh && ./images.sh
kubeadm init \
--apiserver-advertise-address=10.211.55.15 \
--control-plane-endpoint=cluster-endpoint \
--image-repository=registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.4 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=192.168.0.0/16
#国内要用registry.aliyuncs.com/google_containers 阿里云的镜像地址
更多推荐
所有评论(0)