# 关闭防火墙
[root@master ~]# sed -i 's#enable#disable#g' /etc/selinux/config
[root@master ~]# systemctl disable --now firewalld
# 添加网桥过滤及内核转发配置文件
[root@master ~]# cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness = 0
EOF
# 加载 br_netfilter 模块
[root@master ~]# modprobe -- br_netfilter
# 查看是否加载
[root@master ~]# lsmod |grep br_netfilter
br_netfilter 24576 0
bridge 196608 1 br_netfilter
# 安装 ipset 和 ipvsadm
[root@master ~]# yum install -y ipset ipvsadm
# 配置 ipvsadm 模块加载方式
[root@master ~]# cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
# 授权、运行、检查是否加载
[root@master ~]# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod |grep -e ip_vs -e nf_conntrack
# 关闭 swap 分区
[root@master ~]# swapoff -a
#注释 swap 行
[root@master ~]# tail -1 /etc/fstab
#UUID=6c82e0bb-02fe-4992-9a4c-bbba48766a95 none
#查看 swap 是否关闭
[root@master ~]# free -h
# 安装 docker
[root@master ~]# wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.9.tgz
[root@master ~]# tar xf docker-20.10.9.tgz
[root@master ~]# cp docker/* /usr/bin/
# docker启停脚本
[root@master ~]# cat > /usr/lib/systemd/system/docker.service <<EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF
# 修改 docker cgroup 为 systemd
[root@master ~]# mkdir -p /etc/docker
[root@master ~]# cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
# 启动
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl enable --now docker
# 配置阿里源
[root@master ~]# cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
# 安装 kubeadm kubectl kubelet
[root@master ~]#yum install -y kubeadm-1.23.17-0 kubectl-1.23.17-0 kubelet-1.23.17-0
# 查看有什么版本的可以安装
[root@master ~]# kubeadm config images list --kubernetes-version=1.23.17 --image-repository registry.aliyuncs.com/google_containers
# 拉取镜像
[root@master ~]# kubeadm config images pull --kubernetes-version=1.23.17 --image-repository registry.aliyuncs.com/google_containers
# 初始化
[root@master ~]# kubeadm init --kubernetes-version=v1.23.17 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.100.0.0/16 --service-cidr=10.200.0.0/16 --service-dns-domain=oldboyedu.com
Coredns 一直处于pending状态解决方法
问题原因:
这是包冲突问题。
系统已安装 containernetworking-plugins-0.8.6,它与 kubernetes-cni 冲突。
containernetworking-plugins — 银河麒麟系统自带的 CNI 插件包
kubernetes-cni — Kubernetes 官方提供的 CNI 包
kubelet-1.18.4 明确要求使用 kubernetes-cni,与系统自带包冲突
解决方法: 指定版本 + 强制替换
所有节点要要执行
yum install -y kubernetes-cni-1.1.1-0 --nogpgcheck --allowerasing
systemctl restart kubelet