
k8s环境初始化
安装docker
添加阿里云apt源
你需要创建一个新的 APT 源文件并添加 Kubernetes 的阿里云镜像源。
sudo tee /etc/apt/sources.list.d/kubernetes.list > /dev/null << EOF
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF然后,添加阿里云的 GPG key:
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -更新包列表:
sudo apt update安装 kubeadm、kubelet、kubectl
sudo apt install -y kubelet=1.23.6-00 kubeadm=1.23.6-00 kubectl=1.23.6-00
sudo systemctl enable kubelet配置关闭 Docker 的 cgroups,编辑 /etc/docker/daemon.json,加入以下内容,没有就新建
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json > /dev/null << EOF
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF重载并重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker部署 Kubernetes Master
master节点执行
kubeadm init \
--apiserver-advertise-address=192.168.xxx.xxx \ #ip更换成master节点ip
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.6 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16成功会返回以下提示
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/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.xxx.xxx:6443 --token qdieat.drsjqxwi84o00atq \
--discovery-token-ca-cert-hash sha256:f5bf4cecc321d9fb225de9e7760df2f03ea798826aa29c4df6e47a614a6e3457
根据提示依次执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config各个node执行
kubeadm join 192.168.xxx.xxx:6443 --token qdieat.drsjqxwi84o00atq \
--discovery-token-ca-cert-hash sha256:f5bf4cecc321d9fb225de9e7760df2f03ea798826aa29c4df6e47a614a6e3457 查看kubelet 日志
journalctl -u kubelet -f重新生成join——token
kubeadm token create --print-join-command
配置cni网络插件-calico
在 master 节点上执行
下载 calico 配置文件,可能会网络超时
curl https://calico-v3-25.netlify.app/archive/v3.25/manifests/calico.yaml -O
修改 calico.yaml 文件中的 CALICO_IPV4POOL_CIDR 配置,修改为与初始化的 cidr 相同

修改 IP_AUTODETECTION_METHOD 下的网卡名称

tips:calico.yaml中IP_AUTODETECTION_METHOD的配置坑点。
- 不配置指定端口会自动默认获取ip,可能存在获取错误。如果master和所有节点都是同一个类型服务器,可以配置具体网卡,否则不建议。
- 配置具体网卡后,只会获取具体网卡的ip ,如果节点存在不同类型/idc/,会存在网口名称不一致的情况,获取不到ip,导致链接不上。
- 如果存在多网卡,例如ens3,ens4,但是ens4显示的是内网地址时,calico—pod会存在不就绪的情况,需禁用后正常。
禁用命令参考:sudo ip link set ens4 down
- 如果存在多网卡,例如ens3,ens4,但是ens4显示的是内网地址时,calico—pod会存在不就绪的情况,需禁用后正常。
错误日志:
readiness probe failed: calico/node is not ready: bird is not ready: error querying bird: unable to connect to birdv4 socket: dial unix /var/run/bird/bird.ctl: connect: no such file or directory
删除镜像 docker.io/ 前缀,避免下载过慢导致失败
sed -i 's#docker.io/##g' calico.yaml