基本架构
彩色版
基本概念
Master
master节点运行着集群管理相关的一组进程:
etcd
kube-apiserver
kube-controller-manager
scheduler
这些进程实现了整个集群的资源管理、Pod调度、弹性伸缩、安全控制、系统监控、纠错等管理功能。
Node(节点
)
之前的版本叫做Minion,可以是一台物理主机,也可以是一台虚拟机。
每个Node上运行用于启动和管理Pod的服务Kubelet
运行Kubelet、kube-proxy、docker daemon等服务进程
相关命令
kubectl get node
NAME LABELS STATUS AGE
xxx kubernetes.io/hostname=xxxx Ready 3h
127.0.0.1 kubernetes.io/hostname=127.0.0.1 NotReady 3h
kubectl describe node xxx
Pod(最小调度单元、服务隔离
)
一个Pod可以被一个容器化的环境看做是应用层的逻辑宿主机(Logical Host),通常一个Node中可以运行几百个Pod,每个Pod中有多个容器应用,同一个Pod中的多个容器应用通常是紧密耦合的(
相当于多个业务容器组成的一个逻辑虚拟机
)。每个Pod中有一个特殊的Pause容器,其他的成为业务容器,这些业务容器共享Pause容器的网络栈以及Volume挂载卷,因而他们之间的通信及数据交互更为高效。
同一个pod中的业务容器共享如下资源:
PID命名空间(
不同应用程序可以看到其他应用程序的PID
)网络命名空间(
pod中多个容器可以访问同一个IP和端口范围
)IPC命名空间(
能够使用SystemV IPC或者POSIX消息队列进行通信
)UTS命名空间(
共享同一个主机名
)Volumes(
访问定义在pod级别的存储卷
)
Replication Controller(管理一组Pod
)
kubernetes通过RC中定义的Label筛选出对应的Pod实例并实时监控其状态和数量,如果实例数量少于定义的副本数量,则会根据RC中定义的Pod模板来创建一个新的Pod,然后Scheduler将此Pod调度到合适的Node上启动运行,直到Pod实例数量达到预定目标。这个过程完全是自动化的。
确保用户期望的Pod数量(创建或销毁Pod)
在线Pod数量调整
Service(一组提供相同服务的pod的对外访问接口
)
具有如下特征:
拥有一个唯一指定的名字
拥有一个虚拟IP和端口号
能够提供某种远程服务能力
被映射到提供这种服务能力的一组容器上
service的服务进程目前都基于socket通信方式对外提供服务。
kubernetes内置了透明的负载均衡以及故障恢复的机制。
Label(标签
)
解决service与pod之间的关联问题。kubernetes给每个pod贴上一个标签,然后给service定义定义标签选择器。
Scheduler(将Pod调度到Node上
)
将Pod调度到合适的Node上启动运行
Volume(容器共享存储卷
)
pod中能够被多个容器访问的共享目录,与pod同生命周期,但与容器的生命周期无关,当容器终止或重启时,volume中的数据不会丢失。
Namespace(命名空间
)
使用namespace来组织kubernetes的各种对象,可以实现用户的分组(多租户),对不同的租户还可以进行单独的资源设置和管理,是的整个集群的资源配置非常灵活。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。