debian12安装部署Kubernetes 1.23.9


Date:2025-02-04

1、安装必要软件包

apt install -y apt-transport-https ca-certificates curl gnupg2 net-tools

2、启用必要内核模块

tee /etc/modules-load.d/k8s.conf <<EOF
overlay
br_netfilter
EOF

#执行命令
modprobe overlay ; modprobe br_netfilter

#编辑网络配置
tee /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

#重载配置
sysctl --system

3、

# 获取docker GPG key。
install -m 0755 -d /etc/apt/keyrings ; curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg -o /etc/apt/keyrings/docker.asc ; chmod a+r /etc/apt/keyrings/docker.asc

# 配置容器镜像源
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.ustc.edu.cn/docker-ce/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  tee /etc/apt/sources.list.d/docker.list > /dev/null

# 更新源
apt update

4、

#安装docker
apt install -y docker-ce docker-ce-cli docker-buildx-plugin docker-compose-plugin

#创建必要目录
mkdir -p /etc/systemd/system/docker.service.d

#创建daemon.json文件
tee /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://064dea410b0010980fe4c01b16006ac0.mirror.swr.myhuaweicloud.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

#重启docker
systemctl restart docker

5、配置kubernetes旧版源

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 

cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

apt update

apt install -y kubelet=1.23.9-00 kubeadm=1.23.9-00 kubectl=1.23.9-00  #1.23.9版本为最后一个原生支持docker的版本。

apt-mark hold kubelet kubeadm kubectl

6、配置所有主机Hosts

vim /etc/hosts

填写所有主机正确的hosts指向。

7、

#生成kubeadm初始化配置文件,并修改配置文件,重点为带注释部分。(主节点执行)
kubeadm config print init-defaults > kubeadm_init.yaml

配置文件内容如下:

====================Config file content Start====================
apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 1.2.3.4
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  imagePullPolicy: IfNotPresent
  name: node
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers  #镜像仓库地址,使用阿里云的镜像仓库,可以有效提高下载速度。
kind: ClusterConfiguration
kubernetesVersion: 1.23.0
networking:
  dnsDomain: ksm.lab  #DNS域名。
  serviceSubnet: 10.96.0.0/16  #服务子网,切记不可与实际生产网络冲突。
  podSubnet: 10.97.0.0/16  #容器子网,切记不可与实际生产网络冲突。
scheduler: {}
====================Config file content End====================

8、

#使用配置文件初始化集群
kubeadm init --config kubeadm_init.yaml --v=5

9、node节点加入,执行初始化后系统给出的提示命令。

如果只用root用户管理kubernetes集群,请执行如下命令:

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

source ~/.bash_profile

10、查看所有节点是否已经加入

kubectl get nodes

11、安装网络插件(只在Master节点执行)

wget https://docs.projectcalico.org/manifests/calico.yaml

vim calico.yaml
查找内容“CALICO_IPV4POOL_CIDR”,将注释取消。并将值修改为初始化文件中podSubnet的值。

12、开始部署网络插件

kubectl apply -f calico.yaml

查看Pod状态
kubectl get pods -n kube-system

等Calico Pod都Running后,其他节点状态也会转为就绪。