ãã®ããŒãžã«èšèŒãããŠããæ å ±ã¯å€ãå¯èœæ§ããããŸã
ãã®ããŒãžã®æŽæ°æ¥ã¯è±èªçãããå€ããããèšèŒãããŠããæ å ±ãå€ãå¯èœæ§ããããŸããææ°ã®æ å ±ãã芧ã«ãªãããæ¹ã¯è±èªçã®ããŒãžãã芧ãã ãã: Troubleshooting Clusters
ã¯ã©ã¹ã¿ãŒã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
ãã®ããã¥ã¡ã³ãã¯ã¯ã©ã¹ã¿ãŒã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã«é¢ãããã®ã§ãããªããçµéšããŠããåé¡ã®æ ¹æ¬åå ãšããŠãã¢ããªã±ãŒã·ã§ã³ããã§ã«é€å€ããŠããããšãåæãšããŠããŸãã ã¢ããªã±ãŒã·ã§ã³ã®ãããã°ã®ã³ãã¯ãã¢ããªã±ãŒã·ã§ã³ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã¬ã€ããã芧ãã ããã ãŸãããã©ãã«ã·ã¥ãŒãã£ã³ã°ããã¥ã¡ã³ãã«ã詳ããæ å ±ããããŸãã
kubectlã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã«ã€ããŠã¯ãkubectlã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ãåç §ããŠãã ããã
ã¯ã©ã¹ã¿ãŒã®ãªã¹ãã¢ãã
ã¯ã©ã¹ã¿ãŒã§æåã«ãããã°ããã®ã¯ãããŒãããã¹ãŠæ£ããç»é²ãããŠãããã©ããã§ãã
以äžãå®è¡ããŸãã
kubectl get nodes
ãããŠãæåŸ
ããããŒãããã¹ãŠååšãããããããã¹ãŠ Ready
ç¶æ
ã§ããããšã確èªããŸãã
ã¯ã©ã¹ã¿ãŒå šäœã®å¥å šæ§ã«é¢ããè©³çŽ°ãªæ å ±ãåŸãã«ã¯ã以äžãå®è¡ããŸãã
kubectl cluster-info dump
äŸ: ããŠã³ãããã¯å°éäžèœãªããŒãã®ãããã°
ãããã°ãè¡ãéãããŒãã®ç¶æ
ãèŠãããšãæçšãªããšããããŸãã
ããšãã°ããã®ããŒãäžã§åäœããŠããPodãå¥åŠãªæåã瀺ããŠããå ŽåãããªãPodããã®ããŒãã«ã¹ã±ãžã¥ãŒã«ãããªãã®ããç¥ãããå Žåãªã©ã§ãã
Podãšåæ§ã«ãkubectl describe node
ãkubectl get node -o yaml
ã䜿çšããŠããŒãã«é¢ãã詳现æ
å ±ãååŸã§ããŸãã
äŸãã°ãããŒããããŠã³ããŠãã(ãããã¯ãŒã¯ããåæãããŠããããŸãã¯kubeletã忢ããŠåèµ·åããªããªã©)å Žåã«èŠãããç¶æ³ã¯ä»¥äžã®éãã§ãã
ããŒããNotReadyã§ããããšã瀺ãã€ãã³ãã«æ³šæãããŸããPodãåäœããŠããªãããšã«ã泚æããŠãã ãã(NotReadyç¶æ
ã5åéç¶ããšPodã¯è¿œãåºãããŸã)ã
kubectl get nodes
NAME STATUS ROLES AGE VERSION
kube-worker-1 NotReady <none> 1h v1.23.3
kubernetes-node-bols Ready <none> 1h v1.23.3
kubernetes-node-st6x Ready <none> 1h v1.23.3
kubernetes-node-unaj Ready <none> 1h v1.23.3
kubectl describe node kube-worker-1
Name: kube-worker-1
Roles: <none>
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
kubernetes.io/arch=amd64
kubernetes.io/hostname=kube-worker-1
kubernetes.io/os=linux
Annotations: kubeadm.alpha.kubernetes.io/cri-socket: /run/containerd/containerd.sock
node.alpha.kubernetes.io/ttl: 0
volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp: Thu, 17 Feb 2022 16:46:30 -0500
Taints: node.kubernetes.io/unreachable:NoExecute
node.kubernetes.io/unreachable:NoSchedule
Unschedulable: false
Lease:
HolderIdentity: kube-worker-1
AcquireTime: <unset>
RenewTime: Thu, 17 Feb 2022 17:13:09 -0500
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
NetworkUnavailable False Thu, 17 Feb 2022 17:09:13 -0500 Thu, 17 Feb 2022 17:09:13 -0500 WeaveIsUp Weave pod has set this
MemoryPressure Unknown Thu, 17 Feb 2022 17:12:40 -0500 Thu, 17 Feb 2022 17:13:52 -0500 NodeStatusUnknown Kubelet stopped posting node status.
DiskPressure Unknown Thu, 17 Feb 2022 17:12:40 -0500 Thu, 17 Feb 2022 17:13:52 -0500 NodeStatusUnknown Kubelet stopped posting node status.
PIDPressure Unknown Thu, 17 Feb 2022 17:12:40 -0500 Thu, 17 Feb 2022 17:13:52 -0500 NodeStatusUnknown Kubelet stopped posting node status.
Ready Unknown Thu, 17 Feb 2022 17:12:40 -0500 Thu, 17 Feb 2022 17:13:52 -0500 NodeStatusUnknown Kubelet stopped posting node status.
Addresses:
InternalIP: 192.168.0.113
Hostname: kube-worker-1
Capacity:
cpu: 2
ephemeral-storage: 15372232Ki
hugepages-2Mi: 0
memory: 2025188Ki
pods: 110
Allocatable:
cpu: 2
ephemeral-storage: 14167048988
hugepages-2Mi: 0
memory: 1922788Ki
pods: 110
System Info:
Machine ID: 9384e2927f544209b5d7b67474bbf92b
System UUID: aa829ca9-73d7-064d-9019-df07404ad448
Boot ID: 5a295a03-aaca-4340-af20-1327fa5dab5c
Kernel Version: 5.13.0-28-generic
OS Image: Ubuntu 21.10
Operating System: linux
Architecture: amd64
Container Runtime Version: containerd://1.5.9
Kubelet Version: v1.23.3
Kube-Proxy Version: v1.23.3
Non-terminated Pods: (4 in total)
Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits Age
--------- ---- ------------ ---------- --------------- ------------- ---
default nginx-deployment-67d4bdd6f5-cx2nz 500m (25%) 500m (25%) 128Mi (6%) 128Mi (6%) 23m
default nginx-deployment-67d4bdd6f5-w6kd7 500m (25%) 500m (25%) 128Mi (6%) 128Mi (6%) 23m
kube-system kube-proxy-dnxbz 0 (0%) 0 (0%) 0 (0%) 0 (0%) 28m
kube-system weave-net-gjxxp 100m (5%) 0 (0%) 200Mi (10%) 0 (0%) 28m
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 1100m (55%) 1 (50%)
memory 456Mi (24%) 256Mi (13%)
ephemeral-storage 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)
Events:
...
kubectl get node kube-worker-1 -o yaml
apiVersion: v1
kind: Node
metadata:
annotations:
kubeadm.alpha.kubernetes.io/cri-socket: /run/containerd/containerd.sock
node.alpha.kubernetes.io/ttl: "0"
volumes.kubernetes.io/controller-managed-attach-detach: "true"
creationTimestamp: "2022-02-17T21:46:30Z"
labels:
beta.kubernetes.io/arch: amd64
beta.kubernetes.io/os: linux
kubernetes.io/arch: amd64
kubernetes.io/hostname: kube-worker-1
kubernetes.io/os: linux
name: kube-worker-1
resourceVersion: "4026"
uid: 98efe7cb-2978-4a0b-842a-1a7bf12c05f8
spec: {}
status:
addresses:
- address: 192.168.0.113
type: InternalIP
- address: kube-worker-1
type: Hostname
allocatable:
cpu: "2"
ephemeral-storage: "14167048988"
hugepages-2Mi: "0"
memory: 1922788Ki
pods: "110"
capacity:
cpu: "2"
ephemeral-storage: 15372232Ki
hugepages-2Mi: "0"
memory: 2025188Ki
pods: "110"
conditions:
- lastHeartbeatTime: "2022-02-17T22:20:32Z"
lastTransitionTime: "2022-02-17T22:20:32Z"
message: Weave pod has set this
reason: WeaveIsUp
status: "False"
type: NetworkUnavailable
- lastHeartbeatTime: "2022-02-17T22:20:15Z"
lastTransitionTime: "2022-02-17T22:13:25Z"
message: kubelet has sufficient memory available
reason: KubeletHasSufficientMemory
status: "False"
type: MemoryPressure
- lastHeartbeatTime: "2022-02-17T22:20:15Z"
lastTransitionTime: "2022-02-17T22:13:25Z"
message: kubelet has no disk pressure
reason: KubeletHasNoDiskPressure
status: "False"
type: DiskPressure
- lastHeartbeatTime: "2022-02-17T22:20:15Z"
lastTransitionTime: "2022-02-17T22:13:25Z"
message: kubelet has sufficient PID available
reason: KubeletHasSufficientPID
status: "False"
type: PIDPressure
- lastHeartbeatTime: "2022-02-17T22:20:15Z"
lastTransitionTime: "2022-02-17T22:15:15Z"
message: kubelet is posting ready status. AppArmor enabled
reason: KubeletReady
status: "True"
type: Ready
daemonEndpoints:
kubeletEndpoint:
Port: 10250
nodeInfo:
architecture: amd64
bootID: 22333234-7a6b-44d4-9ce1-67e31dc7e369
containerRuntimeVersion: containerd://1.5.9
kernelVersion: 5.13.0-28-generic
kubeProxyVersion: v1.23.3
kubeletVersion: v1.23.3
machineID: 9384e2927f544209b5d7b67474bbf92b
operatingSystem: linux
osImage: Ubuntu 21.10
systemUUID: aa829ca9-73d7-064d-9019-df07404ad448
ãã°ã®ç¢ºèª
ä»ã®ãšãããã¯ã©ã¹ã¿ãŒãããæ·±ãæãäžããã«ã¯ãé¢é£ãããã·ã³ã«ãã°ã€ã³ããå¿
èŠããããŸãã
以äžã¯ãé¢é£ãããã°ãã¡ã€ã«ã®å Žæã§ãã
(systemdããŒã¹ã®ã·ã¹ãã ã§ã¯ã代ããã«journalctl
ã䜿ãå¿
èŠããããããããªãããšã«æ³šæããŠãã ãã)
ã³ã³ãããŒã«ãã¬ãŒã³ããŒã
/var/log/kube-apiserver.log
- APIã®æäŸãæ åœããAPIãµãŒããŒã®ãã°/var/log/kube-scheduler.log
- ã¹ã±ãžã¥ãŒãªã³ã°æ±ºå®è²¬ä»»è ã§ããã¹ã±ãžã¥ãŒã©ãŒã®ãã°/var/log/kube-controller-manager.log
- ã¹ã±ãžã¥ãŒãªã³ã°ãé€ããã»ãšãã©ã®Kubernetesçµã¿èŸŒã¿ã®ã³ã³ãããŒã©ãŒãå®è¡ããã³ã³ããŒãã³ãã®ãã°(ã¹ã±ãžã¥ãŒãªã³ã°ã¯kube-schedulerãæ åœããŸã)
ã¯ãŒã«ãŒããŒã
/var/log/kubelet.log
- ããŒãäžã§ã³ã³ããã®å®è¡ãæ åœããKubeletã®ãã°/var/log/kube-proxy.log
- ãµãŒãã¹ã®ããŒããã©ã³ã·ã³ã°ãæ ãKube Proxyã®ãã°
ã¯ã©ã¹ã¿ãŒé害ã¢ãŒãã®äžè¬çãªæŠèŠ
ããã¯ãåé¡ãçºçããå¯èœæ§ã®ããäºæãšãåé¡ã軜æžããããã«ã¯ã©ã¹ã¿ãŒã®ã»ããã¢ããã調æŽããæ¹æ³ã®äžå®å šãªãªã¹ãã§ãã
æ ¹æ¬çãªåå
- VMã®ã·ã£ããããŠã³
- ã¯ã©ã¹ã¿ãŒå ããŸãã¯ã¯ã©ã¹ã¿ãŒãšãŠãŒã¶ãŒéã®ãããã¯ãŒã¯ããŒãã£ã·ã§ã³
- KubernetesãœãããŠã§ã¢ã®ã¯ã©ãã·ã¥
- ããŒã¿ã®æå€±ãæ°žç¶çã¹ãã¬ãŒãž(GCE PDãAWS EBSããªã¥ãŒã ãªã©)ã®äœ¿çšäžèœ
- KubernetesãœãããŠã§ã¢ãã¢ããªã±ãŒã·ã§ã³ãœãããŠã§ã¢ã®èšå®ãã¹ãªã©ããªãã¬ãŒã¿ãŒã®ãã¹
å ·äœçãªã·ããªãª
- apiserver VMã®ã·ã£ããããŠã³ãŸãã¯apiserverã®ã¯ã©ãã·ã¥
- ãã®çµæ
- æ°ããPodããµãŒãã¹ãã¬ããªã±ãŒã·ã§ã³ã³ã³ãããŒã©ãŒã®åæ¢ãæŽæ°ãèµ·åãã§ããªã
- Kubernetes APIã«äŸåããŠããªãéããæ¢åã®PodããµãŒãã¹ã¯æ£åžžã«åäœãç¶ããã¯ãã§ã
- ãã®çµæ
- apiserverã®ããã¯ã¢ããã¹ãã¬ãŒãžã倱ããã
- ãã®çµæ
- apiserverãç«ã¡äžãããªã
- kubeletã¯å°éã§ããªããªããŸãããåãPodãå®è¡ããåããµãŒãã¹ã®ãããã·ãæäŸãç¶ããŸã
- apiserverãåèµ·åããåã«ãæåã§apiserverã®ç¶æ ãå埩ãŸãã¯åçŸããå¿ èŠããã
- ãã®çµæ
- ãµããŒããµãŒãã¹(ããŒãã³ã³ãããŒã©ãŒãã¬ããªã±ãŒã·ã§ã³ã³ã³ãããŒã©ãŒãããŒãžã£ãŒãã¹ã±ãžã¥ãŒã©ãŒãªã©)VMã®ã·ã£ããããŠã³ãŸãã¯ã¯ã©ãã·ã¥
- çŸåšããããã¯apiserverãšã³ãã±ãŒã·ã§ã³ããŠããã䜿çšã§ããªãå Žåã¯apiserverãšåæ§ã®åœ±é¿ããããŸã
- å°æ¥çã«ã¯ãããããè€è£œãããããã«ãªããåãå Žæã«é 眮ãããªãå¯èœæ§ããããŸã
- ç¬èªã®æ°žç¶çãªç¶æ ãæã£ãŠããªã
- åå¥ããŒã(VMãŸãã¯ç©çãã·ã³)ã®ã·ã£ããããŠã³
- ãã®çµæ
- ãã®ããŒãäžã®Podã®å®è¡ã忢
- ãã®çµæ
- ãããã¯ãŒã¯ããŒãã£ã·ã§ã³
- ãã®çµæ
- ããŒãã£ã·ã§ã³Aã¯ããŒãã£ã·ã§ã³Bã®ããŒããããŠã³ããŠãããšèããããŒãã£ã·ã§ã³Bã¯apiserverãããŠã³ããŠãããšèããŠããŸãã(ãã¹ã¿ãŒVMãããŒãã£ã·ã§ã³Aã§çµäºãããšä»®å®)
- ãã®çµæ
- KubeletãœãããŠã§ã¢é害
- ãã®çµæ
- ã¯ã©ãã·ã¥ããkubeletãããŒãäžã§æ°ããPodãèµ·åã§ããªã
- kubeletãPodãåé€ãããã©ãã
- ããŒããäžå¥å šãšå€å®ããã
- ã¬ããªã±ãŒã·ã§ã³ã³ã³ãããŒã©ãŒãå¥ã®å Žæã§æ°ããPodãèµ·åãã
- ãã®çµæ
- ã¯ã©ã¹ã¿ãŒãªãã¬ãŒã¿ãŒãšã©ãŒ
- ãã®çµæ
- PodãServiceãªã©ã®æå€±
- apiserverã®ããã¯ãšã³ãã¹ãã¬ãŒãžã®çŽå€±
- ãŠãŒã¶ãŒãAPIãèªããªããªã
- ãã®ä»
- ãã®çµæ
軜æžç
å¯ŸåŠæ³: IaaSãããã€ããŒã®èªåVMåèµ·åæ©èœãIaaS VMã«äœ¿çšãã
- ç°åžž: Apiserver VMã®ã·ã£ããããŠã³ãŸãã¯Apiserverã®ã¯ã©ãã·ã¥
- ç°åžž: ãµããŒããµãŒãã¹ã®VMã·ã£ããããŠã³ãŸãã¯ã¯ã©ãã·ã¥
å¯ŸåŠæ³: IaaSãããã€ããŒã®ä¿¡é Œã§ããã¹ãã¬ãŒãž(GCE PDãAWS EBSããªã¥ãŒã ãªã©)ãapiserver+etcdã䜿çšããVMã«äœ¿çšãã
- ç°åžž: Apiserverã®ããã¯ãšã³ãã¹ãã¬ãŒãžã倱ããã
å¯ŸåŠæ³: é«å¯çšæ§æ§æã䜿çšããŸã
- ç°åžž: ã³ã³ãããŒã«ãã¬ãŒã³ããŒãã®ã·ã£ããããŠã³ãŸãã¯ã³ã³ãããŒã«ãã¬ãŒã³ã³ã³ããŒãã³ã(ã¹ã±ãžã¥ãŒã©ãŒãAPIãµãŒããŒãã³ã³ãããŒã©ãŒãããŒãžã£ãŒ)ã®ã¯ã©ãã·ã¥
- 1ã€ä»¥äžã®ããŒããŸãã¯ã³ã³ããŒãã³ãã®åææ éã«èããããšãã§ãã
- ç°åžž: APIãµãŒããŒã®ããã¯ã¢ããã¹ãã¬ãŒãž(etcdã®ããŒã¿ãã£ã¬ã¯ããªãŒãªã©)ãæ¶å€±
- HA(é«å¯çšæ§)etcdã®æ§æãæ³å®ããŠããŸã
- ç°åžž: ã³ã³ãããŒã«ãã¬ãŒã³ããŒãã®ã·ã£ããããŠã³ãŸãã¯ã³ã³ãããŒã«ãã¬ãŒã³ã³ã³ããŒãã³ã(ã¹ã±ãžã¥ãŒã©ãŒãAPIãµãŒããŒãã³ã³ãããŒã©ãŒãããŒãžã£ãŒ)ã®ã¯ã©ãã·ã¥
å¯ŸåŠæ³: apiserver PDs/EBS-volumesã宿çã«ã¹ãããã·ã§ãããã
- ç°åžž: Apiserverã®ããã¯ãšã³ãã¹ãã¬ãŒãžã倱ããã
- ç°åžž: æäœãã¹ãçºçããå Žåããã
- ç°åžž: Kubernetesã®ãœãããŠã§ã¢ã«é害ãçºçããå Žåããã
å¯ŸåŠæ³ïŒã¬ããªã±ãŒã·ã§ã³ã³ã³ãããŒã©ãŒãšServiceãPodã®åã«äœ¿çšãã
- ç°åžž: ããŒãã®ã·ã£ããããŠã³
- ç°åžž: KubeletãœãããŠã§ã¢é害
å¯ŸåŠæ³: äºæãã¬åèµ·åã«èããããããã«èšèšãããã¢ããªã±ãŒã·ã§ã³(ã³ã³ãã)
- ç°åžž: ããŒãã®ã·ã£ããããŠã³
- ç°åžž: KubeletãœãããŠã§ã¢é害
次ã®é ç®
- ãªãœãŒã¹ã¡ããªã¯ã¹ãã€ãã©ã€ã³ã§å©çšå¯èœãªã¡ããªã¯ã¹ã«ã€ããŠåŠã¶
- ãªãœãŒã¹äœ¿çšç¶æ³ã®ç£èŠã«åœ¹ç«ã€è¿œå ããŒã«ãæ¢ã
- Node Problem Detectorã䜿çšããŠããŒãã®å¥åº·ç¶æ ãç£èŠãã
kubectl debug node
ã䜿çšããŠKubernetesããŒãããããã°ããcrictl
ã䜿çšããŠKubernetesããŒãããããã°ãã- Kubernetesã®ç£æ»ã«é¢ããè©³çŽ°ãªæ å ±ãåŸã
telepresence
ã䜿çšããŠããŒã«ã«ã§ãµãŒãã¹ãéçºã»ãããã°ãã