首页主机资讯k8s应用如何在centos上高效部署

k8s应用如何在centos上高效部署

时间2025-10-30 22:49:03发布访客分类主机资讯浏览994
导读:一、环境准备:系统配置与依赖安装 在CentOS上部署Kubernetes前,需完成基础环境配置,确保系统符合Kubernetes的要求: 系统要求:使用CentOS 7.9及以上版本(推荐CentOS Stream 8/9),每节点至少...

一、环境准备:系统配置与依赖安装
在CentOS上部署Kubernetes前,需完成基础环境配置,确保系统符合Kubernetes的要求:

  • 系统要求:使用CentOS 7.9及以上版本(推荐CentOS Stream 8/9),每节点至少2核CPU、2GB内存、20GB存储空间。
  • 关闭不必要的服务
    systemctl stop firewalld &
        &
         systemctl disable firewalld  # 关闭防火墙
    setenforce 0 &
        &
         sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config  # 禁用SELinux
    swapoff -a &
        &
         sed -i '/swap/s/^/#/' /etc/fstab  # 关闭交换分区(Kubernetes要求)
    
  • 配置内核参数:创建/etc/sysctl.d/k8s.conf文件,添加以下内容并应用:
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1
    sysctl --system
    
  • 安装必要工具:安装conntrackipvsadmjq等Kubernetes依赖工具:
    yum install -y conntrack ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git
    

二、容器运行时安装:选择高效运行时
Kubernetes推荐使用containerd作为容器运行时(性能优于Docker,且原生支持Kubernetes):

  • 配置containerd模块:创建/etc/modules-load.d/containerd.conf文件,加载必要内核模块:
    echo -e "overlay\nbr_netfilter" >
         /etc/modules-load.d/containerd.conf
    modprobe overlay &
        &
         modprobe br_netfilter  # 立即加载模块
    
  • 安装与配置containerd
    yum install -y containerd.io
    systemctl enable --now containerd
    
  • 优化containerd配置(可选):编辑/etc/containerd/config.toml,启用cgroups v2(CentOS 8+默认使用)和镜像加速:
    ctr config dump >
         /etc/containerd/config.toml  # 生成默认配置
    sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml  # 启用cgroups v2
    systemctl restart containerd
    

三、Kubernetes组件安装:使用kubeadm快速部署
kubeadm是Kubernetes官方推荐的集群部署工具,可简化Master节点和Worker节点的初始化流程:

  • 添加Kubernetes软件源:创建/etc/yum.repos.d/kubernetes.repo文件,配置官方镜像源:
    cat <
        <
        EOF >
         /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
    EOF
    
  • 安装kubeadm、kubelet、kubectl
    yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
    systemctl enable --now kubelet
    

四、集群初始化:Master节点部署

  • 初始化Master节点:使用kubeadm init命令初始化集群,指定Pod网络CIDR(需与后续网络插件兼容,如Flannel的10.244.0.0/16):
    kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=<
        Master_IP>
        
    
    初始化完成后,记录输出的kubeadm join命令(用于Worker节点加入)。
  • 配置kubectl:将Admin配置文件复制到用户目录,赋予正确权限:
    mkdir -p $HOME/.kube
    cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    chown $(id -u):$(id -g) $HOME/.kube/config
    

五、网络插件安装:实现Pod间通信
Kubernetes需要网络插件实现Pod跨节点通信,推荐使用轻量级的Flannel

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

等待网络插件部署完成(可通过kubectl get pods -n kube-system查看Pod状态,需全部为Running)。

六、Worker节点加入:扩展集群规模
在每个Worker节点上执行Master节点初始化时输出的kubeadm join命令,例如:

kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

加入后,Master节点执行kubectl get nodes,若Worker节点状态变为Ready,则说明加入成功。

七、应用部署:高效发布K8s应用

  • 编写高效YAML文件
    • 资源限制:为Pod设置requests(最低资源需求)和limits(最大资源限制),避免资源争抢:
      resources:
        requests:
          memory: "64Mi"
          cpu: "250m"
        limits:
          memory: "128Mi"
          cpu: "500m"
      
    • 轻量级镜像:使用Alpine等基础镜像减小镜像体积(如Nginx Alpine镜像仅几MB):
      FROM alpine:latest
      RUN apk add --no-cache nginx
      CMD ["nginx", "-g", "daemon off;
          "]
      
    • 多阶段构建:进一步减小镜像大小(如Go应用的多阶段构建)。
  • 部署应用:通过kubectl apply命令部署应用(以Nginx为例):
    kubectl apply -f nginx-deployment.yaml  # Deployment定义
    kubectl apply -f nginx-service.yaml     # Service定义(暴露服务)
    
  • 验证部署
    kubectl get pods -w  # 查看Pod状态(需为Running)
    kubectl get svc      # 查看Service状态(若有External IP,可直接访问)
    

八、优化与维护:提升部署效率与稳定性

  • 自动化部署:使用Terraform管理基础设施(创建EC2、VPC等),用Ansible自动化Kubernetes集群部署和应用发布,减少手动操作。
  • 版本控制与回滚:将Kubernetes YAML文件存入Git仓库(如GitHub),使用kubectl rollout undo命令快速回滚到上一版本(如kubectl rollout undo deployment/nginx-deployment)。
  • 监控与日志:部署Prometheus+Grafana监控集群状态(CPU、内存、Pod状态),使用ELK Stack(Elasticsearch+Logstash+Kibana)收集和分析应用日志,及时发现和解决问题。
  • 定期更新:定期更新Kubernetes组件(yum update kubelet kubeadm kubectl)和容器镜像(拉取最新版本),修复安全漏洞并提升性能。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: k8s应用如何在centos上高效部署
本文地址: https://pptw.com/jishu/739379.html
centos环境下k8s安全策略有哪些 centos部署k8s日志管理

游客 回复需填写必要信息