k8s基礎-node


除了master kubernets集群中的其他機器被稱為node,node是kubernetes集群中的工作負載節點,每個node都會被master分配一些工作負載(docker容器),當某個node節點宕機,其上面的工作負載會被master自動轉移到其他的節點上。

每個node上都運行着以下關鍵進程

1.kubelet 負責pod對應的容器的創建,啟停等任務,同時與master密切協作,實現集群管理的基本功能。

2.kube-proxy 實現kubernetes,service的通訊與負載均衡機制的重要組件

3.docker engine:docker 引擎,負責本機的容器創建和管理

 

node在運行期間動態增加到kubernetes集群中,前提是在這個節點上已經正確安裝,配置和啟動上訴關鍵進程,在默認情況下,kubelet會向master注冊自己,這也是kubernetes推薦的node管理方式。一旦node被納入集群管理范圍,kubelet進程會定時向

master匯報自身的情況,例如操作系統,docker版本,機器的cpu和內存情況,以及當時有哪些pod在運行等。這樣master就可以獲知每個node的資源使用情況,並實現高效均衡的資源調度策略。而某個node在超過指定的時間不上報信息時,會被master判定

為失聯,node的狀態會被標記為不可用。NOT Ready,隨后master會觸發工作負載大轉移的自動流程。

 查看集群中有多少個node

[root@k8s-master1 ~]# kubectl get node 
NAME          STATUS                     ROLES    AGE     VERSION
k8s-master1   Ready,SchedulingDisabled   <none>   3d18h   v1.17.5
k8s-master2   Ready,SchedulingDisabled   <none>   3d18h   v1.17.5
k8s-master3   Ready,SchedulingDisabled   <none>   3d18h   v1.17.5
k8s-node1     Ready                      <none>   39d     v1.17.5
k8s-node2     Ready                      <none>   39d     v1.17.5

通過 kubectl describe node <node_name> 查看某個node的詳細信息

[root@k8s-master1 ~]# kubectl describe node k8s-node1
Name:               k8s-node1
Roles:              <none>
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/os=linux
                    kubernetes.io/arch=amd64
                    kubernetes.io/hostname=k8s-node1
                    kubernetes.io/os=linux
Annotations:        node.alpha.kubernetes.io/ttl: 0
                    projectcalico.org/IPv4Address: 10.23.215.243/24
                    volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp:  Wed, 27 May 2020 17:07:00 +0800
Taints:             <none>
Unschedulable:      false
Lease:
  HolderIdentity:  k8s-node1
  AcquireTime:     <unset>
  RenewTime:       Mon, 06 Jul 2020 10:56:42 +0800
Conditions:
  Type                 Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
  ----                 ------  -----------------                 ------------------                ------                       -------
  NetworkUnavailable   False   Wed, 01 Jul 2020 17:44:09 +0800   Wed, 01 Jul 2020 17:44:09 +0800   CalicoIsUp                   Calico is running on this node
  MemoryPressure       False   Mon, 06 Jul 2020 10:56:42 +0800   Wed, 01 Jul 2020 17:44:04 +0800   KubeletHasSufficientMemory   kubelet has sufficient memory available
  DiskPressure         False   Mon, 06 Jul 2020 10:56:42 +0800   Wed, 01 Jul 2020 17:44:04 +0800   KubeletHasNoDiskPressure     kubelet has no disk pressure
  PIDPressure          False   Mon, 06 Jul 2020 10:56:42 +0800   Wed, 01 Jul 2020 17:44:04 +0800   KubeletHasSufficientPID      kubelet has sufficient PID available
  Ready                True    Mon, 06 Jul 2020 10:56:42 +0800   Wed, 01 Jul 2020 17:44:04 +0800   KubeletReady                 kubelet is posting ready status
Addresses:
  InternalIP:  10.23.215.243
  Hostname:    k8s-node1
Capacity:
  cpu:                4
  ephemeral-storage:  36805060Ki
  hugepages-2Mi:      0
  memory:             3880352Ki
  pods:               110
Allocatable:
  cpu:                4
  ephemeral-storage:  33919543240
  hugepages-2Mi:      0
  memory:             3777952Ki
  pods:               110
System Info:
  Machine ID:                 778c9b59aa8743a7814bfcd85012ac07
  System UUID:                422E25C4-CE82-7099-DC72-39D23474DB5F
  Boot ID:                    f1186766-1e81-419a-8cfb-5dabd532d543
  Kernel Version:             3.10.0-1062.4.1.el7.x86_64
  OS Image:                   CentOS Linux 7 (Core)
  Operating System:           linux
  Architecture:               amd64
  Container Runtime Version:  docker://18.9.9
  Kubelet Version:            v1.17.5
  Kube-Proxy Version:         v1.17.5
PodCIDR:                      10.244.0.0/24
PodCIDRs:                     10.244.0.0/24
Non-terminated Pods:          (8 in total)
  Namespace                   Name                                       CPU Requests  CPU Limits  Memory Requests  Memory Limits  AGE
  ---------                   ----                                       ------------  ----------  ---------------  -------------  ---
  default                     web-5c987b8447-6b6bx                       0 (0%)        0 (0%)      0 (0%)           0 (0%)         3d17h
  ingress-nginx               nginx-ingress-controller-z9clj             0 (0%)        0 (0%)      0 (0%)           0 (0%)         39d
  kube-system                 calico-kube-controllers-fdf7dfdf4-c565p    0 (0%)        0 (0%)      0 (0%)           0 (0%)         39d
  kube-system                 calico-kube-controllers-fdf7dfdf4-lfcgv    0 (0%)        0 (0%)      0 (0%)           0 (0%)         39d
  kube-system                 calico-node-8pcgz                          250m (6%)     0 (0%)      0 (0%)           0 (0%)         39d
  kube-system                 coredns-66cd74bdd6-qd9kp                   100m (2%)     0 (0%)      70Mi (1%)        170Mi (4%)     3d20h
  kube-system                 metrics-server-fb7c8cc6d-gfrks             0 (0%)        0 (0%)      0 (0%)           0 (0%)         3d19h
  kube-system                 nfs-client-provisioner-644c45ff78-rn7q5    0 (0%)        0 (0%)      0 (0%)           0 (0%)         3d20h
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource           Requests   Limits
  --------           --------   ------
  cpu                350m (8%)  0 (0%)
  memory             70Mi (1%)  170Mi (4%)
  ephemeral-storage  0 (0%)     0 (0%)
Events:              <none>

上述命令展示了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信息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM