1. 配置系统环境
在所有节点上执行以下配置步骤:
-
禁用 SELinux:
setenforce 0 sed -i --follow-symlinks 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
-
关闭防火墙:
systemctl disable firewalld systemctl stop firewalld
-
禁用交换分区:
swapoff -a sed -i '/swap/d' /etc/fstab
-
加载内核模块:
cat <<EOF | tee /etc/modules-load.d/k8s.conf br_netfilter EOF modprobe br_netfilter
-
添加hosts文件
10.0.0.22 master1 10.0.0.23 node01 10.0.0.24 node02 10.0.0.25 node03
-
配置内核参数:
cat <<EOF | tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system
2. 安装 Docker
-
安装 Docker 的依赖项:
yum install -y yum-utils device-mapper-persistent-data lvm2
-
添加 Docker 仓库并安装:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce-18.06.3.ce
-
启动 Docker:
systemctl enable docker systemctl start docker
3. 安装 Kubernetes 组件
-
添加 Kubernetes 仓库:
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo [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
-
安装指定版本的 Kubernetes:
yum install -y kubelet-1.17.5 kubeadm-1.17.5 kubectl-1.17.5
-
启动并启用 kubelet:
systemctl enable --now kubelet systemctl status kubelet
4. 初始化 Master 节点
在 Master 节点上执行以下步骤:
-
初始化 Kubernetes Master:
kubeadm init --kubernetes-version=v1.17.5 --pod-network-cidr 10.244.0.0/16 --service-cidr 10.96.0.0/12 --image-repository registry.aliyuncs.com/google_containers --token-ttl=0
初始化完成后,终端会输出加入 Worker 节点的命令(
kubeadm join
),请复制保存下来供后续使用。 -
配置 kubectl 命令的访问:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
-
安装网络插件(以 Flannel 为例):
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
5. 添加 Worker 节点到集群
在每个 Worker 节点上执行以下步骤:
-
使用
kubeadm join
命令将节点加入集群,格式如下:kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
kubeadm join 10.0.0.22:6443 --token sypjbh.2nkvwba0zac6sg73 \--discovery-token-ca-cert-hash sha256:90cb0f6f5d2b1d014ed4a1ac3497c14dfbddf4ccee48553e4280d6d5b48cc715
将
<master-ip>
,<token>
和<hash>
替换为初始化 Master 节点时生成的具体值。 -
加入成功后,可以在 Master 节点上使用以下命令查看节点状态:
kubectl get nodes
6. 验证集群状态
-
验证节点是否加入集群:
在 Master 节点上,查看所有节点的状态:
kubectl get nodes
所有节点应显示
Ready
状态。 -
查看 Pods 状态:
kubectl get pods --all-namespaces
所有系统 Pods 都应该运行正常,表明 Kubernetes 集群部署成功。