본문 바로가기
IT 잡지식/DevOps

[CKA] KodeKloud - Explore Environment

by 쯀리♥️ 2024. 8. 8.

안녕하세요, 쯀리입니다.

오늘은 CKA 새로운 강입니다. 

8강의 Explore Environment를 배워보겠습니다. 

 

https://kubernetes.io/docs/concepts/architecture/nodes/

 

Nodes

Kubernetes runs your workload by placing containers into Pods to run on Nodes. A node may be a virtual or physical machine, depending on the cluster. Each node is managed by the control plane and contains the services necessary to run Pods. Typically you h

kubernetes.io

 


 

Explore Environment

클러스터 환경을 탐색하고 이해하는 과정을 의미합니다. 이를 통해 클러스터의 구조와 동작 방식을 파악할 수 있고, 다양한 리소스가 어떻게 상호작용하는지 배울 수 있습니다. 오늘 배울 주제는 다음과 같은 것들이 포함될 수 있어요:

1. 클러스터 구조 이해

  • 노드(Node): 클러스터의 기본 구성 요소로, 마스터 노드와 워커 노드로 구성됩니다.
    • 마스터 노드: 클러스터 관리 작업을 수행하며, API 서버, 컨트롤러 매니저, 스케줄러 등을 포함합니다.
    • 워커 노드: 애플리케이션 워크로드가 실행되는 노드로, Kubelet, Kube-Proxy 등이 포함됩니다.

2. 네트워크의 이해

해당 강의를 진행하며 네트워크에 대한 이해도가 필요합니다. 

 


Quiz

1. How many nodes are part of this cluster?
Including the controlplane and worker nodes.

controlplane ~ ➜  k get nodes -A
NAME           STATUS   ROLES           AGE     VERSION
controlplane   Ready    control-plane   7m14s   v1.30.0
node01         Ready    <none>          6m16s   v1.30.0

정답: 2개

 

2. What is the Internal IP address of the controlplane node in this cluster?

controlplane ~ ➜  k get node controlplane -o wide
NAME           STATUS   ROLES           AGE     VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION   CONTAINER-RUNTIME
controlplane   Ready    control-plane   9m15s   v1.30.0   192.29.25.6   <none>        Ubuntu 22.04.4 LTS   5.4.0-1106-gcp   containerd://1.6.26

정답: 192.29.25.6

3. What is the network interface configured for cluster connectivity on the controlplane node?
node-to-node communication

controlplane ~ ✖ ifconfig
..
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 192.29.25.6  netmask 255.255.255.0  broadcast 192.29.25.255
        ether 02:42:c0:1d:19:06  txqueuelen 0  (Ethernet)
        RX packets 3426  bytes 385386 (385.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2476  bytes 1488647 (1.4 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

정답: eth0

4. What is the MAC address of the interface on the controlplane node?
정답: 02:42:c0:1d:19:06

5. What is the IP address assigned to node01?

controlplane ~ ➜  k get node node01 -o wide
NAME     STATUS   ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION   CONTAINER-RUNTIME
node01   Ready    <none>   16m   v1.30.0   192.29.25.9   <none>        Ubuntu 22.04.4 LTS   5.4.0-1106-gcp   containerd://1.6.26

정답 : 192.29.25.9

6. What is the MAC address assigned to node01?
클러스터에서는 보통 Control Plane(컨트롤 플레인) 노드와 Worker Node(워커 노드)가 분리되어 운영됩니다. 이 두 종류의 노드는 서로 다른 역할을 하며, 필요에 따라 직접 SSH로 접속하여 확인해야합니다. 

controlplane ~ ✖ ssh root@192.29.25.9

node01 ~ ➜  ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 192.29.25.9  netmask 255.255.255.0  broadcast 192.29.25.255
        ether 02:42:c0:1d:19:09  txqueuelen 0  (Ethernet)
        RX packets 3503  bytes 1743889 (1.7 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3647  bytes 428581 (428.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

정답: 02:42:c0:1d:19:09

7. We use Containerd as our container runtime. What is the interface/bridge created by Containerd on the controlplane node?

"interface/bridge"는 Containerd가 Kubernetes의 컨테이너 런타임으로 사용될 때, 네트워크 인터페이스 또는 브리지 네트워크가 어떻게 설정되는지에 대한 질문입니다. 

Kubernetes와 Containerd의 네트워크 구성

Kubernetes 클러스터에서 Containerd를 사용할 때, 네트워크 구성은 일반적으로 CNI(Container Network Interface) 플러그인을 통해 관리됩니다. CNI 플러그인은 Kubernetes에서 다양한 네트워크 솔루션을 사용할 수 있게 합니다. 대표적인 CNI 플러그인으로는 Flannel, Calico, Weave 등이 있습니다.

CNI의 기본적인 위치는 : /etc/cni/net.d/ 에 있습니다. 

controlplane ~ ✖ ifconfig
cni0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1400
        inet 10.244.0.1  netmask 255.255.255.0  broadcast 10.244.0.255
        ether 56:ab:92:ba:c5:57  txqueuelen 1000  (Ethernet)
        RX packets 3944  bytes 316248 (316.2 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3985  bytes 395967 (395.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

CNI 위치

controlplane /etc/cni/net.d ➜  ls
10-flannel.conflist

 

10. What is the state of the interface cni0?

controlplane ~ ➜  ip addr | grep cni0
3: cni0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc noqueue state UP group default qlen 1000
    inet 10.244.0.1/24 brd 10.244.0.255 scope global cni0
4: vethdb5db372@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc noqueue master cni0 state UP group default 
5: veth1eab6e0e@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc noqueue master cni0 state UP group default

정답 : UP

11. If you were to ping google from the controlplane node, which route does it take?
What is the IP address of the Default Gateway?

ip route show default 명령어는 리눅스 시스템에서 현재 설정된 기본 경로(default route)를 확인하는 데 사용됩니다. 기본 경로는 네트워크 트래픽이 목적지 주소를 찾지 못할 때 사용하는 경로를 지정합니다. 이를 통해 시스템이 외부 네트워크와 통신할 수 있습니다.

controlplane ~ ➜  ip route show default
default via 172.25.0.1 dev eth1
  1. 여기서 각 항목의 의미는 다음과 같습니다:
    • default: 기본 경로를 나타냅니다.
    • via 172.25.0.1: 172.25.0.1 주소를 통해 트래픽을 라우팅합니다.
    • dev eth1: eth1 네트워크 인터페이스를 통해 라우팅합니다.

 

정답 : 172.25.0.1

 

12. What is the port the kube-scheduler is listening on in the controlplane node?

controlplane ~ ➜  netstat -nplt | grep scheduler
tcp        0      0 127.0.0.1:10259         0.0.0.0:*               LISTEN      3754/kube-scheduler

 

13. Notice that ETCD is listening on two ports. Which of these have more client connections established?

controlplane ~ ➜  netstat -nplt | grep 192.29.25.6
tcp        0      0 192.29.25.6:2379        0.0.0.0:*               LISTEN      3750/etcd           
tcp        0      0 192.29.25.6:2380        0.0.0.0:*               LISTEN      3750/etcd         

controlplane ~ ➜  netstat -anp | grep etcd | grep 2380 | wc -l 
1

controlplane ~ ➜  netstat -anp | grep etcd | grep 2379 | wc -l 
61

정답: 2379

Correct! That's because 2379 is the port of ETCD to which all control plane components connect to. 2380 is only for etcd peer-to-peer connectivity. When you have multiple controlplane nodes. In this case we don't.


오늘은 Environment에 대해 알아보았습니다. 기본적인 리눅스 사용지식 없이는 이해하기 힘들수도 있을것 같습니다. 

 


참조

 Udemy Labs - Certified Kubernetes Administrator with Practice Tests

'IT 잡지식 > DevOps' 카테고리의 다른 글

[CKA] KodeKloud - Deploy Network Solution  (0) 2024.08.08
[CKA] KodeKloud - CNI  (0) 2024.08.08
[CKA] KodeKloud - Storage Class  (0) 2024.07.29
[CKA] KodeKloud - Persistent Volume Claims  (0) 2024.07.28
[CKA] KodeKloud - Network Policy  (0) 2024.07.28