k8s

k8s环境初始化

安装docker

k8s系列-docker安装2-ubuntu - 正乐の窝

添加阿里云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

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的配置坑点。
    1. 不配置指定端口会自动默认获取ip,可能存在获取错误。如果master和所有节点都是同一个类型服务器,可以配置具体网卡,否则不建议。
    1. 配置具体网卡后,只会获取具体网卡的ip ,如果节点存在不同类型/idc/,会存在网口名称不一致的情况,获取不到ip,导致链接不上。
    1. 如果存在多网卡,例如ens3,ens4,但是ens4显示的是内网地址时,calico—pod会存在不就绪的情况,需禁用后正常。
      禁用命令参考:sudo ip link set ens4 down
错误日志:
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


最后修改:2025 年 12 月 09 日
如果觉得我的文章对你有用,请随意赞赏