首页主机资讯CentOS上Kubernetes的容器编排技巧

CentOS上Kubernetes的容器编排技巧

时间2025-11-24 11:54:03发布访客分类主机资讯浏览903
导读:CentOS 上 Kubernetes 容器编排实用技巧 一 环境准备与内核优化 基础要求:建议至少准备3台服务器(1个 Master + 2个 Node),每台至少2 CPU、2GB 内存、30GB 磁盘,并确保节点间网络互通与外网访问...

CentOS 上 Kubernetes 容器编排实用技巧

一 环境准备与内核优化

  • 基础要求:建议至少准备3台服务器(1个 Master + 2个 Node),每台至少2 CPU、2GB 内存、30GB 磁盘,并确保节点间网络互通外网访问(拉取镜像、节点注册)。
  • 系统初始化:
    • 关闭 SELinuxsudo setenforce 0 并修改 /etc/selinux/configSELINUX=disabled
    • 关闭 Swapsudo swapoff -a 并在 /etc/fstab 注释 swap 行。
    • 可选:关闭 firewalld 或按需放行端口(生产环境建议精细放行)。
    • 时间同步:安装并启用 chronyntp,保证节点时间一致。
  • 内核与网络参数:
    • 启用桥接转发:sudo modprobe br_netfilter
    • 开启桥接到 iptables:echo '1' | sudo tee /proc/sys/net/bridge/bridge-nf-call-iptables...ip6tables
    • 开启转发:echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.d/k8s.conf
    • 应用:sudo sysctl --system
  • 容器运行时(推荐 Containerd):
    • 安装:sudo yum install -y yum-utils & & sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo & & sudo yum install -y containerd.io
    • 配置:sudo mkdir -p /etc/containerd & & containerd config default | sudo tee /etc/containerd/config.toml
    • 修改 SystemdCgroup = true 并重启:sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml & & sudo systemctl enable --now containerd
  • 安装 kubeadm/kubelet/kubectl:
    • 添加仓库(国内可用镜像源):
      • cat < < EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
        [kubernetes]
        name=Kubernetes
        baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
        enabled=1
        gpgcheck=0
        repo_gpgcheck=0
        gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
        EOF
    • 安装与开机:sudo yum install -y kubelet kubeadm kubectl & & sudo systemctl enable --now kubelet
      以上步骤覆盖系统、内核、容器运行时与组件安装的关键环节,是后续编排稳定运行的底座。

二 集群初始化与网络插件

  • 初始化控制平面:
    • 选择 Pod 网段(与所选 CNI 匹配),如 Flannel 常用 10.244.0.0/16
      • sudo kubeadm init --apiserver-advertise-address < MASTER_IP> --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
  • 安装 CNI 网络插件(二选一):
    • Flannel:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    • Calico:kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
  • 加入工作节点:
    • 在 Master 获取加入命令:kubeadm token create --print-join-command
    • 在 Node 执行:sudo kubeadm join < MASTER_IP> :6443 --token < TOKEN> --discovery-token-ca-cert-hash sha256:< HASH>
  • 验证:kubectl get nodeskubectl get pods -A,确保 ReadyRunning
    以上流程覆盖初始化、网络与节点加入的高频操作,适合快速落地与验证。

三 编排常用操作与自动化

  • 快速部署应用(以 Nginx 为例):
    • Deployment:
      • kubectl create deployment nginx --image=nginx:latest --replicas=3
    • Service(NodePort):
      • kubectl expose deployment nginx --port=80 --type=NodePort
  • 配置与密钥管理:
    • ConfigMapkubectl create configmap myapp-config --from-literal=key=value
    • Secretkubectl create secret generic db-secret --from-literal=password=xxx
  • 自动扩缩容(HPA):
    • 指标准备:为 Deployment 添加资源请求(如 resources.requests.cpu)。
    • 创建 HPA:
      • kubectl autoscale deployment nginx --cpu-percent=50 --min=1 --max=10
  • 滚动升级与回滚:
    • 升级镜像:kubectl set image deployment/nginx nginx=nginx:1.25
    • 查看与回滚:kubectl rollout status deployment/nginxkubectl rollout undo deployment/nginx
  • 健康检查与自愈:
    • 在容器 spec 中配置 livenessProbe/readinessProbe,提升故障自愈与流量切换效率。
      以上操作覆盖日常编排的高频动作,适合在无状态服务与通用中间件场景中快速复用。

四 高可用与访问控制

  • 控制平面高可用(推荐 Keepalived + Nginx IngressHAProxy):
    • 3台 Master 上部署 Keepalived 生成 VIP,并部署 Nginx 反向代理到各 Master 的 6443;初始化与 kubeconfig 均指向 VIP
    • 任一 Master 故障时,VIP 漂移到健康节点,Nginx 自动剔除异常后端,实现 APIServer 无感切换。
  • 外部访问与权限:
    • 若外部工具通过负载均衡器访问 API,需为其创建 ServiceAccount + RBAC ClusterRoleBinding(如授予 cluster-admin)以进行只读或管理操作。
  • 生产建议:
    • 结合 Pod 反亲和污点/容忍 将系统组件与工作负载隔离;为关键业务配置 拓扑分散就绪/存活探针
      该方案已在多 Master 场景中广泛验证,具备简洁、可靠、可维护的优势。

五 排错与性能优化清单

  • 快速诊断:
    • 节点与系统:kubectl get nodes -o widekubectl describe node < node> journalctl -u kubelet -xe
    • Pod 与事件:kubectl get pods -A -o widekubectl describe pod < pod> -n < ns> kubectl logs < pod> -n < ns>
  • 常见根因:
    • CNI 未就绪(Pod 一直 Pending)→ 检查 kube-flannel.yml/calico.yaml 是否成功、Pod 网段是否冲突。
    • kubelet 未就绪 → 确认 Containerd 运行、SystemdCgroup=true、镜像拉取无阻塞。
    • 节点 NotReady → 检查内核参数、网络转发、时间同步与防火墙策略。
  • 性能与安全优化:
    • 内核与网络:合理提升 文件描述符限制网络缓冲区,开启 ip_forward 与桥接转发。
    • 安全:启用 RBACPod SecurityNetworkPolicy,最小化容器权限与镜像来源。
    • 可观测性:部署 metrics-serverkube-state-metrics,为 HPA 与告警提供数据。
      以上清单覆盖从节点到 Pod 的排查路径与常见优化点,有助于缩短 MTTR 并提升稳定性。

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


若转载请注明出处: CentOS上Kubernetes的容器编排技巧
本文地址: https://pptw.com/jishu/754305.html
如何评估CentOS上Kubernetes的性能瓶颈 Kubernetes在CentOS上的自动化运维工具

游客 回复需填写必要信息