type
status
date
slug
summary
tags
category
icon
password
概念
容器
操作系统层虚拟化(英语:Operating system–level virtualization),亦称容器化(英语:Containerization),是一种虚拟化技术,这种技术将操作系统内核虚拟化,可以允许用户空间软件实例(instances)被分割成几个独立的单元,在内核中运行,而不是只有一个单一实例运行。
K8s
Kubernetes(常简称为K8s)是用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。 它支持一系列容器工具,包括Docker等。
理解:
容器和虚拟机对比:
- 虚拟机是硬件虚拟化,共享硬件API,操作系统之间无感知。
- 容器是操作系统虚拟化,共享操作系统内核API,容器实例之间无感知,所有容器实例使用相同版本操作系统。
- 不同机制造就不同特性,适用于不同场景。
虚拟机 | 容器 |
重量级 | 轻量级 |
性能有限 | 本机性能 |
每个VM都在自己的OS中运行 | 所有容器共享主机操作系统 |
硬件级虚拟化 | 操作系统虚拟化 |
启动时间(以分钟为单位) | 启动时间(以毫秒为单位) |
分配所需的内存 | 需要更少的内存空间 |
完全隔离,因此更安全 | 进程级隔离,可能不太安全 |
云容器服务
目前市场上的云服务商提供多类云容器服务,比如
- 云容器引擎服务:用户管理完整的K8s集群。
- 弹性云容器实例服务:或称serverless容器服务,用户无需管理K8s集群,按需创建容器实例。
- 容器镜像服务:global镜像仓库。
- 跨云容器服务:跨云、云上云下混合部署K8s集群。
- ……
理解
产品和开源:
- 产品会按照业务场景的逻辑组合技术能力,让用户可以按照业务逻辑使用相应技术,比如弹性云主机服务创建虚机的操作步骤:配置A、B、C——>创建;openstack创建虚机的操作步骤:创建系统盘——>创建VM——>桥接网络——>……
- 产品会根据底层硬件进行组件的调优,量化性能指标,比如云硬盘IO……
- 云容器引擎服务就是云服务商的K8s最佳实践。
天翼云容器引擎服务交付
交付方案的重点在于服务配置根据业务需求的细化,因此本文着重于服务特性与业务需求的匹配,而不是组件原理分析。
云容器引擎服务概述
是什么?
云容器引擎服务提供高度可扩展的、高性能的企业级K8s集群。
可以解决什么问题?
借助云容器引擎,您可以在云上轻松部署、管理和扩展容器化应用程序。
怎么用?
您可以通过控制台、Kubectl命令行、K8s API使用云容器引擎服务。
版本选择
天翼云容器服务分为合营版本和自研版本:
合营版本目前支持K8s版本1.17、1.19,自研版本目前支持K8s版本1.18、预计二季度支持1.20。
合营版本与自研版本目前在容器集群部署工具的可视化上有差异,合营版本使用控制台图形界面自动部署,自研版本使用ansible脚本部署,但它们在集群部署时的配置上需要考虑的因素是一样的。
云容器引擎服务架构

云容器服务引擎服务安装K8s基本组件,集群主机理论上可以是弹性云主机,可以是裸金属,集群主机分为Master节点和Node节点,一般地:Master节点部署控制面组件,Node节点运行容器运行时(Docker、containerd、CRI-O……)。
集群规模
集群是运行 Kubernetes 代理的、 由控制平面管理的一组 节点(物理机或虚拟机)。 Kubernetes v1.23 支持的最大节点数为 5000。 更具体地说,Kubernetes旨在适应满足以下所有标准的配置:
每个节点的 Pod 数量不超过 110 节点数不超过 5000 Pod 总数不超过 150000 容器总数不超过 300000
节点规模 | Master规格 |
1~5个节点 | 4核8GB |
6~20个节点 | 4核16GB |
21~100个节点 | 8核32GB |
100~200个节点 | 16核64GB |
高可用设计

一般地:集群控制平面可以选择单控制平面或者高可用:3 Master HA高可用,当其中某个或者两个Master节点故障时,集群依然可用,从而保障业务高可用。
集群内节点和工作负载支持跨可用区(AZ)部署,保证业务系统在主机故障、机房中断、自然灾害等情况下可持续运行,获得生产环境的高稳定性,实现业务系统零中断。
对于高可用设计,实施过程需要主机跨AZ创建。
组网&网络插件选择
容器网络以Node网络为基础,通过网络插件实现,Node网络默认是学习不到容器地址的,所以容器流量需要通过网络组件在Node网络穿越,穿越方式分为两种:
Underlay方式:Flannel Host-gateway、Calico BGP……
- 网络组件通过对Node网络增加自定义路由,使得容器流量可以直接在Node网络转发。一般地,Underlay方式建议集群部署在同一子网,这样容器流量只需要在出Node时进行一次路由(在Node host里添加其他Node地址路由规则)即可转发到其他Node。如果要进一步跨子网或者跨VPC,则需要在VPC路由表添加规则,而这个操作在很多云服务上是不允许的,比如AWS允许Calico BGP修改VPC路由,Azure则不允许。
- 这种方式网络性能无损耗。
Overlay方式:Flannel VXLAN、Calico IPIP……
- 网络组件通过在Node网络上构建overlay网络,使得容器可以在overlay网络通信,Node网络要求三层互通即可。
- 这种方式由于引入overlay封装,网络性能有一定损耗。
根据这些容器网络方案,我们可能会遇到这些组网
子网内部署:根据性能需求或者后续扩展需要,可以选择Underlay方式或者Overlay方式。
跨子网:一般选择Overlay方式。
跨VPC:一般选择Overlay方式。
部署
图形界面or脚本。
进阶课题
可选组件
etcd:兼具一致性和高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库,默认部署在Master节点,可选独立部署。
CoreDNS:CoreDNS是一个灵活可扩展的 DNS 服务器,可以作为 Kubernetes 集群 DNS。
Ingress:一种 API 对象,其中定义了一些规则使得集群中的 服务可以从集群外访问。
Prometheus:kubernetes-promethues用于监控kubernetes集群。
Harbor:一个用于存储和分发Docker镜像的企业级Registry服务器。
istio:对应用是透明的,不需要改动任何服务代码就可以实现透明的服务治理,旨在解决大量微服务的发现、连接、管理、监控以及安全等问题。
这里暂不详解组件的原理与实践,它应该是解决方案的一部分,依据客户需要决定组件的选择。
业务迁移(业务上容器)
除了K8s,对于微服务框架、容器化应用云服务商也在持续产品化,也将持续成为交付重点。
微服务框架:Spring Boot、Spring Cloud、Dubbo……
容器化应用:安全容器、容器化数据库……
- Author:NotionNext
- URL:https://tangly1024.com/article/11140ef0-3786-801d-ad29-f68a2725f1e4
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts