在学习k8s之前,必须先了解 Kubernetes中的重要概念,它们是组成 Kubernetes 集群的基石。(参考Kubernetes权威指南)
Kubernetes 里的Master指的是集群的控制节点, 每个Kubernetes 集群里至少需要有一个Master节点负责整个集群的管理和控制,基本上Kubernetes的所有控制命令都发给它,它来负责具体的执行过程,我们后面执行的所有命令基本都是在Master节点上运行。为了实现高可用,可以运行多个Master。
Master节点上运行着以下一组关键进程。
Node 的职责是运行各种容器应用。Node 由 Master 管理,Node 上有相应的服务负责监控并汇报容器的状态,并根据 Master 的要求管理容器的生命周期。Node 可以是物理机或者是虚拟机,可以是Windows或者是Linux的操作系统。Master节点也可以充当为node节点,然后部署服务。
Node运行着一些关键进程:
我们可以执行下述命令查看集群中有多少个Node(master节点也算是node节点中的一种):
[root@k8s-m1 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-m1 Ready master 111d v1.19.16
k8s-m2 Ready master 111d v1.19.16
k8s-m3 Ready master 111d v1.19.16
#查看node的详细信息
[root@k8s-m1 ~]# kubectl describe node k8s-m1
Name: k8s-m1
Roles: master
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
kubernetes.io/arch=amd64
kubernetes.io/hostname=k8s-m1
kubernetes.io/os=linux
node-role.kubernetes.io/master=
Annotations: kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
node.alpha.kubernetes.io/ttl: 0
projectcalico.org/IPv4Address: 192.168.2.140/24
projectcalico.org/IPv4IPIPTunnelAddr: 10.244.42.151
volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp: Mon, 06 Mar 2023 10:27:18 +0800
Taints: <none>
Unschedulable: false
Lease:
HolderIdentity: k8s-m1
AcquireTime: <unset>
RenewTime: Sun, 25 Jun 2023 15:58:26 +0800
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
NetworkUnavailable False Wed, 21 Jun 2023 14:54:23 +0800 Wed, 21 Jun 2023 14:54:23 +0800 CalicoIsUp Calico is running on this node
MemoryPressure False Sun, 25 Jun 2023 15:56:18 +0800 Mon, 08 May 2023 15:33:54 +0800 KubeletHasSufficientMemory kubelet has sufficient memory available
DiskPressure False Sun, 25 Jun 2023 15:56:18 +0800 Wed, 21 Jun 2023 11:13:07 +0800 KubeletHasNoDiskPressure kubelet has no disk pressure
PIDPressure False Sun, 25 Jun 2023 15:56:18 +0800 Mon, 08 May 2023 15:33:54 +0800 KubeletHasSufficientPID kubelet has sufficient PID available
Ready True Sun, 25 Jun 2023 15:56:18 +0800 Mon, 19 Jun 2023 10:58:37 +0800 KubeletReady kubelet is posting ready status
Addresses:
InternalIP: 192.168.2.140
Hostname: k8s-m1
Capacity:
cpu: 16
ephemeral-storage: 38815216Ki
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 8007188Ki
pods: 110
Allocatable:
cpu: 16
ephemeral-storage: 35772103007
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 7904788Ki
pods: 110
System Info:
Machine ID: df2da3c566ed497795d970fc58760acd
System UUID: 420948D8-763D-6A67-4414-58ECF43AD89C
Boot ID: 3b3cc5df-90ce-44df-add0-d4e7a4f07869
Kernel Version: 3.10.0-957.el7.x86_64
OS Image: CentOS Linux 7 (Core)
Operating System: linux
Architecture: amd64
Container Runtime Version: docker://19.3.15
Kubelet Version: v1.19.16
Kube-Proxy Version: v1.19.16
PodCIDR: 10.244.2.0/24
PodCIDRs: 10.244.2.0/24
Non-terminated Pods: (6 in total)
Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits AGE
--------- ---- ------------ ---------- --------------- ------------- ---
kube-system calico-node-cgffm 250m (1%) 0 (0%) 0 (0%) 0 (0%) 222d
kube-system kube-apiserver-k8s-m1 250m (1%) 0 (0%) 0 (0%) 0 (0%) 111d
kube-system kube-controller-manager-k8s-m1 200m (1%) 0 (0%) 0 (0%) 0 (0%) 111d
kube-system kube-proxy-dlw8r 0 (0%) 0 (0%) 0 (0%) 0 (0%) 45d
kube-system kube-scheduler-k8s-m1 100m (0%) 0 (0%) 0 (0%) 0 (0%) 111d
metallb-system speaker-t44hq 0 (0%) 0 (0%) 0 (0%) 0 (0%) 4d1h
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 800m (5%) 0 (0%)
memory 0 (0%) 0 (0%)
ephemeral-storage 0 (0%) 0 (0%)
hugepages-1Gi 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)
Events: <none>
说明:
上述命令展示了Node的如下关键信息。
Node基本信息:名称、标签、创建时间等。
Node当前的运行状态,Node启动以后会做一系列的自检工作,比如磁盘是否满了,如果满了就标注OutOfDisk=True,否则继续检查内存是否不足(如果内存不足,就标注MemoryPressure=True),最后一切正常,就设置为Ready状态(Ready=True),该状态表示Node处于健康状态,Master将可以在其上调度新的任务了(如启动Pod)。
Node的主机地址与主机名。
Node上的资源总量:描述Node可用的系统资源,包括CPU、内存数量、最大可调度Pod数量等,注意到目前Kubernetes已经支持GPU资源分配了(alpha.kubernetes.io/nvidia-gpu=0)。
Node可分配资源量:描述Node当前可用于分配等资源量。
主机系统信息:包括主机等唯一标识UUID、Linux kernel版本号、操作系统类型与版本、Kubernetes版本号、kubelet与kube-proxy的版本号等。
当前正在运行等Pod列表概要信息。
已分配的资源使用概要信息,例如资源申请的最低、最大允许使用量占系统总量等百分比。
Node相关的Event信息。
1.节点调度:不可调度kubectl cordon k8s-m3 / 可调度kubectl uncordon k8s-m3
2.驱逐节点:kubectl drain k8s-m3 --delete-local-data --force --ignore-daemonsets
3.删除kubectl delete node k8s-m3
更多内容请参考《kubernetes权威指南》
更多关于kubernetes的知识分享,请前往博客主页。编写过程中,难免出现差错,敬请指出