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 阿里云的镜像地址
Logo

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

更多推荐