kubernetes

Playce Kube - 설치 확인

Tech Studio 2023. 5. 13. 23:48

 

서버 구축 내역 정리 

 시스템을 무작정 구축해보았는데요. 그럼 내가 무엇을 설치 한것인지 확인 해 볼필요가 있겠죠. 기본적인 명령어 에서부터 내 서버에각각 어떤것이 설치되었는지 확인해 보겠습니다. 

 

 기존에 계획되어 있던 Kubernetes의 시스템 구조는 1기의 Deploy, 3기의 Control-Plane, 2기의 Worker입니다. 네트워크는 2개 External과 Internal로 구성되어 있고, Kubernetes의 관리 및 운영은 Deploy를 통해서 운영하고 웹 및 외부 연동을 위한 외부 연동은 Ingress를 통한 Worker에 구성되어 있습니다. Playce Kube를 구축하면서 설정했던 부분은 이정도 인거 같은데요. 설정한 설정들 부터 확인해 보도록 하겠습니다.
*Bastion서버로 이용되는 Deploy Node에서 kubectl명령어로 확인이 가능합니다. 

 Node정보를 확인하는 명령어는 kubectl get nodes로 구축된 Kubernetes의 운영되고 있는 서버와 그 서버의 정상 운영여부를 확인 할 수 있습니다. 옵션인 wide를 사용할 경우, 조금더 자세한 운영정보를 알 수 있습니다. 

 

### Node 정보 

# node 정보 확인 
kubectl get nodes
NAME                  STATUS   ROLES                  AGE     VERSION
playcekube-master01   Ready    control-plane,master   2d23h   v1.22.8
playcekube-master02   Ready    control-plane,master   2d23h   v1.22.8
playcekube-master03   Ready    control-plane,master   2d23h   v1.22.8
playcekube-worker01   Ready    ingress                2d23h   v1.22.8
playcekube-worker02   Ready    ingress                2d23h   v1.22.8

# node 정보 자세히 
kubectl get nodes -o wide
NAME                  STATUS   ROLES                  AGE     VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
playcekube-master01   Ready    control-plane,master   2d23h   v1.22.8   10.0.0.21      <none>        Ubuntu 22.04.1 LTS   5.15.0-57-generic   containerd://1.5.8
playcekube-master02   Ready    control-plane,master   2d23h   v1.22.8   10.0.0.22      <none>        Ubuntu 22.04.1 LTS   5.15.0-57-generic   containerd://1.5.8
playcekube-master03   Ready    control-plane,master   2d23h   v1.22.8   10.0.0.23      <none>        Ubuntu 22.04.1 LTS   5.15.0-57-generic   containerd://1.5.8
playcekube-worker01   Ready    ingress                2d23h   v1.22.8   10.0.0.31      <none>        Ubuntu 22.04.1 LTS   5.15.0-57-generic   containerd://1.5.8
playcekube-worker02   Ready    ingress                2d23h   v1.22.8   10.0.0.32      <none>        Ubuntu 22.04.1 LTS   5.15.0-57-generic   containerd://1.5.8

 

 wide옵션이 없을 경우에는 심플하게 노드의 이름과 상태 그리고 버전등을 표시 하고 있습니다. wide 옵션을 사용하게 되면 kuberntes의 네트워크(INTERNAL_IP)를 알 수 있고 각 서버의 OS 정보들과 Container runtime의 버전정보까지 보이게 됩니다. 이중에 중요한 것은 Kubernetes의 상태와 구축된 Kubernetes의 버전 정보입니다. 상태는 모두 Ready로 정상이군요.Kubernetes는 v1.22.8버전이 설치 되었고, Node들의 OS는 Ubuntu 22.04.1이네요. Kubernetes가 운영하게될 Container Runtime은 containerd 1.5.8이 되겠습니다. 이렇게 버전 정보를 알게되었지만 kubectl의 버전도 서버와 맞는지 확인을 해봐야 합니다. kubectl version 명령어를 통하면 확인이 가능합니다. 

 

### Kubernetes 설치 버전 확인 

# kubectl version 정보
kubectl version
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.8", GitCommit:"7061dbbf75f9f82e8ab21f9be7e8ffcaae8e0d44", GitTreeState:"clean", BuildDate:"2022-03-16T14:10:06Z", GoVersion:"go1.16.15", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.8", GitCommit:"7061dbbf75f9f82e8ab21f9be7e8ffcaae8e0d44", GitTreeState:"clean", BuildDate:"2022-03-16T14:04:34Z", GoVersion:"go1.16.15", Compiler:"gc", Platform:"linux/amd64"}

 

 당연하겠지만 kubectl의 Client와 Server모두 1.22.8로 구성되어있음을 확인 할 수 있습니다. 

 만약 kubernetes의 Status가 Ready상태가 아니거나 Node가 계왹한대로 보이지 않는다면 설치도중 문제가 있었던 것으로 판단하고, 처음부터 다시 구성을 고려해야 합니다. 대부분 서버 구성을 조금 다르게 했거나 Network 설정에서 이슈가 있을경우 정상 설치가 되지 않으므로 다시한번 처음부터 확인하여 재구성을 하면 되겠습니다. 

 그럼 Playce Kube가 구축해준 Kubernetes는 어떻게 구성되어 있는지 확인해보겠습니다. 사용하게 될 명령어는 여러개가 될텐데요. 처음으로 확인하게 될 명령어는  Kubernetes에서 제일 많이 사용하는 명령어 입니다. kubectl get pod 그리고 kubectl get all 입니다. 

 

### Kubernetes 정보 확인 

# pod 정보 확인 
kubectl get pod
No resources found in default namespace.

# all 정보 확인 
kubectl get all
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.233.0.1   <none>        443/TCP   2d23h

 

 kubectl get pod와 kubectl get all명령어는 현재 namespace의 운영되고 있는 pod의 정보 그리고 pod와 관련된 모든 정보를 보여줍니다. 구축된 정보를 보게 되면 이상하게도 service 하나만 보이는데요. kubectl get pod의 리턴값의 정보처럼 default namespace에는 pod가 구축되어 있지 않기 때문입니다.

 kubernetes는 정상적으로 운영되는 것 처럼 보이는데 kubernetes가 사용하는 pod들은 어디에 있을까요? kubernetes의 namespace정보를 확인해보겠습니다. 

 

### Namespace 정보

# Namespace 정보 확인 
kubectl get namespaces
NAME                          STATUS   AGE
cattle-impersonation-system   Active   2d23h
cattle-system                 Active   2d23h
default                       Active   2d23h
kube-node-lease               Active   2d23h
kube-public                   Active   2d23h
kube-system                   Active   2d23h
local                         Active   2d23h
playcekube                    Active   2d23h
playcekube-dev                Active   2d23h

 

 kubectl get namespaces 명령어로 확인해 보니 9개의 namespace가 표시됩니다. 기본으로 지정되어 있는 default 를 비롯해 kube- 로 시작하는 kube-node-lease, kube-public, kube-system이 유력해보이네요. -n, --namespace 옵션을 적용해 한번 확인해보겠습니다. 

 

### kube-node-local namespace 확인

# Pod 정보 확인
kubectl -n kube-node-lease get pod
No resources found in kube-node-lease namespace.

# all 정보 확인 
kubectl -n kube-node-lease get all
No resources found in kube-node-lease namespace.

 

 kube-node-lease namespcae는 Node Heart bit 와 관련이 있는것 같습니다. 하지만 사용하지는 않네요. 
*참고: kube-node-lease

 

### kube-public namespace 확인 

# Pod 정보 확인
kubectl -n kube-public get pod
No resources found in kube-public namespace.

# all 정보 확인 
kubectl -n kube-public get all
No resources found in kube-public namespace.

 

 kube-public namespace또한 다른 정보가 없습니다. 하지만 이름을 통해 공개되어 있는 namespace임을 알 수 있는데요. 모든 사용자가 읽기 권한으로 접근 가능합니다. 

 

### kube-system Namespace 확인 

# Pod 정보 확인 
kubectl -n kube-system get pod
NAME                                          READY   STATUS    RESTARTS       AGE
calico-kube-controllers-b8d4d8984-82xn7       1/1     Running   0              3d
calico-node-8qf8n                             1/1     Running   0              3d
calico-node-92vqx                             1/1     Running   0              3d
calico-node-l42l9                             1/1     Running   0              3d
calico-node-sn89s                             1/1     Running   0              3d
calico-node-zx9z6                             1/1     Running   0              3d
coredns-66fcfddbbd-q74d5                      1/1     Running   0              3d
coredns-66fcfddbbd-s6gzd                      1/1     Running   0              3d
dns-autoscaler-cf845685b-kgvb8                1/1     Running   0              3d
etcd-playcekube-master01                      1/1     Running   0              3d
etcd-playcekube-master02                      1/1     Running   0              3d
etcd-playcekube-master03                      1/1     Running   0              3d
kube-apiserver-playcekube-master01            1/1     Running   0              3d
kube-apiserver-playcekube-master02            1/1     Running   1 (3d ago)     3d
kube-apiserver-playcekube-master03            1/1     Running   1 (3d ago)     3d
kube-controller-manager-playcekube-master01   1/1     Running   8 (13h ago)    3d
kube-controller-manager-playcekube-master02   1/1     Running   4 (22h ago)    3d
kube-controller-manager-playcekube-master03   1/1     Running   6 (151m ago)   3d
kube-proxy-49fkr                              1/1     Running   0              3d
kube-proxy-92htk                              1/1     Running   0              3d
kube-proxy-f4tw7                              1/1     Running   0              3d
kube-proxy-rgh8j                              1/1     Running   0              3d
kube-proxy-s6gk2                              1/1     Running   0              3d
kube-scheduler-playcekube-master01            1/1     Running   7 (13h ago)    3d
kube-scheduler-playcekube-master02            1/1     Running   6 (15h ago)    3d
kube-scheduler-playcekube-master03            1/1     Running   5 (151m ago)   3d
metrics-server-7855bfbc9b-9q4k5               1/1     Running   0              3d
nginx-proxy-playcekube-worker01               1/1     Running   0              3d
nginx-proxy-playcekube-worker02               1/1     Running   0              3d

 

 드디어 많은 정보가 나오기 시작합니다. Pod는 크게 Calico, CoreDNS, dns-autoscaler, etcd, api, coltroller-manager, proxy, scheduler, metrics-server, nginx-proxy 가 보입니다. 

 

 

### kube-system namespace 정보 확인 

# all 정보 확인 
kubectl -n kube-system get all
NAME                                              READY   STATUS    RESTARTS       AGE
pod/calico-kube-controllers-b8d4d8984-82xn7       1/1     Running   0              3d
pod/calico-node-8qf8n                             1/1     Running   0              3d
pod/calico-node-92vqx                             1/1     Running   0              3d
pod/calico-node-l42l9                             1/1     Running   0              3d
pod/calico-node-sn89s                             1/1     Running   0              3d
pod/calico-node-zx9z6                             1/1     Running   0              3d
pod/coredns-66fcfddbbd-q74d5                      1/1     Running   0              3d
pod/coredns-66fcfddbbd-s6gzd                      1/1     Running   0              3d
pod/dns-autoscaler-cf845685b-kgvb8                1/1     Running   0              3d
pod/etcd-playcekube-master01                      1/1     Running   0              3d
pod/etcd-playcekube-master02                      1/1     Running   0              3d
pod/etcd-playcekube-master03                      1/1     Running   0              3d
pod/kube-apiserver-playcekube-master01            1/1     Running   0              3d
pod/kube-apiserver-playcekube-master02            1/1     Running   1 (3d ago)     3d
pod/kube-apiserver-playcekube-master03            1/1     Running   1 (3d ago)     3d
pod/kube-controller-manager-playcekube-master01   1/1     Running   8 (13h ago)    3d
pod/kube-controller-manager-playcekube-master02   1/1     Running   4 (22h ago)    3d
pod/kube-controller-manager-playcekube-master03   1/1     Running   6 (152m ago)   3d
pod/kube-proxy-49fkr                              1/1     Running   0              3d
pod/kube-proxy-92htk                              1/1     Running   0              3d
pod/kube-proxy-f4tw7                              1/1     Running   0              3d
pod/kube-proxy-rgh8j                              1/1     Running   0              3d
pod/kube-proxy-s6gk2                              1/1     Running   0              3d
pod/kube-scheduler-playcekube-master01            1/1     Running   7 (13h ago)    3d
pod/kube-scheduler-playcekube-master02            1/1     Running   6 (15h ago)    3d
pod/kube-scheduler-playcekube-master03            1/1     Running   5 (152m ago)   3d
pod/metrics-server-7855bfbc9b-9q4k5               1/1     Running   0              3d
pod/nginx-proxy-playcekube-worker01               1/1     Running   0              3d
pod/nginx-proxy-playcekube-worker02               1/1     Running   0              3d

NAME                     TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
service/coredns          ClusterIP   10.233.0.3      <none>        53/UDP,53/TCP,9153/TCP   3d
service/metrics-server   ClusterIP   10.233.22.239   <none>        443/TCP                  3d

NAME                         DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
daemonset.apps/calico-node   5         5         5       5            5           kubernetes.io/os=linux   3d
daemonset.apps/kube-proxy    5         5         5       5            5           kubernetes.io/os=linux   3d

NAME                                      READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/calico-kube-controllers   1/1     1            1           3d
deployment.apps/coredns                   2/2     2            2           3d
deployment.apps/dns-autoscaler            1/1     1            1           3d
deployment.apps/metrics-server            1/1     1            1           3d

NAME                                                DESIRED   CURRENT   READY   AGE
replicaset.apps/calico-kube-controllers-b8d4d8984   1         1         1       3d
replicaset.apps/coredns-66fcfddbbd                  2         2         2       3d
replicaset.apps/dns-autoscaler-cf845685b            1         1         1       3d
replicaset.apps/metrics-server-7855bfbc9b           1         1         1       3d

 

 생각지도 못한 deployment와 replicaset이 생기고, daemonset과 service도 생성이 되어 있네요. 비슷한 이름으로 묶여있는것으로 봐서는 개별로 연결되어 있는것으로 보입니다. 
 deployment는 replicaset을 생성하고, replicaset은 pod를 생성합니다. 그렇다면, deployment의 calico-kube-controllers 는 replicaset으로 연결되어 있겠군요. 그런데 -b8d4d8984 이렇게 무언가 다른것이 추가로 붙어 있습니다. kubernetes는 자신이 생성한 하위에는 임의의 명칭이 생성되기 때문인데요 그럼 한번 생성된 replicaset의 추가 이름뒤에 pod는 또다시 임의의 명칭이 생성되는지 보겠습니다. 예상과 맞으셨나 모르겠습니다만 calico-kube-controllers-b8d4d8984-82xn7 이렇게 추가로 -82xn7이 붙어있습니다. 이걸 역으로 따라가면 pod를 어떤 메소드가 생성했는지를 알 수 있다는 거네요. 그럼 다른 pod로 어떻게 생성된 것인지 확인해 보겠습니다. calico kube controllers의 아래를 보면 calico node가 5개 생성되어 있네요. calico-node-8qf8n, calico-node-92vqx, calico-node-l42l9, calico-node-sn89s, calico-node-zx9z6 이렇게 이름이 되어 네요. 그럼 뒤의 문자를 제거하면 calico-node만 남습니다. calico-node를 보게 되면 모든 노드에 1개씩 구성이 되는 daemonset에 있습니다. 그럼 service는 무엇일까요. 이름으로 보면 coredns와 metrics-server를 보여주고 있습니다. 정보에 port가 있는것을 보니 Pod들이 외부로 노출 시키는 역할을 하는것으로 보입니다. 간단하게 daemonset, deployment, replicaset, service를 우리는 벌서 경험하게 된거네요. 위 내역을 요약하자면 다음과 같습니다. 

 

1. daemonset: 모든 node에 pod를 1개이상 생성, 관리 합니다. 
2. deployment: 원하는 숫자만큼의 pod를 생성하도록 replicaset을 생성합니다. 
3. replicaset: deployment가 지정한 만큼의 pod를 생성하도록 지속적으로 시도 합니다. 
4. service: 구성되어 있는 Pod를 외부에 port맵핑으로 노출합니다. 

 

 그럼 kube-system이라는 namespace에 운영되고 있는 pod들은 어떤것인지 확인해보겠습니다. 우선 calico-kube-controllers, calico-node, coredns, dns-autoscaler, etcd, kube-apiserver, kube-controller-manager, kube-proxy, kube-scheduler, metrics-server, nginx-proxy 이렇게 많은 pod들이 있네요. 간단하게 보면 다음과 같습니다.

 

Name 역할
 calico-kube-controllers  Calico의 Controller역할, Calico 정보를 이용해 Calico-node의 정보를 구성합니다. 
calico-node  Pod간 통신 역할을 하는 Calico Network 입니다. 노드마다 생성되어 Pod간 네트워크 정보를 관리 합니다.  
coredns  Kubernetes간에 사용되는 사설 DNS입니다. Service 이름등을 이용한 DNS를 제공합니다. 
Ex: servicename.namespace.svc.cluster.local
dns-autoscaler  사용하는 Node의 규모와 성능에 따라 DNS를 확장 및 축소 합니다. 
etcd  kubeapi를 통해 저장소로 이용되는 key: value 형식의 DB입니다. 
kube-apiserver  Kubernetes 필수 구성요소 입니다. API를 제공하여, kubernetes를 운영합니다. 
kube-controller-manager  Kubernetes 필수 구성요소 입니다. API에서 확인된 정보를 이용해 kubernetes를 운영합니다. 
kube-proxy  각 노드에 설치되어 Kubernetes의 네트워크를 IPVS, iptables를 이용하여 컨트롤 합니다. 
kube-scheduler  Kubernetes 필수 구성요소 입니다. 각 노드의 성능 및 Pod의 성능을 확인하여 관리 합니다. 
metrics-server   Kubernetes의 사용 성능을 기록하고 저장합니다. 
nginx-proxy Nginx를 이용하여 Kubrnetes의 웹 접근을 컨트롤 합니다. 

 

 상당히 많은 항목입니다만, Kubernetes를 소개할때처럼 대형 인프라에 필수적인 요소들이 kube-system에 존재 한다는것을 알 수 있습니다. 

 

 그럼 playcekube, playcekube-dev로 되어 있는 namespace를 확인해보겠습니다. 

 

### playcekube namespace 정보 확인 

# pod 정보 확인 
kubectl get pod -n playcekube
NAME                                  READY   STATUS    RESTARTS      AGE
csi-nfs-controller-6f796f9bc9-z4slw   3/3     Running   33 (8h ago)   5d23h
csi-nfs-node-25z8k                    3/3     Running   0             5d23h
csi-nfs-node-4mk8d                    3/3     Running   0             5d23h
csi-nfs-node-6lhhm                    3/3     Running   0             5d23h
csi-nfs-node-jghps                    3/3     Running   0             5d23h
csi-nfs-node-mlqg9                    3/3     Running   0             5d23h
ingress-nginx-controller-dmgwr        1/1     Running   0             5d23h
ingress-nginx-controller-qv92f        1/1     Running   0             5d23h

# all 정보 확인
kubectl get all -n playcekube
NAME                                      READY   STATUS    RESTARTS      AGE
pod/csi-nfs-controller-6f796f9bc9-z4slw   3/3     Running   33 (8h ago)   5d23h
pod/csi-nfs-node-25z8k                    3/3     Running   0             5d23h
pod/csi-nfs-node-4mk8d                    3/3     Running   0             5d23h
pod/csi-nfs-node-6lhhm                    3/3     Running   0             5d23h
pod/csi-nfs-node-jghps                    3/3     Running   0             5d23h
pod/csi-nfs-node-mlqg9                    3/3     Running   0             5d23h
pod/ingress-nginx-controller-dmgwr        1/1     Running   0             5d23h
pod/ingress-nginx-controller-qv92f        1/1     Running   0             5d23h

NAME                                         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
service/ingress-nginx-controller-admission   ClusterIP   10.233.63.123   <none>        443/TCP   5d23h

NAME                                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                                             AGE
daemonset.apps/csi-nfs-node               5         5         5       5            5           kubernetes.io/os=linux                                    5d23h
daemonset.apps/ingress-nginx-controller   2         2         2       2            2           kubernetes.io/os=linux,node-role.kubernetes.io/ingress=   5d23h

NAME                                 READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/csi-nfs-controller   1/1     1            1           5d23h

NAME                                            DESIRED   CURRENT   READY   AGE
replicaset.apps/csi-nfs-controller-6f796f9bc9   1         1         1       5d23h

 

 playcekube의 namespace는 kube-system의 namespace에 포함되지 않는 시스템적인 pod들이 구성되어 있습니다. 대표적으로 CSI와 Ingress가 포함되어 있네요. CSI는 Pod에서 사용할수 있는 공유스토리지를 연결해주는 역할을 하고, Ingress는 외부에서 내부로 접근하게 되는 서비스들의 Domain분기를 지원하는 역할을 합니다. 

 

 playcekube-dev로 되어있는 Namespace는 아쉽게도 비어있습니다. 다른 Addon들이 사용하거나, 개발 목적으로 생성되어 있는 Namespace로 보이네요 

 

### playcekube-dev namespace 정보 확인 

# pod 정보 확인 
kubectl get pod -n playcekube-dev
No resources found in playcekube-dev namespace.

# all 정보 확인 
kubectl get all -n playcekube-dev
No resources found in playcekube-dev namespace.

 

  kubectl로 확인 가능한 정보는 얼추 본거 같은데요. Pod가 사용하게 되는 config라던지 Service Account정보등은 나중에 확인해 보도록 하고, 실제 서버에 구성되어 있는 내역을 확인해 보도록 하겠습니다. 

 

 Deploy Node는 구축을 위한 데이터 저장소와 kubespray를 운영하는 서버입니다. 추가로 Playce Kube에서는 Bastion서버로도 운영한다는것을 우리는 kubectl 명령어를 사용하면서 알 수 있었죠. 하지만 구성요소들이 containerd가 아닌 단독으로 운영되는 docker로 구성이 되어 있다는게 특이점 이라고 볼 수 있겠습니다. 

 

### Deploy Node 정보

root@deploy:~# docker ps
CONTAINER ID   IMAGE                                COMMAND                  CREATED      STATUS       PORTS                                                                            NAMES
7567a7498f23   rancher/rancher:v2.6.6               "entrypoint.sh"          6 days ago   Up 8 hours   0.0.0.0:8080->80/tcp, :::8080->80/tcp, 0.0.0.0:8443->443/tcp, :::8443->443/tcp   playcekube_rancher
d9b74e1b2ff7   quay.io/keycloak/keycloak:18.0.2     "/opt/keycloak/bin/k…"   6 days ago   Up 6 days    8080/tcp, 8443/tcp, 0.0.0.0:9443->9443/tcp, :::9443->9443/tcp                    playcecloud_keycloak
eef1c27bc9db   itsthenetwork/nfs-server-alpine:12   "/usr/bin/nfsd.sh"       6 days ago   Up 6 days    0.0.0.0:2049->2049/tcp, :::2049->2049/tcp                                        playcecloud_nfs
0526d61891e0   nginx:1.20.2                         "/docker-entrypoint.…"   6 days ago   Up 6 days    0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp         playcecloud_repository
07da61e60e76   ubuntu/bind9:9.16-21.10_edge         "docker-entrypoint.sh"   6 days ago   Up 5 days    0.0.0.0:53->53/tcp, 0.0.0.0:53->53/udp, :::53->53/tcp, :::53->53/udp, 953/tcp    playcecloud_bind9
ad90e7c1e75c   registry:2.7.1                       "/entrypoint.sh /etc…"   6 days ago   Up 6 days    0.0.0.0:5000->5000/tcp, :::5000->5000/tcp                                        playcecloud_registry

 

 

 생각보다 많은 요소를 포함하고 있다는 것을 알 수 있습니다. 특이한것은 rancher가 있는 것으로 보아 멀티클러스터를 지원하는 것 같고, NFS 서버를 테스트 용으로 지원하고 있습니다. 

 repository를 구성했던 만큼 디스크 용량을 얼마나 사용하고 있는지 보면 장시간 다운로드 받았던 파일들이 있는 /playcecloud 경로가 많이 쓰이고 있다는 것을 알 수 있습니다. 일반적인 서비스였다면 증설이 필요할 것 같네요. 
*참고: /playcecloud/srcdata 의 경로에 tar로 받았던 파일들이 유지되고 있습니다. 이 파일들을 삭제하면 약 200GB의 정도용량확보에 도움이 됩니다. 

 

### Disk 정보 확인 
root@deploy:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           795M  1.7M  794M   1% /run
/dev/vda1        49G   11G   39G  21% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/vda15      105M  5.3M  100M   5% /boot/efi
/dev/vdb1       492G  432G   35G  93% /playcecloud
tmpfs           795M  4.0K  795M   1% /run/user/0
overlay          49G   11G   39G  21% /var/lib/docker/overlay2/19d06c81882bc388d19edfbd36c15b6d3311fff27fdd2b1a4b53650c5b1e99f4/merged
overlay          49G   11G   39G  21% /var/lib/docker/overlay2/dc02b76ef64b13631902d1b497b1a2ba6187523eee1967c91ed9858a68255f10/merged
overlay          49G   11G   39G  21% /var/lib/docker/overlay2/78c54bead6ad76e5fddaa2d51894150b978aa0cbc81d08267887422e735f76b6/merged
overlay          49G   11G   39G  21% /var/lib/docker/overlay2/d6fc98e4d11cebef0091a59e681d9752ed7b22b38b4696261617f8fe0ff24bd1/merged
overlay          49G   11G   39G  21% /var/lib/docker/overlay2/c7515f1126ef2421747f731c5bdb77160d31a3e210786f05b0ba987006e919b0/merged
overlay          49G   11G   39G  21% /var/lib/docker/overlay2/72a0dc096f197f6ca7f2ab9dd0aa1a35657f50db2a07155b3f2ccf955ee028ca/merged

 

 그럼 빠르게 Control-Plane의 내용도 확인해보겠습니다. containerd를 확인하는 명령어는 crictl 로 확인이 가능합니다. 위에서 확인했던대로 Control-Plane은 kube-system namespace의 요소들을 모두 포함하고 있습니다. 

 

### Control-Plane-01 정보 확인 

# containerd ps 정보 확인 
crictl  ps
CONTAINER           IMAGE               CREATED             STATE               NAME                      ATTEMPT             POD ID
369a693ab7de3       398b2c18375df       10 hours ago        Running             kube-scheduler            20                  1aab72357ac30
e50ec238ec29a       41ff053508988       34 hours ago        Running             kube-controller-manager   20                  dd83283e6f7aa
d0dc0600c35d0       c0d565df2c900       37 hours ago        Running             kube-apiserver            2                   01934052bf476
14190bf4eec2d       b1d3401f372c2       6 days ago          Running             nfs                       0                   e8b29c1140e41
e22d16051acc1       cb03930a2bd42       6 days ago          Running             node-driver-registrar     0                   e8b29c1140e41
f127dd196b06a       8b6940b4f6952       6 days ago          Running             liveness-probe            0                   e8b29c1140e41
62447711b0cde       e57a417f15d36       6 days ago          Running             metrics-server            0                   8facebe695cac
b6f7d425e7721       6570786a0fd3b       6 days ago          Running             calico-node               0                   de30bb688a626
9a8e9c20b7494       c1cfbd59f7747       6 days ago          Running             kube-proxy                0                   fa1f559dd5f91
ee14eba4493fb       a7908fd5fb88f       6 days ago          Running             etcd                      0                   7e57247780421

# Containerd pod 정보 확인 
crictl  pods
POD ID              CREATED             STATE               NAME                                          NAMESPACE           ATTEMPT             RUNTIME
e8b29c1140e41       6 days ago          Ready               csi-nfs-node-4mk8d                            playcekube          0                   (default)
8facebe695cac       6 days ago          Ready               metrics-server-7855bfbc9b-9q4k5               kube-system         0                   (default)
de30bb688a626       6 days ago          Ready               calico-node-l42l9                             kube-system         0                   (default)
fa1f559dd5f91       6 days ago          Ready               kube-proxy-s6gk2                              kube-system         0                   (default)
1aab72357ac30       6 days ago          Ready               kube-scheduler-playcekube-master01            kube-system         0                   (default)
dd83283e6f7aa       6 days ago          Ready               kube-controller-manager-playcekube-master01   kube-system         0                   (default)
7e57247780421       6 days ago          Ready               etcd-playcekube-master01                      kube-system         0                   (default)
01934052bf476       6 days ago          Ready               kube-apiserver-playcekube-master01            kube-system         0                   (default)

 

 이때 pods 와 ps가 다른데요 Pod는 여러개의 container를 운영 할 수 있기때문입니다. 

 

그럼 worker 도 확인 해보겠습니다. Control-Plane과 비슷하지만 조금더 많은 Pod들이 있습니다. Add-On이 설치 되지 않은 상태에서는 시스템 Pod만 주로 보이네요. 

 

### Worker 정보 확인

# worker-01 ps 정보 확인 
crictl ps
CONTAINER           IMAGE               CREATED             STATE               NAME                    ATTEMPT             POD ID
0d3ac553daebb       b09d97dcb88ca       38 hours ago        Running             cluster-register        3                   042076ed8c944
f487ec54c29da       b1d3401f372c2       6 days ago          Running             nfs                     0                   85f7988b36800
382c0b857ff3b       cb03930a2bd42       6 days ago          Running             node-driver-registrar   0                   85f7988b36800
69b9f3bc41efd       8b6940b4f6952       6 days ago          Running             liveness-probe          0                   85f7988b36800
16cc7c1cb26d5       75bdf78d9d67e       6 days ago          Running             controller              0                   dedeb13decd85
f719f07f5364c       6570786a0fd3b       6 days ago          Running             calico-node             0                   54028fc8823fc
f97e742413e55       c1cfbd59f7747       6 days ago          Running             kube-proxy              0                   309e9b086ae5c
7f42a03760ab9       f6987c8d6ed59       6 days ago          Running             nginx-proxy             0                   6601a072ea24d

# worker-01 pods 정보 확인 
crictl pods
POD ID              CREATED             STATE               NAME                                    NAMESPACE           ATTEMPT             RUNTIME
042076ed8c944       6 days ago          Ready               cattle-cluster-agent-679697c475-9l4p6   cattle-system       0                   (default)
85f7988b36800       6 days ago          Ready               csi-nfs-node-6lhhm                      playcekube          0                   (default)
dedeb13decd85       6 days ago          Ready               ingress-nginx-controller-qv92f          playcekube          0                   (default)
54028fc8823fc       6 days ago          Ready               calico-node-sn89s                       kube-system         0                   (default)
309e9b086ae5c       6 days ago          Ready               kube-proxy-f4tw7                        kube-system         0                   (default)
6601a072ea24d       6 days ago          Ready               nginx-proxy-playcekube-worker01         kube-system         0                   (default)

# worker-02 ps 정보 확인 
crictl ps
CONTAINER           IMAGE               CREATED             STATE               NAME                      ATTEMPT             POD ID
85aeae11e6dbd       c3dfb4b04796b       9 hours ago         Running             csi-provisioner           33                  68d488cc24638
78d1933b51250       b09d97dcb88ca       38 hours ago        Running             cluster-register          7                   b911ead17f162
8a5fc8e725e13       fcd3512f2a7c5       38 hours ago        Running             calico-kube-controllers   3                   8ff382c5ec525
2d15381361ee7       b1d3401f372c2       6 days ago          Running             nfs                       0                   0cecd714e61cc
f5c566f0a1e1b       b1d3401f372c2       6 days ago          Running             nfs                       0                   68d488cc24638
10bf2a84630d5       cb03930a2bd42       6 days ago          Running             node-driver-registrar     0                   0cecd714e61cc
b18acf5fd4212       8b6940b4f6952       6 days ago          Running             liveness-probe            0                   68d488cc24638
0b82df77896d0       8b6940b4f6952       6 days ago          Running             liveness-probe            0                   0cecd714e61cc
0b287b6e0f8ca       75bdf78d9d67e       6 days ago          Running             controller                0                   71f65d4505ebd
1ed9fc4386e0c       6570786a0fd3b       6 days ago          Running             calico-node               0                   6e61ec8a17ca4
8d6292edc0786       c1cfbd59f7747       6 days ago          Running             kube-proxy                0                   c2856944ccd08
be9807e476ac2       f6987c8d6ed59       6 days ago          Running             nginx-proxy               0                   84407c564f2d4

# worker-02 pods 정보 확인 
POD ID              CREATED             STATE               NAME                                      NAMESPACE           ATTEMPT             RUNTIME
b911ead17f162       6 days ago          Ready               cattle-cluster-agent-679697c475-q5s4d     cattle-system       0                   (default)
0cecd714e61cc       6 days ago          Ready               csi-nfs-node-25z8k                        playcekube          0                   (default)
68d488cc24638       6 days ago          Ready               csi-nfs-controller-6f796f9bc9-z4slw       playcekube          0                   (default)
71f65d4505ebd       6 days ago          Ready               ingress-nginx-controller-dmgwr            playcekube          0                   (default)
8ff382c5ec525       6 days ago          Ready               calico-kube-controllers-b8d4d8984-82xn7   kube-system         0                   (default)
6e61ec8a17ca4       6 days ago          Ready               calico-node-zx9z6                         kube-system         0                   (default)
c2856944ccd08       6 days ago          Ready               kube-proxy-rgh8j                          kube-system         0                   (default)
84407c564f2d4       6 days ago          Ready               nginx-proxy-playcekube-worker02           kube-system         0                   (default)

 

 이렇게 간단하게 구성된 Playce Kube를 확인해 봤습니다. Kubernetes를 쉽게 설치 할 수는 있지만 아직 알아보고 확인해 볼게 많은것 같습니다. 그럼 구성가능한 Add-On을 이용하여 실제 어플리케이션들을 설치하고 운영준비를 해보도록 하겠습니다. 

 

 

*참고: kubernetes System Namespace

'kubernetes' 카테고리의 다른 글

Playce Kube - CNI(Calico)  (0) 2023.06.26
Playce Kube - 서버 준비  (0) 2023.02.21
Playce Kube - System Design  (0) 2023.01.14
Playce Kube - 설치  (0) 2023.01.14
Playce Kube - 구조  (0) 2022.08.29