Application
-
svc 확인 (이름, nodeport, port, targetport 확인 등)
-
deployment 확인 (ex) mysql 앱 사용자 및 비밀번호 등 수정)
-
pod 확인 (ex)mysql pod 자체 환경변수의 비밀번호 설정)
1
- 위 그림과 비교해서 svc 이름만 다른 것을 알 수 있음 => yaml로 받아서 name만 바꿔서 다시 apply 해주면 됨.
2
헷갈리는 nodeport, port, targetport 정리
- 어쨌든 문제로 돌아가서, 위 문제에서는 mysql-service에서 어플리케이션 3306으로 다시 들어가야 하니까 targetport를 3306으로 해주어야 함.
Controlplane
- schduling 등에 에러가 있다. -> kube-system 네임 스페이스의 pod 확인해서 이상있는 지 확인.
- 이상 있으면 k logs -n kube-system 파드이름으로 무슨 문제인지 확인
- /etc/kubernetes/manifests 경로로 가서 오류 수정
3
deployment의 scaling up을 했지만 pod scaling up 안 되는 상황이면, 다른 이상이 없다면 kube-system 쪽 pod를 봐준다 -> 이상이 있는 pod가 있다 -> 그렇다면 controller쪽 이상 (scheduling이 안 되고 있을 수 있기 때문)
k logs -n kube-system kube-controller-manager-controlplane
의 명령어로 문제가 있다면 어떤 문제가 있는 지 확인 가능하고, 해당 문제를 고쳐준다.
(이 경우엔 kube-scheduler 문제여서, /etc/kubernetes/manifest의 kube-scheduler.conf에서 틀린 문자열을 고쳐줬다.)
4
- manager-controlplane 파드가 고장나 있어서 log를 봤다.
root@controlplane:/etc/kubernetes/manifests# kubectl -n kube-system logs kube-controller-manager-controlplane
I0916 13:17:27.452539 1 serving.go:348] Generated self-signed cert in-memory
unable to load client CA provider: open /etc/kubernetes/pki/ca.crt: no such file or directory
- 위와 같이, pki 디렉토리가 잘못 잡혀있다는 오류였다. 이 경우, 파일은 제대로 있다면 hostPath가 다르게 잡혀있는 것이다.
- 위와같이, yaml 파일에서 잘못잡혀있어서 올바르게 수정해주면 된다.
Worker Nodes
- ssh node
- journalctl -u kubelet -f 해서 경우의 수를 본다.
- 단순히 systemctl start kubelet
- 파일 글자오류
- /etc/kubernetes/kubelet.conf port 오류
1.
- journalctl -u kubelet -f
May 23 08:22:00 node01 kubelet[2053]: I0523 08:22:00.194377 2053 reconciler_common.go:253] "operationExecutor.VerifyControllerAttachedVolume started for volume \"xtables-lock\" (UniqueName: \"kubernetes.io/host-path/8c8b5124-2404-4fd7-87b8-2581cf01b11d-xtables-lock\") pod \"kube-flannel-ds-q2sbf\" (UID: \"8c8b5124-2404-4fd7-87b8-2581cf01b11d\") " pod="kube-flannel/kube-flannel-ds-q2sbf"
May 23 08:22:00 node01 kubelet[2053]: I0523 08:22:00.194432 2053 reconciler_common.go:253] "operationExecutor.VerifyControllerAttachedVolume started for volume \"kube-api-access-js7sj\" (UniqueName: \"kubernetes.io/projected/8c8b5124-2404-4fd7-87b8-2581cf01b11d-kube-api-access-js7sj\") pod \"kube-flannel-ds-q2sbf\" (UID: \"8c8b5124-2404-4fd7-87b8-2581cf01b11d\") " pod="kube-flannel/kube-flannel-ds-q2sbf"
-> systemctl start kubelet
2.
- journalctl -u kubelet -f
-- Logs begin at Tue 2023-05-23 08:05:45 EDT. --
Dec 29 14:32:36 node01 kubelet[4670]: E1229 14:32:36.331403 4670 run.go:74] "command failed" err="failed to construct kubelet dependencies: unable to load client CA file /etc/kubernetes/pki/WRONG-CA-FILE.crt: open /etc/kubernetes/pki/WRONG-CA-FILE.crt: no such file or directory"
-> 읽어보니 뭔가 CA FILE이 없대서 해당 경로 yaml 들어가서 ca 파일 잡아줌.
3.
- journalctl -u kubelet -f
May 23 08:32:12 node01 kubelet[5637]: E0523 08:32:12.511600 5637 kubelet_node_status.go:92] "Unable to register node with API server" err="Post \"https://controlplane:6553/api/v1/nodes\": dial tcp 192.24.230.12:6553: connect: connection refused" node="node01"
May 23 08:32:13 node01 kubelet[5637]: E0523 08:32:13.501902 5637 event.go:276] Unable to write event: '&v1.Event{TypeMeta:v1.TypeMeta{Kind:"", APIVersion:""}, ObjectMeta:v1.ObjectMeta{Name:"node01.1761c5a55d5d6ac2", GenerateName:"", Namespace:"default", SelfLink:"", UID:"", ResourceVersion:"", Generation:0, CreationTimestamp:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletionTimestamp:, DeletionGracePeriodSeconds:(int64)(nil), Labels:map[string]string(nil), Annotations:map[string]string(nil), OwnerReferences:[]v1.OwnerReference(nil), Finalizers:[]string(nil), ManagedFields:[]v1.ManagedFieldsEntry(nil)}, InvolvedObject:v1.ObjectReference{Kind:"Node", Namespace:"", Name:"node01", UID:"node01", APIVersion:"", ResourceVersion:"", FieldPath:""}, Reason:"Starting", Message:"Starting kubelet.", Source:v1.EventSource{Component:"kubelet", Host:"node01"}, FirstTimestamp:time.Date(2023, time.May, 23, 8, 30, 49, 639955138, time.Local), LastTimestamp:time.Date(2023, time.May, 23, 8, 30, 49, 639955138, time.Local), Count:1, Type:"Normal", EventTime:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Series:(v1.EventSeries)(nil), Action:"", Related:(*v1.ObjectReference)(nil), ReportingController:"", ReportingInstance:""}': 'Post "https://controlplane:6553/api/v1/namespaces/default/events": dial tcp 192.24.230.11:6553: connect: connection refused'(may retry after sleeping)
-> 6553 6443으로 고쳐주기 (vim /etc/kubernetes/kubelet.conf)
Network
- k get pods -A 해서 잘못된 pod log 봐주기
- 1번은 CNI 뭐 업데이트 하는 문제였는데 솔직히 뭔지 모르겠어서 그냥 넘어가는 걸로 했다.
2.
- proxy pod log 봐서 conf 고치기
- 알고보면 daemonset이어서 k edit ds -n kube-system kube-proxy 해서 config쪽 파일 잘못된 것 고침
k -n kube-system logs kube-proxy-wd9hl
E0523 13:45:01.349109 1 run.go:74] "command failed" err="failed complete: open /var/lib/kube-proxy/configuration.conf: no such file or directory"