定制CentOS上的K8s集群需围绕基础环境配置、组件安装、网络存储、安全管控及扩展功能五大核心环节展开,以下是详细步骤及关键注意事项:
定制集群的第一步是确保所有节点(Master/Worker)满足K8s的运行要求,避免后续问题:
firewalld配置规则而非完全关闭):systemctl stop firewalld && systemctl disable firewalld;permissive模式):setenforce 0并修改/etc/selinux/config中的SELINUX=disabled;swapoff -a并注释/etc/fstab中的swap行;/etc/sysconfig/network-scripts/ifcfg-eth0(网卡名以实际为准),设置BOOTPROTO=static并添加IPADDR、NETMASK、GATEWAY、DNS1等参数;hostnamectl set-hostname <节点名称>设置主机名,在所有节点的/etc/hosts中添加节点IP与主机名的映射(如192.168.1.100 k8s-master)。ssh-keygen和ssh-copy-id配置),且网络延迟低于100ms。K8s依赖容器运行时管理容器,推荐使用Docker(社区最成熟的选择):
tee /etc/yum.repos.d/docker.repo <<EOF[docker-ce]name=Docker CEbaseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce/stablegpgcheck=1enabled=1gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpgEOF;yum install -y docker-ce docker-ce-cli containerd.io;/etc/docker/daemon.json,添加{"registry-mirrors": ["https://<your-mirror>.mirror.aliyuncs.com"]};systemctl enable docker && systemctl start docker。通过kubeadm(K8s官方集群部署工具)安装kubelet、kubeadm、kubectl:
/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
yum install -y kubelet kubeadm kubectl;systemctl enable kubelet && systemctl start kubelet(kubelet会在初始化Master时自动启动)。Master节点是集群的控制中心,负责调度、API管理等核心功能:
kubeadm init并指定关键参数(根据实际环境调整):kubeadm init \
--apiserver-advertise-address=<Master-IP> \ # Master节点IP
--image-repository registry.aliyun.com/google_containers \ # 国内镜像加速
--kubernetes-version v1.28.2 \ # 指定K8s版本(需与组件版本兼容)
--service-cidr 10.96.0.0/12 \ # Service虚拟IP段
--pod-network-cidr 10.244.0.0/16 # Pod网络IP段(需与网络插件匹配)
/etc/kubernetes/admin.conf复制到用户目录下的.kube文件夹,并设置权限:mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes,此时Master节点会显示为NotReady(需安装网络插件后变为Ready)。网络插件是Pod间通信的核心,常见选择包括:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml;kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml。kubectl get nodes,Master节点应变为Ready状态。Worker节点负责运行Pod,通过kubeadm join命令将节点加入集群:
kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Ready(可通过Master节点的kubectl get nodes验证)。根据业务需求,可进一步优化集群:
PersistentVolume(PV)和PersistentVolumeClaim(PVC);以上步骤覆盖了CentOS上K8s集群定制的核心流程,实际部署时需根据业务场景调整参数(如节点数量、网络插件、存储方案等),并参考Kubernetes官方文档确保兼容性。