메모리 증설을 위해 마스터와 워커노드 VM 들을
VSphere에서 Shutdown 하고 메모리 증설 이후 다시 실행했는데,
kubectl 명령어를 치면 에러가 발생.
E0805 23:40:29.871155 1446922 memcache.go:265] couldn't get current server API group list: Get "https://192.168.3.225:6443/api?timeout=32s": dial tcp 192.168.3.225:6443: connect: connection refused
E0805 23:40:29.871403 1446922 memcache.go:265] couldn't get current server API group list: Get "https://192.168.3.225:6443/api?timeout=32s": dial tcp 192.168.3.225:6443: connect: connection refused
E0805 23:40:29.872995 1446922 memcache.go:265] couldn't get current server API group list: Get "https://192.168.3.225:6443/api?timeout=32s": dial tcp 192.168.3.225:6443: connect: connection refused
E0805 23:40:29.874500 1446922 memcache.go:265] couldn't get current server API group list: Get "https://192.168.3.225:6443/api?timeout=32s": dial tcp 192.168.3.225:6443: connect: connection refused
E0805 23:40:29.875994 1446922 memcache.go:265] couldn't get current server API group list: Get "https://192.168.3.225:6443/api?timeout=32s": dial tcp 192.168.3.225:6443: connect: connection refused
The connection to the server 192.168.3.225:6443 was refused - did you specify the right host or port?
위 현상은 kube-apiserver가 실행에 문제가 있을 때 발생하기 때문에 추적을 시도한다.
journalctl -u kubelet
- Kubelet 로그에서 ETCD와의 통신 문제가 있는 것을 발견
systemctl status etcd
문제가 없음을 확인
sudo crictl ps
어머 왠걸... kube-apiserver와 etcd 컨테이너가 없다......
정확하게는 지속적으로 컨테이너가 떴다 죽었다 하는 것이었다.
sudo crictl logs <KUBE-APISERVER CONTEINAER ID>
sudo crictl logs <ETCD CONTEINAER ID>
W0805 23:39:44.656816
1 logging.go:59] [core]
[Channel #2 SubChannel #4] grpc: addrConn.createTransport
failed to connect to {Addr: "127.0.0.1:2379", ServerName: "127.0.0.1", }.
Err: connection error: desc = "transport:
...
...
..
05T23:56:25.522321Z"
"caller":"etcdmain/etcd.go:204"
"msg":"discovery failed","error":"listen tcp 127.0.0.1:2379:
bind: address already in use","stacktrace":"go.etcd.io/etcd/server/v3/etcdmain.startEtcdOrProxyV2\n\tgo.etcd.io/etcd/server/v3/etcdmain/etcd.go:204\ngo.etcd.io/etcd/server/v3/etcdmain.Main\n\tgo.etcd.io/etcd/server/v3/etcdmain/main.go:40\nmain.main\n\tgo.etcd.io/etcd/server/v3/main.go:31\nruntime.main\n\truntime/proc.go:250"}
sudo lsof -i :2379
메모리 증설로 인한 컴퓨터 종료 이후 재부팅을 하고 나면
kube-apiserver부터 etcd 등 다양한 컨테이너들이 다시 뜨게되는데
포트남아있었나보다.
그래서 ETCD가 제대로 실행되지 않고 죽어있게 되었고
Kube-apiserver가 ETCD와 통신이 되지않아 문제가 생겼다는 것이다.
sudo systemctl stop etcd
sudo crictl rm <종료된 ETCD 컨테이너 ID>
sudo kill -9 <PORT PROCESS ID>