news 2026/10/31 7:34:52

Kubernetes v1.31.14 集群部署与生产环境配置指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kubernetes v1.31.14 集群部署与生产环境配置指南

1. Kubernetes v1.31.14 集群部署概述

Kubernetes作为当前容器编排领域的事实标准,其集群部署一直是运维和开发团队的核心技能。v1.31.14作为长期支持版本(LTS)的一个补丁更新,主要修复了之前版本中发现的关键安全漏洞和稳定性问题。这个版本特别适合需要稳定运行生产环境的企业用户。

在实际生产环境中,一个标准的Kubernetes集群通常包含以下核心组件:

  • 控制平面(Control Plane):包括API Server、Controller Manager、Scheduler和etcd
  • 工作节点(Worker Nodes):运行实际工作负载的机器
  • 网络插件:如Calico、Flannel等
  • 存储插件:根据业务需求选择

重要提示:生产环境部署前务必确认硬件资源满足最低要求,控制平面节点建议4核CPU/16GB内存起,工作节点根据业务负载调整

2. 部署前环境准备

2.1 系统要求检查

所有节点需要满足以下基本条件:

  • 操作系统:Ubuntu 20.04+/CentOS 7+/RHEL 8+等主流Linux发行版
  • 容器运行时:containerd 1.6+或Docker CE 20.10+
  • 网络:节点间互通,禁用Swap
  • 硬件:2GB以上内存,双核以上CPU

验证命令示例:

# 检查内存和Swap free -h # 检查CPU lscpu # 检查内核版本 uname -r

2.2 基础环境配置

  1. 主机名解析:
sudo hostnamectl set-hostname <hostname> echo "<ip> <hostname>" | sudo tee -a /etc/hosts
  1. 防火墙配置(以firewalld为例):
sudo systemctl stop firewalld sudo systemctl disable firewalld
  1. SELinux禁用(如使用):
sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

3. 使用kubeadm部署集群

3.1 安装依赖组件

在所有节点执行:

# 添加Kubernetes仓库 sudo apt-get update && sudo apt-get install -y apt-transport-https curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list # 安装kubelet/kubeadm/kubectl sudo apt-get update sudo apt-get install -y kubelet=1.31.14-00 kubeadm=1.31.14-00 kubectl=1.31.14-00 sudo apt-mark hold kubelet kubeadm kubectl

3.2 初始化控制平面

在主节点执行:

sudo kubeadm init \ --kubernetes-version v1.31.14 \ --pod-network-cidr=10.244.0.0/16 \ --apiserver-advertise-address=<主节点IP> \ --upload-certs

成功后会输出加入集群的命令,类似:

kubeadm join <control-plane-host>:<control-plane-port> --token <token> \ --discovery-token-ca-cert-hash sha256:<hash> \ --control-plane --certificate-key <key>

3.3 配置kubectl

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

验证集群状态:

kubectl get nodes # 应看到主节点状态为NotReady(等待网络插件安装)

4. 网络插件安装与配置

4.1 安装Calico网络插件

kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml

4.2 验证网络状态

watch kubectl get pods -n kube-system # 等待所有Pod变为Running状态 kubectl get nodes # 节点状态应变为Ready

5. 工作节点加入集群

在每个工作节点执行初始化时输出的join命令:

sudo kubeadm join <control-plane-host>:<control-plane-port> --token <token> \ --discovery-token-ca-cert-hash sha256:<hash>

验证节点加入:

kubectl get nodes # 应看到所有节点状态为Ready

6. 集群验证与测试

6.1 基础功能测试

部署测试应用:

kubectl create deployment nginx --image=nginx kubectl expose deployment nginx --port=80 --type=NodePort kubectl get svc nginx

访问测试:

curl http://<任意节点IP>:<NodePort>

6.2 核心组件健康检查

kubectl get componentstatus # 所有组件应显示Healthy

7. 生产环境关键配置

7.1 证书自动续期配置

编辑kubeadm-config:

kubectl -n kube-system edit cm kubeadm-config

添加:

apiServer: extraArgs: feature-gates: "RotateKubeletServerCertificate=true" controllerManager: extraArgs: feature-gates: "RotateKubeletServerCertificate=true" cluster-signing-duration: 87600h0m0s

7.2 资源配额与限制

示例命名空间配置:

apiVersion: v1 kind: ResourceQuota metadata: name: compute-resources spec: hard: requests.cpu: "20" requests.memory: 100Gi limits.cpu: "40" limits.memory: 200Gi

8. 常见问题排查

8.1 节点NotReady状态排查

  1. 检查kubelet状态:
systemctl status kubelet journalctl -xeu kubelet
  1. 检查网络插件:
kubectl get pods -n kube-system kubectl logs <网络插件pod名称> -n kube-system

8.2 Pod创建失败排查

  1. 查看Pod事件:
kubectl describe pod <pod名称>
  1. 检查资源配额:
kubectl describe quota

9. 集群维护与升级

9.1 版本升级准备

  1. 备份关键数据:
# etcd备份 sudo docker run --rm -v /var/lib/etcd:/var/lib/etcd \ -v $(pwd):/backup \ --network host \ k8s.gcr.io/etcd:3.5.6-0 \ etcdctl snapshot save /backup/etcd-snapshot-$(date +%Y%m%d).db

9.2 控制平面升级

sudo apt-get update sudo apt-get install -y kubeadm=1.31.14-00 sudo kubeadm upgrade plan sudo kubeadm upgrade apply v1.31.14 sudo apt-get install -y kubelet=1.31.14-00 kubectl=1.31.14-00 sudo systemctl restart kubelet

10. 安全加固建议

  1. RBAC配置:
kubectl apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: restricted-user rules: - apiGroups: [""] resources: ["pods", "pods/log"] verbs: ["get", "list", "watch"] EOF
  1. Pod安全策略:
apiVersion: policy/v1beta1 kind: PodSecurityPolicy metadata: name: restricted spec: privileged: false allowPrivilegeEscalation: false requiredDropCapabilities: - ALL volumes: - 'configMap' - 'emptyDir' - 'projected' - 'secret' - 'downwardAPI' - 'persistentVolumeClaim' hostNetwork: false hostIPC: false hostPID: false runAsUser: rule: 'MustRunAsNonRoot' seLinux: rule: 'RunAsAny' supplementalGroups: rule: 'MustRunAs' ranges: - min: 1 max: 65535 fsGroup: rule: 'MustRunAs' ranges: - min: 1 max: 65535

11. 监控与日志方案

11.1 基础监控部署

# 部署Metrics Server kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

验证:

kubectl top nodes kubectl top pods

11.2 日志收集方案

使用Fluentd+Elasticsearch:

kubectl apply -f https://raw.githubusercontent.com/fluent/fluentd-kubernetes-daemonset/master/fluentd-daemonset-elasticsearch.yaml

12. 存储方案配置

12.1 本地存储配置

apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local-storage provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer

12.2 NFS存储配置

# 安装NFS客户端工具 sudo apt-get install -y nfs-common

创建StorageClass:

apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs-storage provisioner: k8s-sigs.io/nfs-subdir-external-provisioner parameters: archiveOnDelete: "false"

13. 高可用方案实现

13.1 控制平面高可用

使用kubeadm配置:

sudo kubeadm init \ --control-plane-endpoint "LOAD_BALANCER_DNS:LOAD_BALANCER_PORT" \ --upload-certs \ --pod-network-cidr=10.244.0.0/16

13.2 etcd集群配置

独立etcd集群示例:

apiVersion: etcd.database.coreos.com/v1beta2 kind: EtcdCluster metadata: name: etcd-cluster spec: size: 3 version: "3.5.6" pod: etcdEnv: - name: ETCD_QUOTA_BACKEND_BYTES value: "8589934592" # 8GB resources: requests: cpu: 1000m memory: 1Gi

14. 性能调优指南

14.1 kubelet参数优化

sudo vi /etc/default/kubelet

添加:

KUBELET_EXTRA_ARGS="--max-pods=110 --kube-api-qps=100 --kube-api-burst=100"

14.2 内核参数调优

# 增加连接跟踪表大小 echo "net.netfilter.nf_conntrack_max=1048576" | sudo tee -a /etc/sysctl.conf # 增加文件描述符限制 echo "fs.file-max=2097152" | sudo tee -a /etc/sysctl.conf sudo sysctl -p

15. 备份与恢复策略

15.1 完整集群备份

# 备份所有资源 kubectl get all --all-namespaces -o yaml > all-resources.yaml # 备份etcd ETCDCTL_API=3 etcdctl \ --endpoints=https://127.0.0.1:2379 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt \ --key=/etc/kubernetes/pki/etcd/server.key \ snapshot save snapshot.db

15.2 灾难恢复步骤

  1. 恢复etcd:
ETCDCTL_API=3 etcdctl snapshot restore snapshot.db \ --data-dir /var/lib/etcd-restore
  1. 重建控制平面:
sudo kubeadm init --skip-phases=etcd \ --ignore-preflight-errors=DirAvailable--var-lib-etcd
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/31 7:34:28

拓扑光子学在太赫兹通信中的仿真与应用

1. 项目概述&#xff1a;拓扑光子学与太赫兹通信的革命性结合在硅基片上操控太赫兹波&#xff0c;听起来像是科幻小说里的情节&#xff0c;但拓扑光子学正在将这个设想变为现实。作为一名长期从事光子器件仿真的工程师&#xff0c;我最近完整复现了基于谷霍尔效应的光子晶体模型…

作者头像 李华
网站建设 2026/10/31 7:34:17

合肥包河区优质酒店推荐与预订攻略

1. 包河区酒店住宿体验概述包河区作为合肥市的核心城区&#xff0c;拥有完善的商业配套和便捷的交通网络&#xff0c;区域内酒店选择丰富多样。从商务出行到休闲旅游&#xff0c;不同类型的旅客都能在这里找到适合自己的住宿选择。近年来随着消费升级&#xff0c;包河区酒店业呈…

作者头像 李华
网站建设 2026/10/31 7:33:18

美赛D题解析:体育运动管理的数学建模与优化

1. 美赛问题D解析&#xff1a;体育运动管理的核心挑战2026年MCM美赛问题D聚焦于体育运动管理这一复杂领域&#xff0c;这实际上反映了当代体育产业面临的系统性难题。作为数学建模竞赛的经典题型&#xff0c;这类问题往往需要参赛者运用跨学科方法解决实际场景中的优化问题。体…

作者头像 李华
网站建设 2026/10/31 7:32:38

开源技术盛会COSCon‘25:开发者生态与创新实践

1. 活动背景与意义解析COSCon25社区团聚暨鲸智社区一周年活动是一场聚焦开源技术生态的年度盛会。作为国内最具影响力的开源社区活动之一&#xff0c;本次活动将汇集来自全国各地的开发者、企业技术负责人和开源爱好者&#xff0c;共同探讨前沿技术趋势和社区协作模式。开源社区…

作者头像 李华
网站建设 2026/10/31 7:31:20

Linux编译工具链:Makefile语法与工程实践指南

1. Linux编译工具链的核心组件在Linux开发环境中&#xff0c;make工具和Makefile文件构成了项目构建的基石。作为自动化构建工具&#xff0c;它们通过定义文件依赖关系和编译规则&#xff0c;将复杂的编译流程简化为一条make命令。这个机制最初由Stuart Feldman在1976年开发&am…

作者头像 李华
网站建设 2026/10/31 7:31:07

Calibre DRC运行失败三大根因:路径、层参数与HOSTID配置修复指南

简介&#xff1a;本资源是一份面向电子设计自动化&#xff08;EDA&#xff09;初学者与中级工程师的Calibre DRC验证排错指南&#xff0c;聚焦导入新工艺库时更换DRC文件所引发的三类高频问题&#xff1a;包含文件访问失败、未定义层参数报错、DRC工具无法加载运行集。内容直击…

作者头像 李华