sudo systemctl stop firewalld && sudo systemctl disable firewalld;sudo setenforce 0,并修改配置文件/etc/selinux/config中的SELINUX=disabled;sudo swapoff -a,并注释/etc/fstab中的swap行;k8s-master、k8s-worker1)并通过/etc/hosts文件配置节点间域名解析。Kubernetes依赖Docker作为容器运行时(也可选择containerd,但Docker更常用)。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 net-tools;sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo;sudo yum install -y docker-ce docker-ce-cli containerd.io;sudo systemctl start docker && sudo systemctl enable docker;docker --version(应输出Docker版本信息)。/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
sudo yum install -y kubelet kubeadm kubectl;sudo systemctl enable kubelet && sudo systemctl start kubelet。sudo kubeadm init --apiserver-advertise-address=<Master-IP> \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.22.15 \
  --service-cidr 10.96.0.0/12 \
  --pod-network-cidr 10.244.0.0/16 \
  --ignore-preflight-errors=all
(注:<Master-IP>替换为Master节点的实际IP;--ignore-preflight-errors=all用于忽略部分兼容性问题,生产环境需谨慎使用。)kubeadm join ...),需妥善保存。mkdir -p $HOME/.kube;sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config;sudo chown $(id -u):$(id -g) $HOME/.kube/config;kubectl version --client(应显示客户端版本,且无报错)。Kubernetes需要网络插件实现Pod间通信,常用Flannel(轻量级)或Calico(功能丰富)。
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl get pods -n kube-system(所有Pod应处于Running状态)。sudo kubeadm join 192.168.1.100:6443 \
  --token abcdef.0123456789abcdef \
  --discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
kubectl get nodes(所有节点应显示为Ready);kubectl get pods --all-namespaces(所有Pod应处于Running状态)。方式1:使用YAML文件部署(推荐)
nginx-deployment.yaml:apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3  # 副本数
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest  # 镜像
        ports:
        - containerPort: 80  # 容器端口
nginx-service.yaml(暴露服务):apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80  # Service端口
    targetPort: 80  # Pod端口
  type: NodePort  # 类型(NodePort允许外部访问)
kubectl apply -f nginx-deployment.yaml
kubectl apply -f nginx-service.yaml
方式2:使用kubectl命令快速部署(测试用)
kubectl create deployment nginx --image=nginx --replicas=3
kubectl expose deployment nginx --port=80 --type=NodePort
验证部署:
kubectl get pods(应显示3个Running的Nginx Pod);kubectl get svc(记录nginx-service的NodePort,如30080);http://<Master-IP>:30080(应显示Nginx欢迎页面)。通过以上步骤,即可在CentOS上完成Kubernetes集群的部署,并运行容器化应用。生产环境中还需配置持久化存储(如PV/PVC)、监控(如Prometheus)、日志(如ELK)等功能,以提升集群的可靠性和可维护性。