Master
集群控制节点,负责整个集群的管理和控制;
通常占据一个独立服务器
关键进程有:
- Kubernates API Server(kube-apiserver)
Kubernates 提供其所有资源增删改查等操作的唯一入口
- Kubernates Controller Manager(kube-controller-manager)
Kubernates 里所有资源对象的自动化控制中心(大总管)
- Kubernates Sheduler(kube-scheduler)
负责资源调度(Pod调度)的进程
Master节点上通常还需要部署 etcd 服务,因为Kubernates里的所有资源对象的数据都被保存在 etcd 中。
Node
作为Kubernate集群中的工作负载节点,每个Node都会被Master分配一些工作负载(Docker容器),当某个Node宕机时,其上的工作负载会被Master自动转移到其他节点上。
关键进程有:
-
kubelet: 负责Pod对应容器的创建、启停等任务,同时与Master密切协作,实现集群管理的基本功能。
-
kube-proxy: 实现Kubernates Service 的通信与负载均衡机制的重要组件。
-
Docker Engine(docker): Docker引擎,负责本机容器的创建和管理工作
在默认情况先,kubelet会向Master注册自己,这也是Kubernates推荐的Node管理方式。
一旦Node被纳入集群管理范围,kubelet进程就会定时向Master汇报自身情况,例如操作系统、Docker版本、机器的CPU和内存情况,以及当前有哪些Pod在运行等,这样Master就可以获得么个Node的资源使用情况,并实现高效均衡的资源调度策略
而某个Node在指定时间不上报信息时,会被Master判定为“失联”,Node的状态会被标记为不可用(Not Ready),随后Master会触发“工作负载大转移”的自动流程。
常用命令
- kubectl get nodes 查看集群中有多少节点
[root@localhost ~]# kubectl get nodes
NAME STATUS AGE
127.0.0.1 Ready 179d
- kubectl describe 查看某个资源的详细信息
[root@localhost ~]# kubectl describe node '127.0.0.1'
Name: 127.0.0.1
Role:
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
kubernetes.io/hostname=127.0.0.1
Taints: <none>
CreationTimestamp: Fri, 24 Jul 2020 16:37:17 +0800
Phase:
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
OutOfDisk False Wed, 20 Jan 2021 22:06:12 +0800 Tue, 22 Dec 2020 02:01:37 +0800 KubeletHasSufficientDisk kubelet has sufficient disk space available
MemoryPressure False Wed, 20 Jan 2021 22:06:12 +0800 Fri, 24 Jul 2020 16:37:17 +0800 KubeletHasSufficientMemory kubelet has sufficient memory available
DiskPressure False Wed, 20 Jan 2021 22:06:12 +0800 Fri, 24 Jul 2020 16:37:17 +0800 KubeletHasNoDiskPressure kubelet has no disk pressure
Ready True Wed, 20 Jan 2021 22:06:12 +0800 Tue, 22 Dec 2020 02:01:37 +0800 KubeletReady kubelet is posting ready status
Addresses: 127.0.0.1,127.0.0.1,127.0.0.1
Capacity:
alpha.kubernetes.io/nvidia-gpu: 0
cpu: 1
memory: 1883496Ki
pods: 110
Allocatable:
alpha.kubernetes.io/nvidia-gpu: 0
cpu: 1
memory: 1883496Ki
pods: 110
System Info:
Machine ID: f0f31005fb5a436d88e3c6cbf54e25aa
System UUID: 90037F93-9513-42CA-BD56-CCDD743D4955
Boot ID: 8e41ded5-6826-411e-ac68-4683e693148d
Kernel Version: 3.10.0-693.2.2.el7.x86_64
OS Image: CentOS Linux 7 (Core)
Operating System: linux
Architecture: amd64
Container Runtime Version: docker://1.13.1
Kubelet Version: v1.5.2
Kube-Proxy Version: v1.5.2
ExternalID: 127.0.0.1
Non-terminated Pods: (6 in total)
Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits
--------- ---- ------------ ---------- --------------- -------------
default mysql-k3kb8 0 (0%) 0 (0%) 0 (0%) 0 (0%)
default myweb-76cct 0 (0%) 0 (0%) 0 (0%) 0 (0%)
default myweb-7kt5x 0 (0%) 0 (0%) 0 (0%) 0 (0%)
default myweb-fgvvw 0 (0%) 0 (0%) 0 (0%) 0 (0%)
default myweb-mw9h4 0 (0%) 0 (0%) 0 (0%) 0 (0%)
default myweb-qcq7v 0 (0%) 0 (0%) 0 (0%) 0 (0%)
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.
CPU Requests CPU Limits Memory Requests Memory Limits
------------ ---------- --------------- -------------
0 (0%) 0 (0%) 0 (0%) 0 (0%)
No events.