环境准备
系统要求
- 至少 3 台 CentOS 7.x 服务器(1 个 master,2 个 worker)
- 每台服务器 2GB 以上内存,2 核 CPU
- 服务器间网络互通
- 静态 IP 地址配置
关闭防火墙和 SELinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
关闭Swap分区
swapoff -a
sed -i '/ swap /s/^/#/' /etc/fstab
设置主机名和 hosts 文件
# 每台服务器设置唯一主机名
hostnamectl set-hostname <主机名>
# 所有服务器添加hosts记录
cat >> /etc/hosts << EOF
192.168.1.100 master
192.168.1.101 worker1
192.168.1.102 worker2
EOF
配置内核参数
cat > /etc/modules-load.d/k8s.conf << EOF
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
安装容器运行时(Containerd)
添加Docker仓库
国内环境配置阿里的docker仓库
yum install -y yum-utils
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
没有网络限制的可以配置官方的仓库
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装Containerd
yum install -y containerd.io-1.6.6
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
# 修改配置使用systemd cgroup驱动
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
systemctl enable --now containerd
安装Kubernetes组件
添加 Kubernetes 仓库
阿里仓库
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
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
官方仓库
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.24/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.24/rpm/repodata/repomd.xml.key
EOF
安装指定版本的 Kubernetes 组件
yum install -y kubelet-1.24.4 kubeadm-1.24.4 kubectl-1.24.4
systemctl enable --now kubelet
初始化 Master 节点
执行初始化命令
kubeadm init --kubernetes-version=1.24.4 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.1.100 --image-repository registry.aliyuncs.com/google_containers
配置 kubectl
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
安装网络插件(Flannel)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.19.0/Documentation/kube-flannel.yml
加入Worker节点
# 在master节点执行以下命令,得到加入集群的命令
kubeadm token create --print-join-command
# 在worker节点上执行加入的命令
kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890