温馨提示×

centos上k8s如何进行容器编排

小樊
46
2025-08-14 23:26:14
栏目: 智能运维

在CentOS上进行K8s容器编排的核心步骤如下:

1. 环境准备

  • 关闭防火墙与SELinux
    sudo systemctl stop firewalld && sudo systemctl disable firewalld  
    sudo setenforce 0 && sudo sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config  
    
  • 禁用交换分区
    sudo swapoff -a && sudo sed -i '/swap/d' /etc/fstab  
    
  • 配置Docker
    • 安装Docker并设置cgroup-driversystemd
      sudo yum install -y docker-ce docker-ce-cli containerd.io  
      sudo tee /etc/docker/daemon.json <<-'EOF'  
      {  
        "exec-opts": ["native.cgroupdriver=systemd"],  
        "log-driver": "json-file",  
        "log-opts": {"max-size": "100m"}  
      }  
      EOF  
      sudo systemctl restart docker  
      

2. 安装Kubernetes组件

  • 添加K8s源并安装核心组件
    cat <<EOF > /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  
    EOF  
    sudo yum install -y kubelet kubeadm kubectl  
    sudo systemctl enable kubelet  
    

3. 初始化Master节点

  • 执行初始化命令(需指定Pod网络CIDR,如10.244.0.0/16):
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16  
    
  • 配置kubectl
    mkdir -p $HOME/.kube  
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config  
    sudo chown $(id -u):$(id -g) $HOME/.kube/config  
    

4. 部署网络插件

  • 以Flannel为例
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml  
    

5. 添加Worker节点

  • 在Master节点获取Join命令
    kubeadm token create --print-join-command  
    
  • 在Worker节点执行Join命令(需替换为实际Token和Hash):
    sudo kubeadm join <Master-IP>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>  
    

6. 验证集群状态

  • 查看节点状态
    kubectl get nodes  
    
  • 查看Pod状态
    kubectl get pods --all-namespaces  
    

7. 容器编排操作

  • 部署应用(以Nginx为例)
    • 创建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  
      
    • 应用配置:
      kubectl apply -f nginx-deployment.yaml  
      
  • 查看应用状态
    kubectl get deployments  
    kubectl get pods  
    

关键说明

  • 网络插件:除Flannel外,还可选择Calico、Cilium等,需根据实际需求调整。
  • 多Master节点:若需高可用,可在初始化时添加--control-plane-endpoint参数,并重复“添加Master节点”步骤。
  • 版本兼容性:确保Docker与Kubernetes版本匹配,可参考官方文档。

以上步骤参考自,具体操作需根据实际环境调整。

0