网站什么时候恢复彩色/手机搜索引擎排行榜
在学习k8s之前,必须先了解 Kubernetes中的重要概念,它们是组成 Kubernetes 集群的基石。(参考Kubernetes权威指南)
一、Master
Kubernetes 里的Master指的是集群的控制节点, 每个Kubernetes 集群里至少需要有一个Master节点负责整个集群的管理和控制,基本上Kubernetes的所有控制命令都发给它,它来负责具体的执行过程,我们后面执行的所有命令基本都是在Master节点上运行。为了实现高可用,可以运行多个Master。
Master节点上运行着以下一组关键进程。
- Kubernetes API Server(kube-apiserver), 提供 HTTP Rest 接口的关键服务程序,kubernets里所有资源增、删、改、查等操作的唯一入口,也是集群控制的入口进程。
- Kubernetes Controller Manager(kube-controller-manager),所有资源对象的自动化控制中心可以理解为资源对象的大总管。
- Kubernetes Scheduler(kube-scheduler),资源调度(pod)的进程,相当于调度室。
- etcd Server,Kubernetes 里所有资源对象的数据全部是保持在etcd中,etcd是一种key-value类型的数据库
二、Node
Node 的职责是运行各种容器应用。Node 由 Master 管理,Node 上有相应的服务负责监控并汇报容器的状态,并根据 Master 的要求管理容器的生命周期。Node 可以是物理机或者是虚拟机,可以是Windows或者是Linux的操作系统。Master节点也可以充当为node节点,然后部署服务。
Node运行着一些关键进程:
- kubelet:负责Pod对应的容器的创建、启停等任务,同时与Master节点密切协作,实现集群管理的基本功能。
- kube-proxy:实现Kubernetes Service的通信与负载均衡机制的重要组件。
- Docker Engine (docker):Docker引擎,负责本机的容器创建和管理工作。
我们可以执行下述命令查看集群中有多少个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=amd64beta.kubernetes.io/os=linuxkubernetes.io/arch=amd64kubernetes.io/hostname=k8s-m1kubernetes.io/os=linuxnode-role.kubernetes.io/master=
Annotations: kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.socknode.alpha.kubernetes.io/ttl: 0projectcalico.org/IPv4Address: 192.168.2.140/24projectcalico.org/IPv4IPIPTunnelAddr: 10.244.42.151volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp: Mon, 06 Mar 2023 10:27:18 +0800
Taints: <none>
Unschedulable: false
Lease:HolderIdentity: k8s-m1AcquireTime: <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 nodeMemoryPressure False Sun, 25 Jun 2023 15:56:18 +0800 Mon, 08 May 2023 15:33:54 +0800 KubeletHasSufficientMemory kubelet has sufficient memory availableDiskPressure False Sun, 25 Jun 2023 15:56:18 +0800 Wed, 21 Jun 2023 11:13:07 +0800 KubeletHasNoDiskPressure kubelet has no disk pressurePIDPressure False Sun, 25 Jun 2023 15:56:18 +0800 Mon, 08 May 2023 15:33:54 +0800 KubeletHasSufficientPID kubelet has sufficient PID availableReady 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.140Hostname: k8s-m1
Capacity:cpu: 16ephemeral-storage: 38815216Kihugepages-1Gi: 0hugepages-2Mi: 0memory: 8007188Kipods: 110
Allocatable:cpu: 16ephemeral-storage: 35772103007hugepages-1Gi: 0hugepages-2Mi: 0memory: 7904788Kipods: 110
System Info:Machine ID: df2da3c566ed497795d970fc58760acdSystem UUID: 420948D8-763D-6A67-4414-58ECF43AD89CBoot ID: 3b3cc5df-90ce-44df-add0-d4e7a4f07869Kernel Version: 3.10.0-957.el7.x86_64OS Image: CentOS Linux 7 (Core)Operating System: linuxArchitecture: amd64Container Runtime Version: docker://19.3.15Kubelet Version: v1.19.16Kube-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%) 222dkube-system kube-apiserver-k8s-m1 250m (1%) 0 (0%) 0 (0%) 0 (0%) 111dkube-system kube-controller-manager-k8s-m1 200m (1%) 0 (0%) 0 (0%) 0 (0%) 111dkube-system kube-proxy-dlw8r 0 (0%) 0 (0%) 0 (0%) 0 (0%) 45dkube-system kube-scheduler-k8s-m1 100m (0%) 0 (0%) 0 (0%) 0 (0%) 111dmetallb-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信息。
**kubernetes集群中节点管理
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的知识分享,请前往博客主页。编写过程中,难免出现差错,敬请指出