部署k8s集群指南
在所有节点上执行以下步骤:
设置主机名:
目的:为了避免主机名解析问题,每个节点都需要具有唯一的主机名。
sudo hostnamectl set-hostname <你的主机名>
说明:这个命令用于设置节点的主机名,确保每个节点都有唯一的标识。
关闭防火墙和 SELinux:
目的:防火墙和 SELinux 可能会阻止 Kubernetes 组件之间的通信,所以禁用它们以确保顺畅的通信。
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
说明:这些命令停止并禁用防火墙服务,关闭 SELinux,并将 SELinux 模式更改为 “permissive”,以允许网络通信。
安装依赖:
安装一些必要的软件包和依赖项,以支持后续的安装。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
说明:这个命令安装了一些常用的软件包和工具,以确保系统能够满足 Kubernetes 安装的要求。
配置 Docker:
目的:安装并启用 Docker,作为容器运行时。
sudo yum install -y docker
sudo systemctl enable docker
sudo systemctl start docker
说明:这些命令用于安装 Docker,并设置它在系统启动时自动启动。
在主节点上执行以下步骤:
安装 kubeadm、kubelet 和 kubectl:
目的:安装 Kubernetes 控制平面组件和命令行工具。
sudo tee /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
sudo yum install -y kubeadm kubelet kubectl
sudo systemctl enable kubelet
说明:这个命令首先设置了一个 YUM 软件仓库用于安装 Kubernetes 组件,然后安装了 kubeadm、kubelet 和 kubectl。
初始化 Master 节点:
目的:初始化主节点,准备 Kubernetes 控制平面。
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
说明:这个命令会初始化主节点,生成一个密钥和一些配置信息,并输出加入节点的命令。–pod-network-cidr 用于指定 Pod 网络的地址范围。
设置 kubectl 配置:
目的:将生成的 kubeconfig 文件复制到用户家目录,以便后续使用 kubectl。
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
说明:这个命令用于配置 kubectl,使其能够连接到 Kubernetes 集群。
在其他节点上执行以下步骤:
加入节点:
目的:将备用节点加入到 Kubernetes 集群中,使其成为工作节点。
# 运行主节点初始化输出的 kubeadm join 命令,格式类似于:
sudo kubeadm join <Master节点的IP>:6443 --token <token> --discovery-token-ca-cert-hash <hash>
说明:这个命令会将备用节点加入到集群中,它会将备用节点的信息注册到主节点上。
在主节点上执行以下步骤:
安装网络插件:
目的:安装网络插件以支持容器之间的网络通信。
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
说明:这个命令安装 Flannel 网络插件,用于支持容器之间的通信。
验证节点是否已加入:
目的:确认备用节点已成功加入集群。
kubectl get nodes
说明:这个命令用于列出集群中的节点,以验证备用节点是否已成功加入。
以上步骤详细说明了在 CentOS 上部署 Kubernetes 集群的过程,以及每个命令的目的和作用。如果你有其他问题或需要更多的指导,请随时提出。