各家公有云K8S的优劣比较

基础设施

云服务器,按量付费,玄虚付费,买就行。阿里云运维,维护底层,上层应用软件开发

https://www.aliyun.com/product/kubernetes

API 工程师,开发也好,运维也要,一切API数据,HTTP暴露

111111有多少人在听课

https://support.huaweicloud.com/kubernetes.html

https://cloud.tencent.com/product/tke

很多中小公司,大公司,自建k8S集群,云上买。

数据库中间件,缓存,监控,CICD,日志,all in k8s ,3个懂K8S


核心维度比较

  1. 托管程度:全托管 vs. 半托管
  2. 成本模型:控制平面收费、节点计费、网络费用
  3. 生态集成:与云厂商其他服务(存储、网络、AI/大数据等)的兼容性
  4. 功能特性:自动扩缩、多集群管理、GPU支持、安全能力
  5. 适用场景:全球化部署、混合云、行业合规性

6666666666


各厂商K8S服务优劣分析

1. AWS EKS(Elastic Kubernetes Service) • 优势

• 深度集成AWS服务(如RDS、S3、IAM),适合已有AWS生态的用户。

• 支持混合云部署(EKS Anywhere)。

• 社区资源丰富,全球节点覆盖广,适合全球化业务。

• 劣势

• 控制平面按小时收费,中小型集群成本较高。

• 配置复杂度较高,需手动管理节点组、网络策略。

2. Google GKE(Google Kubernetes Engine) • 优势

• 原生K8S支持最佳,版本更新最快(接近上游社区)。

• 自动扩缩(Cluster Autoscaler、Vertical Pod Autoscaler)成熟。

• 提供免费控制平面,仅按节点和网络用量收费。

• 劣势

• 依赖Google Cloud生态,非GCP用户迁移成本高。

• 国内无节点区域,需配合其他云厂商使用。

3. Azure AKS(Azure Kubernetes Service) • 优势

• 无缝集成Azure Active Directory(AAD)安全体系。

• 支持Windows容器和.NET应用场景。

• 混合云方案成熟(Azure Arc)。

• 劣势

• 网络配置复杂(默认使用kubenet,需手动配置CNI插件)。

• 部分高级功能(如自动节点修复)需付费版本。

4. 阿里云 ACK(Alibaba Cloud Container Service) • 优势

• 国内合规性强(等保、金融云支持)。

• 高性价比(计算节点折扣、灵活竞价实例)。

• 集成阿里云日志服务、区块链等本地化功能。

• 劣势

• 国际节点覆盖有限,全球化部署需多云协同。

• 文档和社区支持以中文为主。

5. 华为云 CCE(Cloud Container Engine) • 优势

• 国产化适配(鲲鹏ARM架构支持)。

• 政企行业定制方案(如政务云、私有化部署)。

• 本地技术支持响应快。

• 劣势

• 社区活跃度较低,开源工具兼容性需验证。

• 定价模式复杂(按集群规模叠加计费)。

6. 腾讯云 TKE(Tencent Kubernetes Engine) • 优势

• 高度优化游戏/音视频场景(集成腾讯云CDN、直播SDK)。

• 按需付费的Serverless集群(EKS),无节点管理成本。

• 国内网络延迟低,适合社交、泛娱乐行业。

• 劣势

• 控制台功能分散,学习成本较高。

• 多集群管理功能较弱。


总结表格

云厂商 服务名称 托管程度 核心优势 主要劣势 适用场景 典型计费模型
AWS EKS 全托管 AWS生态集成,混合云支持 控制平面收费,配置复杂 全球化业务、混合云 按集群+节点+网络流量
Google GKE 全托管 原生K8S支持,免费控制平面 依赖GCP生态 快速迭代、AI/ML场景 按节点+网络流量
Azure AKS 全托管 Windows容器支持,Azure Arc混合云 网络配置复杂,部分功能需付费 混合云、微软技术栈企业 按节点+网络流量
阿里云 ACK 全托管/Serverless 本地化合规,低成本 国际化弱,文档以中文为主 国内政企、金融行业 按节点+存储+网络流量
华为云 CCE 全托管/混合云 国产化适配,政企支持 社区资源少,定价复杂 政务云、ARM架构需求 按集群规模+节点+流量
腾讯云 TKE 全托管/Serverless 音视频优化,低延迟网络 多集群管理弱 游戏、直播行业 按节点/Serverless Pod按需计费

选择建议 • 全球化业务:AWS EKS / GKE

• 国内合规场景:阿里云 ACK / 华为云 CCE

• 混合云需求:AWS EKS Anywhere / Azure AKS(Azure Arc)

• 成本敏感型:Google GKE(免费控制平面) / 阿里云ACK(竞价实例)

• AI/大数据场景:GKE(TPU支持) / AWS EKS(SageMaker集成)

根据具体需求(技术栈、预算、区域覆盖)综合选择。

为什么选择购买云上K8S,优劣势


一、为什么选择云上托管 K8S?​1. 核心优势​​ • 降低运维复杂度

• 托管控制平面:云厂商负责 Master 节点(API Server、etcd 等)的运维、高可用和升级,用户只需管理 Worker 节点。

• 自动化工具:集成自动扩缩(HPA、Cluster Autoscaler)、日志监控(如 CloudWatch、Prometheus)、备份恢复等能力。

• 快速部署与弹性扩展

• 一键创建集群,分钟级扩容节点或 Pod,应对突发流量无需提前规划资源。

• 与云厂商的弹性计算(如 AWS EC2、阿里云 ECS)深度集成,支持按需付费或 Spot 实例降低成本。

• 深度云服务集成

• 存储与网络:天然兼容云厂商的块存储(如 AWS EBS)、对象存储(如阿里云 OSS)、负载均衡(如 Azure Load Balancer)等。

• AI/大数据:直接调用云上托管的 AI 服务(如 AWS SageMaker、Google Vertex AI)或大数据工具(如 EMR、BigQuery)。

• 安全性增强

• 内置身份认证(如 AWS IAM、Azure AD)、密钥管理(KMS)、网络隔离(VPC、安全组)等能力。

• 合规性支持:满足 GDPR、等保、金融行业监管等要求(尤其国内云厂商)。

• 全球化与混合云能力

• 借助云厂商的全球数据中心,实现多区域集群部署和流量调度(如 AWS Global Accelerator)。

• 支持混合云场景(如 AWS Outposts、Azure Arc),统一管理本地和云上资源。

2. 核心劣势 • 成本可能更高

• 托管服务费用:部分厂商对控制平面收费(如 AWS EKS 按集群每小时计费)。

• 资源溢价:云上节点价格通常高于自建物理机或长期租赁服务器。

• 厂商锁定风险

• 依赖云厂商的专有工具(如 AWS ALB Ingress Controller、阿里云 CSI 插件),迁移到其他云或本地时需重构部分配置。

• 网络、存储等架构需适配云厂商设计,灵活性受限。

• 配置限制

• 部分高级功能需使用云厂商定制版 K8S(如 Azure AKS 的 Windows 容器支持)。

• 对底层基础设施(如内核版本、CNI 插件)的控制权较弱。

• 网络延迟与带宽成本

• 跨可用区或跨云流量可能产生高延迟和带宽费用(如 AWS 跨 AZ 流量收费)。

                   [是否需要快速部署和弹性扩展?]
                            /       \
                         是 /         \ 否
                          /           \
          [是否缺乏 K8S 运维团队?]    [是否需完全控制底层架构?]
                  /    \                   /    \
               是 /      \ 否            是 /      \ 否
                /        \                /        \
        [选择云托管 K8S]  [需自建 K8S]   [自建 K8S]  [选择云托管 K8S]

二、适用场景与不适用场景​1. 推荐选择云托管 K8S 的场景​​ • 中小团队或初创企业:缺乏专职 K8S 运维人员,需快速搭建容器平台。

• 弹性业务需求:流量波动大(如电商大促、在线教育高峰),需快速扩缩容。

• 多云/混合云战略:利用云厂商的混合云工具统一管理资源。

• 强合规性要求:金融、政务等行业需通过等保、HIPAA 等认证。

2. 不建议选择云托管 K8S 的场景 • 超大规模稳定负载:长期占用大量固定资源,自建 IDC 或裸金属服务器成本更低。

• 高度定制化需求:需修改 K8S 内核、CNI 插件或调度策略(如自研网络方案)。

• 严格数据本地化:数据不允许出本地机房,且无法接受混合云方案。


三、云托管 K8S vs 自建 K8S 对比表格

维度 云托管 K8S 自建 K8S
运维成本 低(厂商负责控制平面) 高(需自运维 Master/Worker 节点、升级、备份)
部署速度 分钟级创建集群 数小时至数天(依赖硬件采购和网络配置)
弹性扩展 自动扩缩节点/Pod,按需付费 需手动扩容,资源闲置风险高
安全性 依赖云厂商安全体系(IAM、VPC、审计日志) 需自建安全方案(如防火墙、RBAC、密钥管理)
成本模型 按用量付费,适合波动负载 固定硬件成本,适合稳定负载
灵活性 受限于云厂商功能,可能存在锁定 完全自主控制,可深度定制
合规性 支持云厂商提供的行业认证(如等保、GDPR) 需自行申请和维护合规认证

四、决策建议 • 选择云托管 K8S 的条件:

  1. 团队缺乏 K8S 专家或运维人力不足。
  2. 业务需要快速迭代和弹性扩缩能力。
  3. 重度依赖云厂商生态(如 AI、大数据服务)。

• 选择自建 K8S 的条件:

  1. 长期资源需求稳定且规模大(如超算场景)。
  2. 对底层架构有深度定制需求(如特定硬件加速)。
  3. 数据必须完全本地化,且无法接受混合云。

总结 云托管 K8S 是平衡效率与成本的理想选择,尤其适合追求敏捷性和降低运维负担的企业;而自建 K8S 更适合对控制权、定制化或成本优化有极端需求的场景。建议根据团队能力、业务特性和长期战略综合选择。

阿里云ACK

https://help.aliyun.com/product/85222.html

image-20230225183806366

为什么花钱买ACK?

自建Kubernetes的劣势

  • 搭建集群繁琐。

    您需要手动配置Kubernetes相关的各种组件、配置文件、证书、密钥、相关插件和工具,整个集群搭建工作需要花费专业人员数天到数周的时间。

  • 在公共云上,需要投入大量的成本实现和云产品的集成。

    与阿里云上其他产品的集成,需要您自己投入成本来实现,如日志服务、监控服务和存储管理等。

  • 容器是一个系统性工程,涉及网络、存储、操作系统、编排等各种技术,需要专门的人员投入。

  • 容器技术一直在不断发展,版本迭代快,需要不断地试错、升级、测试。

ACK优势

https://help.aliyun.com/document_detail/86739.html

ACK用在哪些生产环境

https://help.aliyun.com/document_detail/86740.html

DevOps与ACK

https://help.aliyun.com/document_detail/151985.htm?spm=a2c4g.11186623.0.0.2c2548d1FvVIPQ#task-2404827

  • 微服务应用的CI/CD(持续集成和持续交付)。
  • 线上应用蓝绿部署升级。
  • 自动化测试与部署。

DevOps的目的是构建一种文化和环境,使构建、测试、发布软件更加快捷、频繁和可靠 。

而到了容器时代,需要部署的机器不但量更大,变化更剧烈,有的甚至需要根据条件自动升缩,为了满足企业敏捷的需求,持续部署也成了必需。

本方案使用云效完成容器应用(小程序后端服务)的自动化构建和持续部署。

image-20230225184245061

ACK Pro版集群计费说明

https://help.aliyun.com/document_detail/462280.html

创建ACK集群

多种ACK套餐

image-20230225184750059

托管版

只需创建 Worker 节点,Master 节点由容器服务创建并托管。
具备简单、低成本、高可用、无需运维管理 Kubernetes 集群 Master 节点的特点,您可以更多关注业务本身。

只需要创建node工作节点,去跑你的业务就得了,不需要操心master,也无法操作。
小公司需要部署k8s测试,买这个就行了,不用担心master的宕机,阿里做好了高可用。

专有版

需要创建 3 个 Master(高可用)节点及若干 Worker 节点,可对集群基础设施进行更细粒度的控制,需要自行规划、维护、升级服务器集群。

业务较为复杂,需要细粒度的控制k8s所有环境,有更多调整。
等于购买了阿里的机器部署自主可维护的k8s高可用集群。

ASK集群

无需创建和管理 Master 节点及 Worker 节点,即可通过控制台或者命令配置容器实例的资源、指定应用容器镜像以及对外服务的方式,直接启动应用程序。

最简单,直接创建pod运行你的应用即可,不需要维护master,node的k8s组件环境

ACK边缘托管版

提供一个支持边缘计算的托管 Kubernetes 集群,您可以将边缘节点接入到边缘集群中进行托管,为您节省运维成本,并提供类似边缘自治、网络自治等适配边缘计算场景能力

注册集群

注册集群功能可以为分布在各处的外部 Kubernetes 集群提供统一的使用和管理方式

图解

image-20230225190554868

购买ACK托管版(master)

image-20230225190811623

pro版和标准版

区别在于可以对master有更多的设置,不需要你创建,但是可以额外的设置,主要在于安全性监控。

标准版用于学习测试

Pro版本用于公司商业运行

image-20230225190955388

创建ACK标准模板

image-20230225213122846

ACK托管集群 专有词汇解释

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/kubernetes-cluster-network-planning

image

Flannel示意图

阿里云容器服务 Kubernetes 版(ACK)托管集群涉及多个关键网络和组件概念,以下是详细解释:


1. 专有网络(VPC) • 作用:为ACK集群提供逻辑隔离的私有网络环境,管理节点、Pod和服务的网络通信。

• 配置要点:

• 子网划分:ACK集群节点(ECS)需部署在VPC的子网内,建议为不同可用区配置多个子网以提高容灾能力。

• 路由表:VPC自动维护路由规则,确保节点、Pod和服务间的通信。

• 与经典网络区别:VPC提供更高安全性和灵活的网络拓扑。


2. SNAT(源网络地址转换) • 功能:为无公网IP的节点提供访问互联网的能力(如拉取容器镜像、更新系统等)。

• ACK配置:

• 默认开启:创建托管集群时,若未绑定弹性公网IP(EIP),ACK会自动配置SNAT网关。

• 手动配置:可在VPC内创建NAT网关,自定义SNAT条目,实现更精细的出口流量控制。


3. 可用区(Availability Zone, AZ) • 定义:阿里云同一地域内独立供电和网络的物理数据中心,提高容灾能力。

• ACK多可用区部署:

• 节点分布:将节点部署到多个可用区,避免单点故障。

• Pod拓扑约束:通过Kubernetes topologySpreadConstraints将Pod分散到不同AZ。

• 存储卷:使用云盘(Cloud Disk)时需与节点同可用区,NAS/OBS可跨可用区访问。


4. 安全组(Security Group) • 作用:虚拟防火墙,控制ECS节点的入口/出口流量。

• ACK默认规则:

• 节点间通信:允许所有协议在节点间互通(安全组内默认开放)。

• API Server访问:开放6443端口(需配置授权对象为特定IP或安全组)。

• 自定义规则:可按需限制Pod或服务的访问范围(如仅允许内网访问数据库)。


5. API Server • 功能:Kubernetes集群的控制平面入口,托管在阿里云侧,用户无需维护。

• 访问方式:

• 公网访问:通过EIP暴露API Server(需配置安全组和白名单)。

• 私网访问:通过VPC内网Endpoint访问,推荐生产环境使用。

• RBAC:通过RAM角色或Kubernetes RBAC管理权限。


6. 网络插件(Flannel) • 作用:实现Pod跨节点通信,阿里云ACK默认使用Terway(与Flannel同为CNI插件)。

• Flannel模式:

• VXLAN:通过隧道封装跨主机流量,适用于VPC网络限制较严的场景。

• Host-GW:直接路由模式(需VPC路由表支持),性能更高但依赖底层网络配置。

• Terway优势:直接使用VPC弹性网卡(ENI),Pod获得VPC内真实IP,性能更优且支持NetworkPolicy。


7. 容器网段 • Pod CIDR:分配给Pod的IP地址范围(如172.20.0.0/16),需满足:

• 不与VPC网段、服务网段、节点IP重叠。

• 预留足够IP数量(每个Pod一个IP)。

• 配置建议:

• 小型集群:172.20.0.0/16(约65k IP)

• 大型集群:多个/19子网分片(Terway支持ENI多IP模式)。


8. 节点Pod数量 • 限制因素:

• 网络插件:Flannel基于节点分配子网(默认每个节点最多224个Pod),Terway利用ENI(单节点支持更多Pod,如64-128)。

• ECS规格:CPU/内存资源限制,例如ecs.g6.xlarge(4核8G)建议运行20-40个Pod。

• 调整方法:

• Flannel:修改--max-pods参数(需更新kubelet配置)。

• Terway:通过配置eni_conf调整每个ENI的IP数量。


9. 服务网段(Service CIDR) • 用途:为Kubernetes Service分配ClusterIP(如10.96.0.0/16)。

• 注意事项:

• 避免与VPC、Pod CIDR、节点IP冲突。

• 默认范围10.96.0.0/16提供约65k Service IP,大型集群可扩展为/14

• Service类型:

• ClusterIP:通过服务网段内部访问。

• LoadBalancer:使用阿里云SLB暴露公网或私网服务。


配置示例

# 创建ACK集群时典型网络配置
vpc_cidr: 192.168.0.0/16
pod_cidr: 172.20.0.0/16
service_cidr: 10.96.0.0/16
node_cidr: 192.168.1.0/24  # 子网1(可用区A)
node_cidr: 192.168.2.0/24  # 子网2(可用区B)
network_plugin: terway      # 或flannel
enable_nat_gateway: true    # 自动配置SNAT

常见问题 • Q:Pod无法访问公网?

• 检查SNAT是否开启,节点安全组是否放行出口流量。

• Q:跨节点Pod通信失败?

• 确认VPC路由表正确,安全组允许节点间所有协议通信。

• Q:Service IP不足?

• 扩展服务网段(需重建集群)或使用externalTrafficPolicy: Local减少IP消耗。

通过合理规划VPC、子网、容器网段和服务网段,结合阿里云网络组件,可构建高性能、高可用的Kubernetes集群。

k8s-1.32版本 2025-5-11号更新

docker容器运行时

image-20250511下午33641250

image-20230225213914759

暴露ACK到公网(EIP)

暴露api-server地址到公网,即可远程管理ACK集群。

image-20230226113107805

ACK连接RDS

  • 高可用数据库,不是你自己pod起mysql
  • 使用RDS-mysql作为数据库

ACK安全组

image-20230226123602418

只要你的ACK,ECS,RDS使用阿里云创建的VPC,默认都可以互通。

高级选项

image-20230226123727251

Worker节点配置购买

https://kubernetes.io/zh-cn/docs/concepts/overview/components/

image-20250511下午34631216

费用计算

k8s集群有最低运行要求,并且费用计算还是(ECS+ACK+EIP+SLB)

配置要求

Yuchao123 密码

image-20230226124615089

K8S其他组件配置

ingress-nginx

image-20230226125225658

购买订单检查

image-20230226125350394

修改后

image-20230226130052213

ACK创建中

image-20230226130156315

ACK集群运行中

image-20230226131144384

类似dashboard

image-20230226135726395

通过kubectl操作ACK(本地>阿里云)

image-20230226135800448

可以通过你本地机器,走api-server提供的公网地址,进行远程管理

只要有证书就可以通过api-server的认证


# 配置源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
        http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

# 安装kubectl
yum install     kubectl-1.19.3 ipvsadm -y

# 查看文件
[yuc-tx-2 root /etc/yum.repos.d]#cat ~/.kube/config |head -4
apiVersion: v1
clusters:
- cluster:
    server: https://123.56.15.123:6443


# 查看k8s worker节点
[yuc-tx-2 root /etc/yum.repos.d]#kubectl get nodes
NAME                      STATUS   ROLES    AGE   VERSION
cn-beijing.192.168.0.31   Ready    <none>   60m   v1.22.15-aliyun.1
cn-beijing.192.168.0.32   Ready    <none>   60m   v1.22.15-aliyun.1

image-20230226141020199

ubuntu远程接管k8s

apt-get update && apt-get install -y apt-transport-https
curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/deb/Release.key |
    gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/deb/ /" |
    tee /etc/apt/sources.list.d/kubernetes.list
apt-get update
apt-get install -y kubelet kubeadm kubectl


root@aiops01:~# kubectl version
Client Version: v1.28.2
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
The connection to the server localhost:8080 was refused - did you specify the right host or port?

root@aiops01:~# head -4 ~/.kube/config
apiVersion: v1
clusters:
- cluster:
    server: https://39.106.52.191:6443


root@aiops01:~# kubectl get po -A
NAMESPACE     NAME                                                      READY   STATUS    RESTARTS   AGE
arms-prom     arms-prometheus-ack-arms-prometheus-7bcc66f7d8-phk79      0/1     Pending   0          67m
arms-prom     kube-state-metrics-6645694db8-84lpw                       0/1     Pending   0          67m
arms-prom     o11y-addon-controller-7dcd47cd-6vwlw                      0/1     Pending   0          67m
arms-prom     o11y-init-environment-1-ckdq6                             0/1     Pending   0          67m
kube-system   ack-cost-exporter-855d67cb94-47tvj                        0/1     Pending   0          67m

新-创建节点池-创建节点

https://csnew.console.aliyun.com/#/k8s/cluster/c2a4bacb4719c4e1b8ec315c49448eec4/v2/nodePool/np5aca99779f2a41c895cb2310c02469f3/info?region=cn-beijing&ns=__all__

image-20250511下午52120205

root@aiops01:~# kubectl get no
NAME                     STATUS   ROLES    AGE   VERSION
cn-beijing.10.40.126.7   Ready    <none>   29s   v1.32.1-aliyun.1
root@aiops01:~# kubectl get no -owide
NAME                     STATUS   ROLES    AGE   VERSION            INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
cn-beijing.10.40.126.7   Ready    <none>   33s   v1.32.1-aliyun.1   10.40.126.7   <none>        Ubuntu 22.04.4 LTS   5.15.0-106-generic   containerd://1.6.38

image-20250511下午53856389

非常好用

如何接管k8s集群

  • 连接到api-server
  • 有证书权限

k8s命令补全

yum install bash-completion -y
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

image-20230226141944864

更安全的ECS内网连接ACK

同一个VPC下的ECS,都可以连接ACK

image-20230226142211603

ACK节点管理

image-20250511下午53921361

image-20250511下午54230941

image-20250511下午54317077

image-20230226142248268

节点详细

image-20230226142410996

工作负载(namespace)

image-20230226142449114

Service管理

image-20230226142610272

ACK提供可视化k8s管理

image-20230226142644964

ACK监控

你需要用k8s、维护、监控k8s,所有东西,不需要自己去搭建了,并且个人搭建导致的毫无规章制度,运维难得问题。

统一ACK解决了所有问题,只需要招聘懂kubernetes的运维,即可维护ACK上的公司技术业务。

image-20230226142849179

签到环节,群内签到,作为听课记录

  • 听完天的,领取超哥私房菜实战课
  • 笔记
  • 规划
  • 超哥2分钟后回来,分享,运维,怎么上岸,搞钱
  • 直接来VIP班,手把手教。😄
Copyright © www.yuchaoit.cn 2025 all right reserved,powered by Gitbook作者:于超 wechat: laoyuer1993 2025-05-13 09:43:35

results matching ""

    No results matching ""