如何在阿里云上构建一个合适的Kubernetes集群

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

声明

本文主要介绍如何在阿里云上构建一个K8S集群的实践,只是作为参考,大家可以根据实际情况做出调整。

集群规划

在实际案例中发现,有不少同学使用了很多的小规格的ECS来构建K8S集群,这样其实即没有达到省钱的目的,也没有很好的发挥K8S集群的优势。因为通过大量的小型ECS构建集群有几个弊端:

  • 小规格Woker ECS的网络资源受限
  • 如果一个容器基本能占用掉一个小规格ECS,那么这个的机器的剩余资源就无法利用(构建新的容器或者是恢复失败的容器),在ECS数量多的情况,反而是一种浪费。

那么如何选择Worker ECS的规格呢?

  • 确定整个集群的日常使用的总核数以及可用度的容忍度。例如总的核数有160核,同时容忍10%的错误。那么最小选择10台ECS为16核的机器,并且高峰运行的负荷不要超过16090%=144核。如果容忍度是20%,那么最小选择5台32核的机器,并且高峰运行的负荷不要超过16080%=128核。这样确保,就算有一台机器整体crash都可以支持得住业务运行。
  • 但是上面这个计算只是理论值,因为规格小的机器,很可能剩余不可利用的资源的比例就高。所以不是越小的机器越好。
  • 选择好CPU:Memory的比例。对于使用内存比较多的应用例如java类应用,建议考虑使用1:8的机型。

高规格ECS的一些好处:

  • 高规格的好处是,网络带宽大,对于大带宽类的应用,资源利用率也高。
  • 在一台机器内容器建通信的比例增大,减少网络的传输
  • 拉取镜像的效率更好。因为镜像只需要拉取一次就可以被多个容器使用。而对于小规格的ECS拉取镜像的此时就增多。在需要联动ECS做伸缩的场景,则需要花费的时间更长,反而达不到立即响应的目的

选用神龙服务器

阿里云已经推出了裸金属服务器:神龙,选用神龙服务比较典型的两个场景:

  • 如果在集群日常规模能够到1000个核的情况下,建议全部选择神龙服务器。(神龙服务器96核起)这样可以通过10~11台神龙服务器构建一个集群。
  • 需要快速扩大比较多的容器的时候,特别是电商类大促的时候,应对流量尖峰,可以考虑使用神龙服务来作为新增的节点,这样增加一台神龙就可以支持很多个容器运行了。

神龙服务作为容器集群的构建基础,还有以下好处:

  • 超强网络: 配备RDMA技术。通过Terway容器网络,充分发挥硬件性能跨宿主机容器带宽超过9Gbit/s
  • 计算性能零抖动:自研芯片取代Hypervisor,无虚拟化开销,无资源抢占
  • 安全:物理级别加密,支持Intel SGX加密,可信计算环境,支持区块链等应用

8412478D_8C50_4874_BBDB_9AEFD3051A69

构建集群选项注意点

在构建k8s集群是,有很多选项需要注意:

网络选择

  • 如果需要连接外部的一有服务,如 rds等,则需要考虑复用原有的VPC,而不是取创建一个新的VPC。因为VPC间是隔离的。但是可以通过创建一个新的交换机,把k8s的机器都放在这个交换机,便于管理。
  • 网络插件的选择:目前支持两种插件,一种是flannel,直通VPC,性能最高。一种是Terway,提供k8s的网络策略管理。
  • POD CIDR,整个集群的POD的网络。这个不能设置太小。因为设置太小,能支持的节点数量就受限了。这个与高级选项中“每个节点POD的数量有关”。例如POD CIDR是/16的网段,那么就有256*256个地址,如果每个几点POD数量是128,则最多可以支持512个节点。

磁盘的选择

  • 尽量选择SSD盘
  • 对于Worker节点,尽量选择“挂在数据盘”。因为这个盘是专门提供给/var/lib/docker,使用来存放本地镜像的。避免后续如果镜像太多撑爆根磁盘。在运行一段时间后,本地会存在很多无用的镜像。比较快捷的方式就是,先下线这台机器,重新构建这个磁盘,然后再上线。

日常运维设置

  • 对于ECS的监控,日常运维一定设置CPU, Memory,磁盘的告警。再次说明一下,尽量将/var/lib/docker放在独立一个盘上
  • 一定配置日志收集

是否需要立即构建Worker节点

目前集群的创建方式使用的ECS是按照量计费的模式。如果需要包年包月,则可以考虑先不创建Worker节点,然后创建k8s集群完后,再单独购买ECS后添加进集群里。

K8S稳定性的考虑

参考 https://yq.aliyun.com/articles/599169?spm=a2c4e.11153959.0.0.4eebd55aSdySUm

Serverless Kubernetes

如果管理和维护Kuberntes集群太过于麻烦,为什么不试试我们的Serverless Kubernetes呢?

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
29天前
|
存储 Kubernetes Docker
容器服务ACK常见问题之阿里云控制台进不去了如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
29天前
|
运维 Kubernetes 监控
构建高效自动化运维体系:基于Docker和Kubernetes的实践指南
【2月更文挑战第30天】 在当今快速发展的云计算时代,传统的IT运维模式已难以满足业务的敏捷性和稳定性需求。本文深入探讨了如何通过Docker容器化技术和Kubernetes集群管理工具构建一个高效、可靠的自动化运维体系。文章首先概述了容器化技术和微服务架构的基本概念,随后详细阐述了基于Docker的应用打包、部署流程,以及Kubernetes在自动化部署、扩展和管理容器化应用中的关键作用。最后,文中通过案例分析,展示了如何在实际场景中利用这些技术优化运维流程,提高系统的整体效率和可靠性。
|
16天前
|
数据库 存储 监控
什么是 SAP HANA 内存数据库 的 Delta Storage
什么是 SAP HANA 内存数据库 的 Delta Storage
16 0
什么是 SAP HANA 内存数据库 的 Delta Storage
|
6天前
|
Kubernetes 监控 Cloud Native
构建高效云原生应用:基于Kubernetes的微服务治理实践
【4月更文挑战第13天】 在当今数字化转型的浪潮中,企业纷纷将目光投向了云原生技术以支持其业务敏捷性和可扩展性。本文深入探讨了利用Kubernetes作为容器编排平台,实现微服务架构的有效治理,旨在为开发者和运维团队提供一套优化策略,以确保云原生应用的高性能和稳定性。通过分析微服务设计原则、Kubernetes的核心组件以及实际案例,本文揭示了在多变的业务需求下,如何确保系统的高可用性、弹性和安全性。
11 4
|
5天前
|
Kubernetes 搜索推荐 Docker
使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装
使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装
39 17
|
18天前
|
消息中间件 Kubernetes Kafka
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
14 0
|
18天前
|
Kubernetes 安全 网络安全
搭建k8s集群kubeadm搭建Kubernetes二进制搭建Kubernetes集群
搭建k8s集群kubeadm搭建Kubernetes二进制搭建Kubernetes集群
101 0
|
21天前
|
运维 Kubernetes 持续交付
构建高效自动化运维体系:基于Docker和Kubernetes的最佳实践
在现代云计算环境中,自动化运维成为保障系统稳定性与提升效率的关键。本文深入探讨了如何利用Docker容器化技术和Kubernetes容器编排工具构建一个高效、可靠的自动化运维体系。文中不仅介绍了相关的技术原理,还结合具体案例分析了实施过程中的常见问题及解决方案,为读者提供了一套行之有效的最佳实践指南。
|
25天前
|
Kubernetes Cloud Native Docker
【云原生】kubeadm快速搭建K8s集群Kubernetes1.19.0
Kubernetes 是一个开源平台,用于管理容器化工作负载和服务,提供声明式配置和自动化。源自 Google 的大规模运维经验,它拥有广泛的生态支持。本文档详细介绍了 Kubernetes 集群的搭建过程,包括服务器配置、Docker 和 Kubernetes 组件的安装,以及 Master 和 Node 的部署。此外,还提到了使用 Calico 作为 CNI 网络插件,并提供了集群功能的测试步骤。
213 0
|
28天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理实践
【2月更文挑战第31天】 在微服务架构日益普及的今天,容器编排工具如Kubernetes已成为部署、管理和扩展容器化应用的关键平台。然而,随着集群规模的扩大和业务复杂性的增加,如何有效监控集群状态、及时响应系统异常,以及管理海量日志信息成为了运维人员面临的重要挑战。本文将深入探讨 Kubernetes 集群监控的最佳实践和日志管理的高效策略,旨在为运维团队提供一套系统的解决思路和操作指南。
26 0

相关产品

  • 容器服务Kubernetes版