위 문제를 해결하기 위해서는etcdctl명령을 이용해서 etcd클러스터 구성원들의 과도한 키 스페이스 데이터들을 제거하고, 데이터베이스 조각모음을 수행해서 quota 범위 내로 크기를 되돌리는 과정이 필요합니다. 하지만, etcd 컨테이너들이 2~3분에 한번씩 죽어대는 바람에 제대로 작업을 진행하기가 불가능했습니다.
컨테이너가 계속 꺼지고 켜지기를 반복하는 이유는 컨테이너에livenessProbe설정이 세팅되어 있어서 etcd 컨테이너가 정상동작하지 않으면 healthcheck에 실패한 것으로 보고 컨테이너를 계속 재기동 하기 때문이었습니다. 우선 이 현상을 해결하기 위해서 etcd pod에 세팅되어 있는livenessProbe설정을 제거해 주기로 합니다. etcd는 kubernetes를 구성하는 핵심 구성요소 중 하나이기 때문에/etc/kubernetes/manifests/디렉토리에 pod 구성정보가 존재합니다. 찾아서 수정해 줍니다.
위와같은 주석처리를 모든 master 노드의 해당 경로에 존재한 yaml파일에 작업해주면, etcd 컨테이너가 죽지 않게 됩니다.
etcdctl 명령어
konvoy로 설치한 kubernetes에서 etcdctl 명령어를 사용하기 위해서 가장 정석적인 방법은 etcd 컨테이너 내에 접속해서 etcd 명령어를 사용하는 것이지만, 본인은 귀찮아서 그냥 컨테이너 밖에서 찾아서 사용해보기로 했습니다. (당연히 etcd컨테이너가 동작중인 master노드에서 해야합니다.)
#bash
find / -type f -name etcdctl 2>/dev/null
#출력예시
[root@k8s-master1 manifests]# find / -type f -name etcdctl 2>/dev/null
## 조각 모음하기 #### == 클러스터 전체 동시 === [root@minikube home]# etcdctl3 defrag --cluster #클러스터 전체를 동시에 Finished defragmenting etcd member[https://192.168.45.100:2379]
[root@minikube home]# etcdctl3 -w table endpoint status --cluster +-----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+ | ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS | +-----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+ | https://192.168.45.100:2379 | d5b1b2d93f592f08 | 3.5.0 | 856 kB | true | false | 4 | 48305 | 48305 | | +-----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
[root@09506-minikube mnt]# docker ps |grep rancher be91d46dd125 rancher/rancher-webhook "webhook" 8 minutes ago Up 8 minutes k8s_rancher-webhook_rancher-webhook-7f84b74ddb-qs6dt_cattle-system_e0fc1ee1-3f4a-4743-b28b-c8494286c9e7_0 7f0bdb28e5d7 k8s.gcr.io/pause:3.4.1 "/pause" 8 minutes ago Up 8 minutes k8s_POD_rancher-webhook-7f84b74ddb-qs6dt_cattle-system_e0fc1ee1-3f4a-4743-b28b-c8494286c9e7_0 7eceb0f7c466 rancher/gitjob "gitjob --tekton-ima…" 8 minutes ago Up 8 minutes k8s_gitjob_gitjob-5778966b7c-z5wzx_cattle-fleet-system_a7c81e7e-44ab-44cf-b4cb-f551768febe3_0 52af74d28f7f rancher/fleet "fleetcontroller" 8 minutes ago Up 8 minutes k8s_fleet-controller_fleet-controller-974d9cc9f-vggbm_cattle-fleet-system_69a77bdd-7650-436a-b3a1-742831a0ba3c_0 b5639950b5df 08c9693b4357 "entrypoint.sh --htt…" 9 minutes ago Up 9 minutes k8s_rancher_rancher-76cc8c9498-x22m6_cattle-system_60039463-1ea6-4028-9d3c-9342e5faac06_1 0735625e27f4 08c9693b4357 "entrypoint.sh --htt…" 11 minutes ago Up 11 minutes k8s_rancher_rancher-76cc8c9498-f62bl_cattle-system_fb3ad37a-12e5-4ab3-b5d6-17390e18da61_0 8535f003f780 08c9693b4357 "entrypoint.sh --htt…" 11 minutes ago Up 11 minutes k8s_rancher_rancher-76cc8c9498-zd5vl_cattle-system_1ba9d8a5-3c4f-491d-8641-7b895fa2b5bc_0 072602245d94 k8s.gcr.io/pause:3.4.1 "/pause" 11 minutes ago Up 11 minutes k8s_POD_rancher-76cc8c9498-zd5vl_cattle-system_1ba9d8a5-3c4f-491d-8641-7b895fa2b5bc_0 373297fa8fea k8s.gcr.io/pause:3.4.1 "/pause" 11 minutes ago Up 11 minutes k8s_POD_rancher-76cc8c9498-f62bl_cattle-system_fb3ad37a-12e5-4ab3-b5d6-17390e18da61_0 123a5ca47ef9 k8s.gcr.io/pause:3.4.1 "/pause" 11 minutes ago Up 11 minutes k8s_POD_rancher-76cc8c9498-x22m6_cattle-system_60039463-1ea6-4028-9d3c-9342e5faac06_0 [root@09506-minikube mnt]# docker exec b5639950b5df reset-password W0902 14:06:52.191966 238 client_config.go:615] Neither --kubeconfig nor --master was specified. Using the inClusterConfig. This might not work. New password for default admin user (user-z4t7r): NlWz99HVRJgFUS1eypl4
Exiting due to GUEST_MISSING_CONNTRACK: Sorry, Kubernetes 1.21.2 requires conntrack to be installed in root's path
yum install conntrack
minikube start --vm-driver=none
vi ~/.bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' alias kubectl='minikube kubectl -- ' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi
bash
kubectl get pods
minikube addons list
minikube addons enable metric-server
혹시 아래와 같은 에러가 발생하면
Exiting due to MK_ADDON_ENABLE: run callbacks: metric-server is not a valid addon
><> helm version WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /home/bacongobbler/.kube/config version.BuildInfo{Version:"v3.4.1", GitCommit:"c4e74854886b2efe3321e185578e6db9be0a6e29", GitTreeState:"clean", GoVersion:"go1.14.11"} ><> chmod o+r ~/.kube/config ><> helm version
WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /home/bacongobbler/.kube/config
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /home/bacongobbler/.kube/config