K8s基础一
Kubernetes 架构
Kubernetes 背后的架构概念。
Kubernetes 集群由一个控制平面和一组用于运行容器化应用的工作机器组成, 这些工作机器称作节点(Node)。每个集群至少需要一个工作节点来运行 Pod。
工作节点托管着组成应用负载的 Pod。控制平面管理集群中的工作节点和 Pod。 在生产环境中,控制平面通常跨多台计算机运行,而一个集群通常运行多个节点,以提供容错和高可用。
本文概述了构建一个完整且可运行的 Kubernetes 集群所需的各种组件。
运行该命令后,输出通常包含以下列:
NAME:节点的名称
STATUS:节点的状态(如 Ready 或 NotReady)
ROLES:节点的角色(如 control-plane 或 worker)
AGE:节点加入集群的时间
VERSION:节点上 kubelet 的版本
student@vms21:~$ kubectl get nodes // 查看集群节点
NAME STATUS ROLES AGE VERSION
vms21.rhce.cc Ready control-plane 2y203d v1.32.1
vms22.rhce.cc NotReady <none> 2y203d v1.32.1
student@vms21:~$
kubectl describe nodes
更详细的节点信息,可以使用 kubectl describe nodes 命令。
student@vms21:~$ kubectl describe nodes //查看更详细集群节点
Name: vms21.rhce.cc
Roles: control-plane
Labels: beta.kubernetes.io/arch=amd64beta.kubernetes.io/os=linuxkubernetes.io/arch=amd64kubernetes.io/hostname=vms21.rhce.cckubernetes.io/os=linuxnode-role.kubernetes.io/control-plane=node.kubernetes.io/exclude-from-external-load-balancers=
Annotations: kubeadm.alpha.kubernetes.io/cri-socket: unix:///var/run/containerd/containerd.sock
查看某个Node节点的详细信息
Node的基本信息:名称、标签、创建时间等。
Node当前的运行状态:Node启动后会做一系列自检工作,比如磁盘空间是否不足(DiskPressure)、内存是否不足(MemoryPressure)、网络是否正常(NetworkUnavailable)、PID资源是否充足(PIDPressure)。在一切正常时才设置Node为Ready状态(Ready=True),表示Node处于健康状态,Master就可以在其上调度新的任务了(如启动Pod)。
Node的主机地址与主机名。
Node上的资源数量:描述Node可用的系统资源,包括CPU、内存数量、最大可调度Pod数量等。
Node可分配的资源量:描述Node当前可用于分配的资源量。
主机系统信息:包括主机ID、系统UUID、Linux Kernel版本号、操作系统类型与版本、Docker版本号、kubelet与kube-proxy的版本号等。
当前运行的Pod列表概要信息。
已分配的资源使用概要信息,例如资源申请的最小、最大允许使用量占系统总量的百分比。
Node相关的Event信息。
student@vms21:~$ kubectl describe nodes vms21.rhce.cc
Name: vms21.rhce.cc
Roles: control-plane
Labels: beta.kubernetes.io/arch=amd64beta.kubernetes.io/os=linuxkubernetes.io/arch=amd64kubernetes.io/hostname=vms21.rhce.cckubernetes.io/os=linuxnode-role.kubernetes.io/control-plane=node.kubernetes.io/exclude-from-external-load-balancers=
Annotations: kubeadm.alpha.kubernetes.io/cri-socket: unix:///var/run/containerd/containerd.socknode.alpha.kubernetes.io/ttl: 0projectcalico.org/IPv4Address: 192.168.26.21/24projectcalico.org/IPv4IPIPTunnelAddr: 10.244.43.192volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp: Sat, 12 Nov 2022 11:12:11 +0800
Taints: node-role.kubernetes.io/control-plane:NoSchedule
Unschedulable: false
Lease:HolderIdentity: vms21.rhce.ccAcquireTime: <unset>RenewTime: Tue, 03 Jun 2025 09:19:50 +0800
Conditions:Type Status LastHeartbeatTime LastTransitionTime Reason Message---- ------ ----------------- ------------------ ------ -------NetworkUnavailable False Tue, 03 Jun 2025 08:17:18 +0800 Tue, 03 Jun 2025 08:17:18 +0800 CalicoIsUp Calico is running on this nodeMemoryPressure False Tue, 03 Jun 2025 09:19:47 +0800 Sun, 24 Mar 2024 08:36:54 +0800 KubeletHasSufficientMemory kubelet has sufficient memory availableDiskPressure False Tue, 03 Jun 2025 09:19:47 +0800 Sun, 24 Mar 2024 08:36:54 +0800 KubeletHasNoDiskPressure kubelet has no disk pressurePIDPressure False Tue, 03 Jun 2025 09:19:47 +0800 Sun, 24 Mar 2024 08:36:54 +0800 KubeletHasSufficientPID kubelet has sufficient PID availableReady True Tue, 03 Jun 2025 09:19:47 +0800 Sat, 01 Jun 2024 23:00:41 +0800 KubeletReady kubelet is posting ready status
Addresses:InternalIP: 192.168.26.21Hostname: vms21.rhce.cc
Capacity:cpu: 2ephemeral-storage: 101633008Kihugepages-1Gi: 0hugepages-2Mi: 0memory: 3982424Kipods: 110
Allocatable:
查看default命名空间下的pod,不指定命名空间查询时就是查的default命名空间下的
student@vms21:~$ kubectl get pod
NAME READY STATUS RESTARTS AGE
synergy-leverager-59c54694c9-7d7f4 0/1 Pending 0 60m
web-dep-5c7bf8cb6-rzztd 0/1 Pending 0 60m
student@vms21:~$
查看kube-system命名空间下的pod
student@vms21:~$ kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-8688f858d6-28547 0/1 Pending 0 62m
calico-kube-controllers-8688f858d6-z7mhj 1/1 Terminating 13 (2d15h ago) 86d
calico-node-mlzk2 1/1 Running 16 (2d15h ago) 436d
calico-node-q2xb6 0/1 Running 15 (67m ago) 436d
coredns-6766b7b6bb-8zdgt 1/1 Terminating 10 (2d15h ago) 86d
coredns-6766b7b6bb-vmr7n 1/1 Running 9 (67m ago) 86d
coredns-6766b7b6bb-xfq28 1/1 Running 0 62m
etcd-vms21.rhce.cc 1/1 Running 10 (67m ago) 86d
kube-apiserver-vms21.rhce.cc 1/1 Running 12 (67m ago) 86d
kube-controller-manager-vms21.rhce.cc 1/1 Running 10 (67m ago) 86d
kube-proxy-jlqh5 1/1 Running 9 (67m ago) 86d
kube-proxy-xhbsx 1/1 Running 11 (2d15h ago) 86d
kube-scheduler-vms21.rhce.cc 1/1 Running 11 (67m ago) 86d
metrics-server-589b9d98f6-mkg4h 1/1 Terminating 10 (2d15h ago) 86d
metrics-server-589b9d98f6-nmgft 0/1 Pending 0 62m
student@vms21:~$
ReplicaSet
简称rs,是deploy与pod的关联者。
pod的命名也是以deploy对应的rs对象名称为前缀的,可以很清晰地表明了一个rs对象创建了哪些Pod,经常在滚动升级时运维故障排查。
student@vms21:~$ kubectl get rs
NAME DESIRED CURRENT READY AGE
synergy-leverager-59c54694c9 1 1 0 78d
web-dep-5c7bf8cb6 1 1 0 86d
student@vms21:~$