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后,其他节点状态也会转为就绪。