行业资讯
📅 2026/8/22 9:11:30
私有云K8s(自建/VMware/OpenStack)整体架构解析
技术栈Kubernetes v1.32.13 Rocky Linux 8.6 公私云混合架构 Containerd 1.7.x操作环境 / 对接原理 / 详细步骤 / 完整命令 / 配置文件 / 验证流程 / 排错方案私有云K8s自建/VMware/OpenStack整体架构解析操作环境K8s 集群环境私有云自建集群k8s-master 192.168.1.10, k8s-node1 192.168.1.11, k8s-node2 192.168.1.12 公有云托管K8sACK/TKE/CCEK8s 版本 v1.32.13公私云对接场景公私云架构差异与选型已部署私有云K8s集群和公有云托管K8s集群跨云网络已打通专线/VPN统一管理平台已配置操作系统 Rocky Linux 8.6容器运行时 Containerd 1.7.x网络插件 Calico存储已配置LocalPV/NFS/云盘已配置跨云统一监控PrometheusGrafana、统一日志ELK/EFK、统一链路追踪SkyWalking/OpenTelemetry已配置跨云统一CI/CD流水线Jenkins/GitLab CI/ArgoCD、统一镜像仓库Harbor、统一权限体系RBAC/SSO对接原理私有云K8s自建/VMware/OpenStack整体架构解析是 K8s 公有云私有云资源对接中的核心操作场景。公私云资源对接旨在实现私有云自建K8s与公有云托管K8s的统一管理、统一运维、统一监控、统一安全、统一成本管控解决多云架构下的架构差异、网络差异、存储差异、权限差异、运维差异等问题。公私云架构差异与选型作为公私云对接的具体领域负责架构选型、网络适配、存储适配、安全权限、监控运维、迁移割接、高可用容灾、成本优化、自动化运维等核心能力。运维操作的核心目标是确保公私云集群的高可用、业务连续性、数据安全性、成本可控性通过规范化的架构选型确保公私云适配通过统一的网络存储适配确保跨云通信和数据共享通过统一的安全权限体系确保跨云安全合规通过统一的监控运维体系确保跨云可观测通过合理的成本优化确保资源利用率通过高可用容灾确保业务连续性通过自动化运维提升效率。所有操作需遵循业务无感知原则对公私云资源的变更采用灰度和滚动方式避免影响业务。详细步骤1. 公私云现状盘点与集群状态检查# 1. 检查私有云K8s集群状态kubectl get nodes -o wide --contextprivate-cloudkubectl get pods -A -o wide --contextprivate-cloud | head -30# 2. 检查公有云K8s集群状态kubectl get nodes -o wide --contextpublic-cloudkubectl get pods -A -o wide --contextpublic-cloud | head -30# 3. 检查跨云网络连通性# 从私有云节点ping公有云节点ping -c 3 public-cloud-node-ip# 检查专线/VPN状态ip route | grep -E public|vpn|专线# 检查跨云端口连通性telnet public-cloud-node-ip 6443nc -zv public-cloud-node-ip 10250# 4. 检查跨云DNS解析nslookup public-cloud-service.namespace.svc.cluster.local# 检查CoreDNS配置kubectl get cm coredns -n kube-system --contextprivate-cloud -o yaml | head -50# 5. 检查跨云镜像仓库# 检查Harborcurl -s https://harbor.example.com/api/v2.0/health# 检查镜像同步# kubectl exec -n harbor harbor-core-0 -- curl -s http://localhost:8080/api/v2.0/replications# 6. 检查跨云统一监控# 检查Prometheus联邦kubectl get cm -n monitoring prometheus-config --contextprivate-cloud -o yaml | grep -A10 remote_write\|federation# 检查Grafana多数据源kubectl get cm -n monitoring grafana-datasources --contextprivate-cloud -o yaml | head -50# 7. 检查跨云统一日志# 检查日志采集kubectl get pods -n logging --contextprivate-cloudkubectl get pods -n logging --contextpublic-cloud# 检查Elasticsearchkubectl exec -n logging elasticsearch-0 -- curl -s http://localhost:9200/_cluster/health# 8. 检查跨云权限体系# 检查RBACkubectl get clusterrolebinding --contextprivate-cloud | head -20kubectl get clusterrolebinding --contextpublic-cloud | head -20# 检查SSO/统一认证kubectl get cm -n kube-system oidc-config --contextprivate-cloud -o yaml 2/dev/null | head -30# 9. 导出配置备份kubectl get all -A -o yaml --contextprivate-cloud /tmp/private_cloud_state_$(date %Y%m%d).yamlkubectl get all -A -o yaml --contextpublic-cloud /tmp/public_cloud_state_$(date %Y%m%d).yamlecho 公私云配置已备份到 /tmp/2. 制定操作方案与备份防护# 1. 备份公私云配置操作前必做kubectl get cm -A -o yaml --contextprivate-cloud /tmp/private_cm_backup_$(date %Y%m%d_%H%M%S).yamlkubectl get secret -A -o yaml --contextprivate-cloud /tmp/private_secret_backup_$(date %Y%m%d_%H%M%S).yamlkubectl get deployment,statefulset,daemonset -A -o yaml --contextprivate-cloud /tmp/private_workload_backup_$(date %Y%m%d_%H%M%S).yamlkubectl get cm -A -o yaml --contextpublic-cloud /tmp/public_cm_backup_$(date %Y%m%d_%H%M%S).yamlkubectl get secret -A -o yaml --contextpublic-cloud /tmp/public_secret_backup_$(date %Y%m%d_%H%M%S).yamlkubectl get deployment,statefulset,daemonset -A -o yaml --contextpublic-cloud /tmp/public_workload_backup_$(date %Y%m%d_%H%M%S).yaml# 2. 记录当前公私云状态echo 公私云状态记录 $(date) /tmp/cloud_status_$(date %Y%m%d).txtecho --- 私有云节点 --- /tmp/cloud_status_$(date %Y%m%d).txtkubectl get nodes -o wide --contextprivate-cloud /tmp/cloud_status_$(date %Y%m%d).txtecho --- 公有云节点 --- /tmp/cloud_status_$(date %Y%m%d).txtkubectl get nodes -o wide --contextpublic-cloud /tmp/cloud_status_$(date %Y%m%d).txtecho --- 跨云网络 --- /tmp/cloud_status_$(date %Y%m%d).txtping -c 3 public-cloud-node-ip /tmp/cloud_status_$(date %Y%m%d).txt 21cat /tmp/cloud_status_$(date %Y%m%d).txt# 3. 制定操作方案cat /tmp/cloud_operation_plan.md EOF# 公私云操作方案## 一、操作目标## 二、影响范围评估## 三、操作步骤与时间窗口## 四、回滚方案## 五、验证标准## 六、风险点与应对措施EOFecho 操作方案模板已创建# 4. 确认业务窗口echo 当前时间: $(date)echo 建议在业务低峰期执行公私云操作避免影响业务# 5. 通知相关业务方# echo 公私云运维操作通知 | mail -s 公私云通知 adminexample.com3. 执行公私云配置适配操作# 1. 检查公私云架构差异# 私有云控制平面kubectl get pods -n kube-system --contextprivate-cloud | grep -E apiserver|controller|scheduler|etcd# 公有云控制平面托管通常不可见kubectl get nodes --contextpublic-cloud# 检查版本差异kubectl version --contextprivate-cloud --shortkubectl version --contextpublic-cloud --short# 2. 检查公私云网络适配# 私有云网络kubectl get cm -n kube-system calico-config --contextprivate-cloud -o yaml 2/dev/null | head -30# 公有云网络kubectl get cm -n kube-system --contextpublic-cloud | grep -i calico\|flannel\|vpc# 检查Service类型kubectl get svc -A --contextprivate-cloud | grep LoadBalancerkubectl get svc -A --contextpublic-cloud | grep LoadBalancer# 3. 检查公私云存储适配# 私有云StorageClasskubectl get storageclass --contextprivate-cloud# 公有云StorageClasskubectl get storageclass --contextpublic-cloud# 检查PV/PVCkubectl get pv --contextprivate-cloud | head -10kubectl get pvc -A --contextpublic-cloud | head -10# 4. 检查公私云权限适配# 私有云RBACkubectl get clusterrole --contextprivate-cloud | head -20# 公有云RBACkubectl get clusterrole --contextpublic-cloud | head -20# 检查ServiceAccountkubectl get serviceaccount -A --contextprivate-cloud | head -10kubectl get serviceaccount -A --contextpublic-cloud | head -10# 5. 检查公私云监控适配# 私有云监控kubectl get pods -n monitoring --contextprivate-cloud# 公有云监控kubectl get pods -n monitoring --contextpublic-cloud# 检查Prometheus联邦kubectl get cm -n monitoring prometheus-config --contextprivate-cloud -o yaml | grep -A10 remote_write\|federation# 6. 执行具体公私云配置操作根据标题调整echo 执行公私云具体配置操作...echo 请根据操作方案执行具体步骤# 7. 应用公私云配置变更# kubectl apply -f /tmp/cloud_config.yaml --contextprivate-cloud# kubectl apply -f /tmp/cloud_config.yaml --contextpublic-cloud# kubectl rollout restart deployment/name -n namespace --contextprivate-cloud# kubectl rollout restart deployment/name -n namespace --contextpublic-cloud# 8. 等待配置生效kubectl rollout status deployment/name -n namespace --contextprivate-cloud --timeout120skubectl rollout status deployment/name -n namespace --contextpublic-cloud --timeout120secho 公私云配置变更完成4. 验证跨云连通性与业务无感知# 1. 验证私有云集群状态kubectl get nodes -o wide --contextprivate-cloud# 预期所有节点 Ready# 2. 验证公有云集群状态kubectl get nodes -o wide --contextpublic-cloud# 预期所有节点 Ready# 3. 验证跨云网络连通性ping -c 3 public-cloud-node-ip# 预期网络连通# 检查跨云服务访问kubectl run -it --rm debug --imagebusybox --restartNever --contextprivate-cloud -- nslookup public-cloud-service.namespace.svc.cluster.local# 预期DNS解析正常# 4. 验证跨云镜像仓库curl -s https://harbor.example.com/api/v2.0/health# 预期Harbor健康# 检查镜像同步# kubectl exec -n harbor harbor-core-0 -- curl -s http://localhost:8080/api/v2.0/replications | jq .[].status# 5. 验证跨云统一监控# 检查Prometheus指标# kubectl port-forward -n monitoring svc/prometheus 9090:9090 --contextprivate-cloud # sleep 5# curl -s http://localhost:9090/api/v1/query?queryup | jq .data.result | length# 预期有公私云指标# 6. 验证跨云统一日志# 检查Elasticsearchkubectl exec -n logging elasticsearch-0 -- curl -s http://localhost:9200/_cluster/health | jq .status# 预期green# 检查日志索引kubectl exec -n logging elasticsearch-0 -- curl -s http://localhost:9200/_cat/indices?v | head -20# 7. 验证跨云权限# 检查RBACkubectl auth can-i get pods --asuser --contextprivate-cloudkubectl auth can-i get pods --asuser --contextpublic-cloud# 预期权限符合预期# 8. 验证业务服务# 检查私有云业务kubectl get pods -n app-namespace --contextprivate-cloud# 检查公有云业务kubectl get pods -n app-namespace --contextpublic-cloud# 预期业务正常运行# 9. 清理调试资源# kubectl delete pod debug --ignore-not-found --contextprivate-cloud# pkill -f port-forward 2/dev/nullecho 验证完成5. 公私云统一监控权限与成本配置# 1. 配置公私云统一监控# 检查Prometheus联邦配置kubectl get cm -n monitoring prometheus-config --contextprivate-cloud -o yaml | grep -A10 remote_write\|federation# 配置Grafana多数据源kubectl get cm -n monitoring grafana-datasources --contextprivate-cloud -o yaml | head -50# 2. 配置公私云统一日志# 检查日志采集配置kubectl get cm -n logging -o name --contextprivate-cloud | head -10# 检查Elasticsearch索引kubectl exec -n logging elasticsearch-0 -- curl -s http://localhost:9200/_cat/indices?v | head -20# 3. 配置公私云统一权限# 检查RBAC配置kubectl get clusterrolebinding --contextprivate-cloud | head -20kubectl get clusterrolebinding --contextpublic-cloud | head -20# 检查SSO配置kubectl get cm -n kube-system oidc-config --contextprivate-cloud -o yaml 2/dev/null | head -30# 4. 配置公私云统一CI/CD# 检查Jenkins/ArgoCD配置kubectl get pods -n cicd --contextprivate-cloudkubectl get application -n argocd --contextprivate-cloud 2/dev/null# 5. 配置公私云高可用容灾# 检查备份策略kubectl get cronjob -A --contextprivate-cloud | grep -i backupkubectl get cronjob -A --contextpublic-cloud | grep -i backup# 检查容灾配置kubectl get volumesnapshot -A --contextprivate-cloud 2/dev/nullkubectl get volumesnapshot -A --contextpublic-cloud 2/dev/null# 6. 配置公私云成本优化# 检查资源标签kubectl get nodes --show-labels --contextprivate-cloud | head -10kubectl get nodes --show-labels --contextpublic-cloud | head -10# 检查资源配额kubectl get resourcequota -A --contextprivate-cloudkubectl get resourcequota -A --contextpublic-cloud# 7. 配置公私云安全合规# 检查网络策略kubectl get networkpolicy -A --contextprivate-cloudkubectl get networkpolicy -A --contextpublic-cloud# 检查安全上下文kubectl get pods -A --contextprivate-cloud -o jsonpath{.items[*].spec.securityContext} | head -20# 8. 配置公私云自动化运维# 检查自动化脚本kubectl get cronjob -A --contextprivate-cloudkubectl get cronjob -A --contextpublic-cloud# 检查GitOps配置kubectl get kustomization -A --contextprivate-cloud 2/dev/nullkubectl get kustomization -A --contextpublic-cloud 2/dev/null6. 验证操作结果与生成报告# 1. 最终验证私有云状态kubectl get nodes -o wide --contextprivate-cloud# 预期所有节点 Ready# 2. 最终验证公有云状态kubectl get nodes -o wide --contextpublic-cloud# 预期所有节点 Ready# 3. 验证跨云网络ping -c 3 public-cloud-node-ip# 预期网络连通# 4. 验证跨云监控# curl -s http://localhost:9090/api/v1/query?queryup | jq .data.result | length# 预期有公私云指标# 5. 验证跨云日志# kubectl exec -n logging elasticsearch-0 -- curl -s http://localhost:9200/_cluster/health | jq .status# 预期green# 6. 验证跨云权限# kubectl auth can-i get pods --asuser --contextprivate-cloud# 预期权限符合预期# 7. 验证业务服务kubectl get pods -n app-namespace --contextprivate-cloudkubectl get pods -n app-namespace --contextpublic-cloud# 预期业务正常# 8. 生成操作报告echo 公私云操作报告 /tmp/cloud_operation_report.txtecho 操作时间: $(date) /tmp/cloud_operation_report.txtecho 私有云节点数: $(kubectl get nodes --no-headers --contextprivate-cloud 2/dev/null | wc -l) /tmp/cloud_operation_report.txtecho 公有云节点数: $(kubectl get nodes --no-headers --contextpublic-cloud 2/dev/null | wc -l) /tmp/cloud_operation_report.txtecho 私有云异常Pod: $(kubectl get pods -A --no-headers --contextprivate-cloud 2/dev/null | grep -v Running | grep -v NAME | wc -l) /tmp/cloud_operation_report.txtecho 公有云异常Pod: $(kubectl get pods -A --no-headers --contextpublic-cloud 2/dev/null | grep -v Running | grep -v NAME | wc -l) /tmp/cloud_operation_report.txtcat /tmp/cloud_operation_report.txt# 9. 清理临时文件# rm -f /tmp/cloud_*.yaml /tmp/cloud_*.txt 2/dev/null# pkill -f port-forward 2/dev/nullecho 操作完成验证流程# 1. 私有云状态验证kubectl get nodes -o wide --contextprivate-cloud# 预期所有节点 Ready# 2. 公有云状态验证kubectl get nodes -o wide --contextpublic-cloud# 预期所有节点 Ready# 3. 跨云网络验证ping -c 3 public-cloud-node-ip# 预期网络连通# 4. 跨云监控验证# curl -s http://localhost:9090/api/v1/query?queryup | jq .data.result | length# 预期有公私云指标# 5. 跨云日志验证# kubectl exec -n logging elasticsearch-0 -- curl -s http://localhost:9200/_cluster/health | jq .status# 预期green# 6. 跨云权限验证# kubectl auth can-i get pods --asuser --contextprivate-cloud# 预期权限符合预期# 7. 业务服务验证kubectl get pods -n app-namespace --contextprivate-cloudkubectl get pods -n app-namespace --contextpublic-cloud# 预期业务正常# 8. 操作报告验证cat /tmp/cloud_operation_report.txt# 预期报告完整排错方案公私云架构差异导致适配困难检查控制面/数据面差异、版本差异、能力边界、API兼容、网络模型、存储模型、运维模式自建K8s与公有云托管K8s选型困惑检查业务场景、团队能力、成本预算、合规要求、扩展性、高可用、运维成本、迁移成本单云/混合云/多云架构适配困难检查业务分布、数据主权、延迟要求、成本优化、容灾需求、厂商锁定、运维复杂度、统一管理公私云版本迭代节奏差异导致兼容问题检查K8s版本、API版本、组件版本、废弃API、CRD兼容、升级路径、回滚方案、验证私有云高可用自建架构风险检查控制平面高可用、etcd集群、负载均衡、存储高可用、网络高可用、故障切换、数据一致性、容灾公有云托管K8s高可用能力边界检查平台兜底能力、SLA、故障范围、自愈能力、升级窗口、配额限制、网络限制、存储限制公私云扩缩容架构差异检查节点扩容、Pod扩容、HPA、VPA、集群自动伸缩、节点池、弹性伸缩、冷却时间、资源预留公私云故障自愈能力差异检查节点自愈、Pod自愈、存储自愈、网络自愈、平台兜底、自定义自愈、故障检测、恢复时间