반응형

 

serviceAccount 를 현재 사용하고 있는 pod 들을 조회하기 위해서는 --field-selector 옵션을 통해 조회 가능하다.

$ kubectl get pods -n kube-system --field-selector spec.serviceAccountName=cilium -o wide
NAME           READY   STATUS    RESTARTS   AGE   IP             NODE      NOMINATED NODE   READINESS GATES
cilium-2nrnz   1/1     Running   0          13m   172.16.1.1   worker1   <none>           <none>
cilium-ldsn5   1/1     Running   0          13m   172.16.1.2   worker2   <none>           <none>
cilium-pcm6x   1/1     Running   0          13m   172.16.1.3   master    <none>           <none>

 

serviceAccount 뿐만아니라 여러 field 선택을 통해 다른것들도 조회가능하다.

https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/field-selectors/

 

필드 셀렉터

필드 셀렉터 는 한 개 이상의 리소스 필드 값에 따라 쿠버네티스 리소스를 선택하기 위해 사용된다. 필드 셀렉터 쿼리의 예시는 다음과 같다. metadata.name=my-service metadata.namespace!=default status.phase=Pe

kubernetes.io

 

반응형
반응형

 

k8s cluster scale out 시 kubeadm token이 필요하다.

kubeadm token의 경우 만료일자가 있어 어느정도 기한이 지나면 사라지기 때문에 재생성이 필요하다.

방법이 2개 정도 있으며, 생성 후 사용하는 법과 생성과 동시에 명령어를 생성하는 법이 있다.

 

1. 기존 토큰이 있을 경우 kubeadm token list 명령어를 통해 token 조회 가능

kubeadm token list​

 

기존 토큰을 사용하거나 토큰이 없어서 재생성 후 사용할 경우 기존 토큰이 없을 경우는 토큰 생성

kubeadm token create

root@master:~# kubeadm token create
ck9j53.uiwl5qd5s9vwdevzv

 

 

discovery-token-ca-cert-hash 조회

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

root@master:~# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
c8158df76056620db625ba08a4faaf47f795e4bf0517d6a296657dc6f59192e3

 

 

조회 후 kubeadm join 옵션을 통해 신규 Node 추가

kubeadm join 127.0.0.1:6443 --token ck9j53.uiwl5qd5s9vwdevzv \
--discovery-token-ca-cert-hash sha256:c8158df76056620db625ba08a4faaf47f795e4bf0517d6a296657dc6f59192e3

 

 

2. --print-join-command 로 바로 출력

kubeadm token create --print-join-command

root@master:~# kubeadm token create --print-join-command
kubeadm join 127.0.0.1:6443 --token ae46ls.ggne5zqvxtyv2153 --discovery-token-ca-cert-hash sha256:c8158df76056620db625ba08y4fabf37f715e4af0517d6x296657dc6f59194e2

 

반응형
반응형

 

서버 작업 중 kubelet.service 재기동시 계속 종료되는 현상이 발생되어 journalctl -xeu kubelet를 통해 로그를 확인하였으나, 그 당시 엄청 많은 쓸데없는 에러로 인해서 해당 문제를 해결하는데 시간을 많이 허비 하였다.

(로그찾을때 E(Error) 만 보느라 F(Fatal)을 놓쳤었음.)

 

아래 에러로 인하여 kubelet이 재기동 되지 않은 것을 확인하였으며, kenel panic을 재조정하여 해결하였다.

Failed to start ContainerManager invalid kernel flag: kenrnel/panic, expected valued: 10, actual value :0

 

이 문제는 kubeadm으로 k8s 설치시 발생하진 않지만, kubespray로 k8s를 설치하게되면,  기본적으로 kernel.panic=10으로 들어가게된다.

해당 옵션은 kubelet 기동 인자 전달시 예상한값과 다를 경우 패스하거나 실패 시키는 옵션인데, 누군가 kernel.panic=0 으로 변경하여 에러가 발생하였다.

 

조치방법은 /etc/sysctl.conf 내 kernel.panic 옵션의 값을 변경하면된다.

# vi /etc/sysctl.conf
kernel.panic=10

 

 

기타.

kubespray로 k8s를 설치할 경우 kubelet service파일(/etc/systemd/system/kubelet.service)에 인자들이 들어간다.

적용된 kernel.panic 옵션을 통해 해당 인자들이 탐지되어 정상기동하거나 실패하는 듯 하다.

# cat /etc/systemd/system/kubelet.service

[Service]
EnvironmentFile=-/etc/kubernetes/kubelet.env
ExecStart=/usr/local/bin/kubelet \
                $KUBE_LOGTOSTDERR \
                $KUBE_LOG_LEVEL \
                $KUBELET_API_SERVER \
                $KUBELET_ADDRESS \
                $KUBELET_PORT \
                $KUBELET_HOSTNAME \
                $KUBELET_ARGS \
                $DOCKER_SOCKET

 

반응형

+ Recent posts