简介:本文围绕k8s私有化部署展开,从需求分析、架构设计、实施步骤到运维优化,提供系统化指导,帮助企业高效构建安全可控的容器化平台。
k8s(Kubernetes)作为容器编排领域的标杆,公有云服务(如EKS、AKS)虽能快速启动,但私有化部署在数据主权、合规要求、成本控制、性能优化四大场景中具有不可替代性:
| 发行版 | 优势 | 适用场景 |
|---|---|---|
| Rancher | 多集群管理、UI友好 | 中小规模快速部署 |
| OpenShift | 企业级支持、安全合规 | 金融、政府行业 |
| Kubeadm | 轻量级、社区生态完善 | 技术团队自主运维 |
--audit-log-path与--audit-policy-file实现操作审计。--policy-config-file自定义调度策略(如GPU亲和性)。--cloud-provider为external以适配私有云环境。
# 检查内核参数sysctl -a | grep net.ipv4.ip_forward# 验证存储性能fio --name=randwrite --ioengine=libaio --iodepth=32 --rw=randwrite --bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 --group_reporting
swap以避免调度异常。cfssl生成集群证书,设置有效期为10年。
# 初始化控制平面kubeadm init --control-plane-endpoint "api.k8s.local:6443" \--pod-network-cidr=10.244.0.0/16 \--service-cidr=10.96.0.0/12 \--upload-certs# 加入工作节点kubeadm join api.k8s.local:6443 --token <token> \--discovery-token-ca-cert-hash sha256:<hash> \--control-plane --certificate-key <key>
--feature-gates启用EphemeralContainers等实验性功能。
apiVersion: projectcalico.org/v3kind: Installationmetadata:name: defaultspec:calicoVersion: "3.24.5"cniConfig:name: "k8s-pod-network"type: "calico"ipam:type: "calico-ipam"args:- "ipip-mode=Always"- "nat-outgoing=true"
| 指标 | 正常范围 | 监控工具 |
|---|---|---|
| etcd请求延迟 | <50ms | Prometheus+etcd-exporter |
| Pod启动时间 | <10s | kube-state-metrics |
| API Server QPS | <5000 | Metrics Server |
kubectl drain强制迁移Pod,验证HPA与PodDisruptionBudget。iptables阻断节点间通信,检查etcd选举机制。kubeadm upgrade apply分批处理。kubeadm upgrade plan验证兼容性。
# 自定义调度策略示例apiVersion: kubescheduler.config.k8s.io/v1kind: KubeSchedulerConfigurationprofiles:- schedulerName: default-schedulerpluginConfig:- name: PrioritySortargs:defaultPriorities:- name: SelectorSpreadPriorityweight: 1- name: InterPodAffinityPriorityweight: 1
--kube-reserved与--system-reserved保障系统进程资源。lvcreate -i 4 -I 64k提升IOPS。cachefilesd加速频繁读取的配置文件。PodSecurityPolicy限制特权容器与主机目录挂载。
apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:name: api-server-isolationspec:podSelector:matchLabels:app: api-serverpolicyTypes:- Ingressingress:- from:- podSelector:matchLabels:app: load-balancerports:- protocol: TCPport: 8080
--flannel-backend=none禁用内置CNI。结语:k8s私有化部署是一项系统工程,需从架构设计、实施细节到运维优化全链条把控。通过合理规划硬件资源、选择适配的发行版、严格遵循安全规范,企业可构建出高效、稳定、安全的容器化平台,为数字化转型奠定坚实基础。