温馨提示×

centos上k8s应用部署策略

小樊
45
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