centos

centos上k8s应用部署策略

小樊
39
2025-07-25 02:14:56
栏目: 智能运维

在CentOS上部署Kubernetes(k8s)应用时,需要考虑多个方面以确保部署的成功和高效性。以下是一个详细的部署策略,包括环境准备、安装Kubernetes组件、网络配置、存储解决方案、安全性配置、监控和日志、备份和恢复、自动化部署以及最佳实践。

环境准备

  1. 关闭防火墙

    sudo systemctl stop firewalld
    sudo systemctl disable firewalld
    
  2. 关闭SELinux

    sudo setenforce 0
    sudo sed -i 's/enforcing/disabled/' /etc/selinux/config
    
  3. 关闭Swap分区

    sudo swapoff -a
    sudo sed -i 's/.*swap.//' /etc/fstab
    
  4. 设置主机名和hosts文件

    sudo hostnamectl set-hostname <hostname>
    echo "<IP> <hostname>" >> /etc/hosts
    
  5. 配置静态IP

    编辑 /etc/sysconfig/network-scripts/ifcfg-<interface> 文件,设置 BOOTPROTO=static 并配置 IPADDRNETMASKGATEWAY 等。

  6. 修改内核参数

    编辑 /etc/sysctl.d/k8s.conf 文件,设置以下参数:

    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    net.ipv4.ip_forward = 1
    

    使配置生效:

    sudo sysctl -p /etc/sysctl.d/k8s.conf
    
  7. 时间同步

    安装并配置NTP服务:

    sudo yum install -y ntpdate
    sudo ntpdate time.windows.com
    

安装Docker

  1. 添加Docker国内镜像源

    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  2. 安装Docker CE

    sudo yum install -y docker-ce docker-ce-cli containerd.io
    
  3. 启动Docker服务并设置开机启动

    sudo systemctl start docker
    sudo systemctl enable docker
    

安装Kubernetes核心组件

  1. 添加Kubernetes软件仓库

    创建 /etc/yum.repos.d/kubernetes.repo 文件,内容如下:

    [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
    exclude=kube*
    
  2. 安装kubelet、kubeadm和kubectl

    sudo yum install -y kubelet kubeadm kubectl
    
  3. 配置kubectl

    创建 ~/.kube 目录并复制认证文件:

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    

初始化Master节点

在Master节点上运行:

kubeadm init --apiserver-advertise-address <master-ip> --image-repository registry.aliyuncs.com/google_containers --kubernetes-version <version> --service-cidr <service-cidr> --pod-network-cidr <pod-network-cidr>

初始化完成后,会输出一条join命令,用于将其他节点加入集群。

将Worker节点加入集群

在各个工作节点上执行从Master获取到的join命令。

部署CNI网络插件

在Master节点上运行:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

验证部署

在Master节点上执行:

kubectl get nodes
kubectl get pods --all-namespaces

部署策略

  1. 滚动更新

    创建Deployment资源并定义应用程序的期望状态。更新Deployment的镜像版本,检查更新过程,确保新版本的Pod正常运行。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 3
      strategy:
        type: RollingUpdate
        rollingUpdate:
          maxSurge: 20%
          maxUnavailable: 1
          minReadySeconds: 5
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:latest
            ports:
            - containerPort: 80
    
  2. 回滚更新

    查看Deployment的历史版本:

    kubectl rollout history deployment/nginx-deployment
    

    回滚到指定版本:

    kubectl rollout undo deployment/nginx-deployment --to-revision <revision-number>
    

以上是在CentOS上部署Kubernetes应用的基本策略和步骤,具体的配置可能会因不同的业务需求和环境而有所不同。建议在实施之前详细规划,并参考Kubernetes官方文档和最佳实践。

0
看了该问题的人还看了