DevOps

CKA 뽀개기 - Apiserver Misconfigured

junwork 2023. 2. 19. 09:00

개요

CKA 공부를 위해 KillerCoda 사이트 문제를 풀이한다.

목표

Kubernetes Apiserver 장애를 복구한다.


여정

The Apiserver manifest contains errors

문제를 해석하면

kubernetes의 apiserver 설정에서

잘못된 부분 3곳을 수정하여 복구하는 과정을 요구한다.

 

/var/log/pods 위치에 
kube-system_kube-apiserver-controlplane로 시작하는 디렉토리부터 확인하자
없다면 yaml 파일 문법에서부터 오류가 난 것이다!

# 로그 기록 확인
cat /var/log/syslog | grep kube-apiserver
...
Could not process manifest file" err="/etc/kubernetes/manifests/kube-apiserver.yaml: 
\ couldnt parse as pod(yaml: line 4: could not find expected ':')


# 에러 발생한 부분 수정
# kube-system 관리파일이므로 적용절차 필요없음
vi /etc/kubernetes/manifests/kube-apiserver.yaml
...
metadata: # 기존 : metadata;

이제 /var/log/pods 위치에 디렉토리를 확인해보자.

apiserver 실행이 확인되었으면 다음 로그를 확인하자

# 로그 기록 확인
cd /var/log/pods/kube-system_kube-apiserver-controlplane_.../kube-apiserver/
cat X.log
2023-02-16T16:18:09.00665352Z stderr F Error: unknown flag: --authorization-modus

# 에러 발생한 부분 수정
# vi 편집창에서 /검색어 입력 시 바로 찾을 수 있다
vi /etc/kubernetes/manifests/kube-apiserver.yaml
...
	- --authorization-mode=Node,RBAC # 기존 : modus

두번째 오류가 해결되었다면 방금 있던 로그 디렉토리는 사라진다.

다시 /var/log/pods 위치에서 새로 생긴 디렉토리의 에러를 확인하자.

# 에러 확인
cd /var/log/pods/kube-system_kube-apiserver-controlplane.../kube-apiserver
cat X.log
	Err: connection error: desc = "transport: Error while dialing dial tcp 127.0.0.1:23000: connect: connection refused"

# 에러가 발생한 위치 찾기
# /127.0.0.1:23000 검색
vi /etc/kubernetes/manifests/kube-apiserver.yaml
...
	- --etcd-servers=https://127.0.0.1:23000 # IP와 Port 설정을 확인해볼 필요가 있다.

# etcd의 IP와 Port 확인하기
cat /etc/kubernetes/manifests/etcd.yaml # kube-apiserver와 같은 위치에 있다
...
	- --listen-client-urls=https://127.0.0.1:2379
    

# 에러 발생한 부분 수정
vi /etc/kubernetes/manifests/kube-apiserver.yaml
...
	- --etcd-servers=https://127.0.0.1:2379

마무리

이번 시간에는 kubernetes의 로그 확인과 기본 설정 변경을 응용한 문제를 풀어보았다.

 

중요한 것은 에러메시지를 잘 읽는 것이다.

(사실 어느 곳에 가나 에러메시지는 중요하다)

 

기본기가 탄탄해야 오래, 멀리 갈 수 있다.