# 关闭防火墙
[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状态解决方法

Coredns 排错:

问题原因:
这是包冲突问题。
系统已安装 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