Istio Hands-on Study [1기]

1주차 : Istio 첫걸음 (1) - 실습환경설정

구구달스 2025. 4. 12. 18:12
CloudNet@ 가시다님이 진행하는 Istio Hands-on Study [1기]

 Kind(Kubernetes in Docker)

  • Docker 컨테이너 안에 쿠버네티스 클러스터를 실행할 수 있게 해주는 오픈소스 도구

1. Docker 컨테이너를 노드로 사용

  • Kubernetes 클러스터의 각 노드(Node) 는 실제 VM이나 서버 대신, 도커 컨테이너로 만들어집니다.
  • Kind는 이 노드 컨테이너들을 자동으로 생성하고 설정해줍니다.

2. 클러스터 구성

  • Kind는 컨트롤 플레인(Control Plane) 과 워커 노드(Worker Node) 를 도커 컨테이너로 구분하여 클러스터를 구성합니다.
    • 📦 kind-control-plane: Kubernetes API 서버, 스케줄러 등 포함
    • 📦 kind-worker, kind-worker2: 실제 애플리케이션이 배포되는 노드

WSL2

  • Windows 안에서 리눅스를 실행할 수 있게 해주는 기능

🔧 WSL2의 특징

🧠 진짜 리눅스 커널 사용 WSL1보다 성능과 호환성이 좋아요
📂 윈도우 ↔ 리눅스 파일 공유 드래그&드롭, 복사/붙여넣기 가능
🐳 Docker 사용 가능 WSL2 위에서 Docker 실행이 가능해요
⚡ 빠른 부팅 가상머신보다 훨씬 빠르게 시작돼요

✅ 실습환경

  • WSL2 (Ubuntu) 에 Docker 설치
ssoon@DESKTOP-UQRJB87:~$ curl -fsSL https://get.docker.com -o get-docker.sh
ssoon@DESKTOP-UQRJB87:~$ sudo sh ./get-docker.sh
  • 설치 확인
ssoon@DESKTOP-UQRJB87:~$ docker info
Client: Docker Engine - Community
 Version:    28.0.4
 Context:    default
 Debug Mode: false
 ...
 
ssoon@DESKTOP-UQRJB87:~$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

ssoon@DESKTOP-UQRJB87:~$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
     Active: active (running) since Sat 2025-04-12 17:36:56 KST; 1min 47s ago
TriggeredBy: ● docker.socket
...

ssoon@DESKTOP-UQRJB87:~$ cat /etc/group | grep docker
docker:x:1001:ssoon
  • Ubuntu 시스템에서 AppArmor 보안 기능을 멈추고 비활성화
ssoon@DESKTOP-UQRJB87:~$ sudo systemctl stop apparmor && sudo systemctl disable apparmor
  • Ubuntu 시스템에서 몇 가지 유용한 도구를 설치
    • bridge-utils: 네트워크 브릿지(네트워크 연결 관리)를 설정하는 도구.
    • net-tools: 네트워크 상태 확인(ifconfig, netstat 등) 도구.
    • jq: JSON 데이터를 보기 편하게 처리하는 도구.
    • tree: 폴더 구조를 트리 모양으로 보여주는 도구.
    • unzip: 압축 파일(.zip)을 푸는 도구.
    • kubectx: Kubernetes 클러스터 간 전환을 쉽게 해주는 도구.
    • kubecolor: Kubernetes 명령어(kubectl) 결과를 색깔로 보기 좋게 보여줘
ssoon@DESKTOP-UQRJB87:~$ sudo apt update && sudo apt-get install bridge-utils net-tools jq tree unzip kubectx kubecolor -y
  • kind 을 설치합니다.
ssoon@DESKTOP-UQRJB87:~$ curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.27.0/kind-linux-amd64
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    97  100    97    0     0    231      0 --:--:-- --:--:-- --:--:--   232
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  9.9M  100  9.9M    0     0  6094k      0  0:00:01  0:00:01 --:--:-- 61.7M
ssoon@DESKTOP-UQRJB87:~$ chmod +x ./kind
ssoon@DESKTOP-UQRJB87:~$ sudo mv ./kind /usr/local/bin/kind
ssoon@DESKTOP-UQRJB87:~$ kind --version
kind version 0.27.0
  • kubectl 를 설치합니다.
ssoon@DESKTOP-UQRJB87:~$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   138  100   138    0     0    334      0 --:--:-- --:--:-- --:--:--   334
100 54.6M  100 54.6M    0     0  31.8M      0  0:00:01  0:00:01 --:--:-- 48.1M
ssoon@DESKTOP-UQRJB87:~$ chmod +x kubectl
ssoon@DESKTOP-UQRJB87:~$ sudo mv ./kubectl /usr/bin
ssoon@DESKTOP-UQRJB87:~$ sudo kubectl version --client=true
Client Version: v1.32.3
Kustomize Version: v5.5.0
  • Helm 을 설치합니다.
ssoon@DESKTOP-UQRJB87:~$ curl -s https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
Downloading https://get.helm.sh/helm-v3.17.3-linux-amd64.tar.gz
Verifying checksum... Done.
Preparing to install helm into /usr/local/bin
helm installed into /usr/local/bin/helm
ssoon@DESKTOP-UQRJB87:~$ helm version
version.BuildInfo{Version:"v3.17.3", GitCommit:"e4da49785aa6e6ee2b86efd5dd9e43400318262b", GitTreeState:"clean", GoVersion:"go1.23.7"}
  • kubectl 명령어의 자동 완성 기능을 활성화하고, 이를 영구적으로 유지하도록 .bashrc에 추가
ssoon@DESKTOP-UQRJB87:~$ source <(kubectl completion bash)
ssoon@DESKTOP-UQRJB87:~$ echo 'source <(kubectl completion bash)' >> ~/.bashrc
  • kubectl을 k로 단축하고 자동 완성 기능을 추가해 .bashrc에 저장
ssoon@DESKTOP-UQRJB87:~$ echo 'alias k=kubectl' >> ~/.bashrc
ssoon@DESKTOP-UQRJB87:~$ echo 'complete -o default -F __start_kubectl k' >> ~/.bashrc
  • kube-ps1 저장소를 클론하고, 터미널 프롬프트에 Kubernetes 클러스터 정보를 표시하도록 .bashrc에 설정을 추가
ssoon@DESKTOP-UQRJB87:~$ git clone https://github.com/jonmosco/kube-ps1.git
Cloning into 'kube-ps1'...
remote: Enumerating objects: 766, done.
remote: Counting objects: 100% (201/201), done.
remote: Compressing objects: 100% (113/113), done.
remote: Total 766 (delta 110), reused 167 (delta 84), pack-reused 565 (from 1)
Receiving objects: 100% (766/766), 7.72 MiB | 21.08 MiB/s, done.
Resolving deltas: 100% (404/404), done.
ssoon@DESKTOP-UQRJB87:~$ echo -e "source $PWD/kube-ps1/kube-ps1.sh" >> ~/.bashrc
ssoon@DESKTOP-UQRJB87:~$ cat <<"EOT" >> ~/.bashrc
KUBE_PS1_SYMBOL_ENABLE=true
function get_cluster_short() {
  echo "$1" | cut -d . -f1
}
KUBE_PS1_CLUSTER_FUNCTION=get_cluster_short
KUBE_PS1_SUFFIX=') '
PS1='$(kube_ps1)'$PS1
EOT
  • Krew 을 설치합니다.
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-UQRJB87:~/istio-in-action/book-source-code-master$ (
  set -x; cd "$(mktemp -d)" &&
  OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
  ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/krew-${OS}_${ARCH}.tar.gz" &&
  tar zxvf krew-${OS}_${ARCH}.tar.gz &&
  KREW=./krew-"${OS}_${ARCH}" &&
  "$KREW" install krew
)
++ mktemp -d
+ cd /tmp/tmp.HzLPrar22Y
++ uname
++ tr '[:upper:]' '[:lower:]'
+ OS=linux
++ uname -m
++ sed -e s/x86_64/amd64/ -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/'
+ ARCH=amd64
+ curl -fsSLO https://github.com/kubernetes-sigs/krew/releases/latest/download/krew-linux_amd64.tar.gz
+ tar zxvf krew-linux_amd64.tar.gz
./._LICENSE
tar: Ignoring unknown extended header keyword 'LIBARCHIVE.xattr.com.apple.provenance'
./LICENSE
./._krew-linux_amd64
tar: Ignoring unknown extended header keyword 'LIBARCHIVE.xattr.com.apple.provenance'
./krew-linux_amd64
+ KREW=./krew-linux_amd64
+ ./krew-linux_amd64 install krew
Adding "default" plugin index from https://github.com/kubernetes-sigs/krew-index.git.
Updated the local copy of plugin index.
Installing plugin: krew
Installed plugin: krew
\
 | Use this plugin:
 |      kubectl krew
 | Documentation:
 |      https://krew.sigs.k8s.io/
 | Caveats:
 | \
 |  | krew is now installed! To start using kubectl plugins, you need to add
 |  | krew's installation directory to your PATH:
 |  |
 |  |   * macOS/Linux:
 |  |     - Add the following to your ~/.bashrc or ~/.zshrc:
 |  |         export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
 |  |     - Restart your shell.
 |  |
 |  |   * Windows: Add %USERPROFILE%\.krew\bin to your PATH environment variable
 |  |
 |  | To list krew commands and to get help, run:
 |  |   $ kubectl krew
 |  | For a full list of available plugins, run:
 |  |   $ kubectl krew search
 |  |
 |  | You can find documentation at
 |  |   https://krew.sigs.k8s.io/docs/user-guide/quickstart/.
 | /
/
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-UQRJB87:~/istio-in-action/book-source-code-master$ echo 'export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"' >> ~/.bashrc
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-UQRJB87:~/istio-in-action/book-source-code-master$ source ~/.bashrc
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-UQRJB87:~/istio-in-action/book-source-code-master$ kubectl krew version
OPTION            VALUE
GitTag            v0.4.5
GitCommit         e7e5b61
IndexURI          https://github.com/kubernetes-sigs/krew-index.git
BasePath          /home/ssoon/.krew
IndexPath         /home/ssoon/.krew/index/default
InstallPath       /home/ssoon/.krew/store
BinPath           /home/ssoon/.krew/bin
DetectedPlatform  linux/amd64
  • kubectl 플러그인 관리자인 krew를 사용하여 쿠버네티스 리소스의 깔끔한 출력을 위한 neat과 여러 파드의 로그를 한 번에 볼 수 있는 stern 두 가지 플러그인을 설치
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-UQRJB87:~/istio-in-action/book-source-code-master$ kubectl krew install neat stern
Updated the local copy of plugin index.
Installing plugin: neat
Installed plugin: neat
\
 | Use this plugin:
 |      kubectl neat
 | Documentation:
 |      https://github.com/itaysk/kubectl-neat
/
WARNING: You installed plugin "neat" from the krew-index plugin repository.
   These plugins are not audited for security by the Krew maintainers.
   Run them at your own risk.
Installing plugin: stern
Installed plugin: stern
\
 | Use this plugin:
 |      kubectl stern
 | Documentation:
 |      https://github.com/stern/stern
/
WARNING: You installed plugin "stern" from the krew-index plugin repository.
   These plugins are not audited for security by the Krew maintainers.
   Run them at your own risk.
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-UQRJB87:~/istio-in-action/book-source-code-master$ kubectl neat version
kubectl-neat version: 2.0.4
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-UQRJB87:~/istio-in-action/book-source-code-master$ kubectl stern --version
version: 1.32.0
commit: 5e06930fe21f951f079880ec2c13cd688aa5ca09
built at: 2025-01-21T01:17:09Z

Kind 로 k8s 배포

ssoon@DESKTOP-UQRJB87:~$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
ssoon@DESKTOP-UQRJB87:~$ mkdir ~/aews-labs
ssoon@DESKTOP-UQRJB87:~$ cd ~/aews-labs
  • KIND(Kubernetes IN Docker)를 사용하여 로컬에서 Kubernetes 클러스터를 생성
ssoon@DESKTOP-UQRJB87:~/aews-labs$ kind create cluster --name myk8s --image kindest/node:v1.32.2 --config - <<EOF
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
  extraPortMappings: #호스트(로컬 머신)의 포트를 컨테이너 내부의 포트에 매핑하여 외부에서 접근할 수 있도록 설정
  - containerPort: 30000
    hostPort: 30000 #컨테이너의 30000번 포트를 호스트의 30000번 포트에 매핑
  - containerPort: 30001
    hostPort: 30001
  - containerPort: 30002
    hostPort: 30002
  - containerPort: 30003
    hostPort: 30003
  kubeadmConfigPatches:#[KIND가 내부적으로 사용하는 kubeadm 설정을 수정(패치)하기 위한 섹션]
  - | #YAML에서 여러 줄의 문자열을 정의할 때 사용
    kind: ClusterConfiguration  
    controllerManager: #Kubernetes Controller Manager가 모든 네트워크 인터페이스(0.0.0.0)에서 요청을 수신하도록 설정
      extraArgs:
        bind-address: "0.0.0.0"
    etcd: #etcd(데이터베이스)의 메트릭을 외부에서 수신할 수 있도록 0.0.0.0:2381에서 수신하도록 설정
      local:
        extraArgs:
          listen-metrics-urls: "http://0.0.0.0:2381"
    scheduler: #Kubernetes Scheduler도 모든 인터페이스에서 요청을 수신하도록 설정
      extraArgs:
        bind-address: "0.0.0.0"
  - |
    kind: KubeProxyConfiguration
    metricsBindAddress: "0.0.0.0" #"0.0.0.0": Kube-Proxy의 메트릭을 모든 네트워크 인터페이스에서 수신하도록 설정
EOF
Creating cluster "myk8s" ...
 ✓ Ensuring node image (kindest/node:v1.32.2) 🖼
 ✓ Preparing nodes 📦
 ✓ Writing configuration 📜
 ✓ Starting control-plane 🕹️
 ✓ Installing CNI 🔌
 ✓ Installing StorageClass 💾
Set kubectl context to "kind-myk8s"
You can now use your cluster with:

kubectl cluster-info --context kind-myk8s

Thanks for using kind! 😊
  • Kind 클러스터의 상태와 환경 설정
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-UQRJB87:~/aews-labs$ kind get nodes --name myk8s
myk8s-control-plane

(⎈|kind-myk8s:N/A) ssoon@DESKTOP-UQRJB87:~/aews-labs$ kubens default
✔ Active namespace is "default"

(⎈|kind-myk8s:default) ssoon@DESKTOP-UQRJB87:~/aews-labs$ docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
0467263ae846   bridge    bridge    local
ad4e895cd1fa   host      host      local
9e7b2ec4f002   kind      bridge    local
ae092270a351   none      null      local
  • docker inspect kind를 실행해 kind 클러스터의 네트워크 정보(이름: kind, IP: 172.18.0.2, 컨테이너: myk8s-control-plane)를 JSON 형식으로 보여주고, jq로 출력한 결과
  • Kind 는 별도 도커 네트워크 생성 후 사용 : 기본값 172.18.0.0/16
(⎈|kind-myk8s:default) ssoon@DESKTOP-UQRJB87:~/aews-labs$ docker inspect kind | jq
[
  {
    "Name": "kind",
    "Id": "9e7b2ec4f0021ee61db6f17d885a42819f66e7785a28aeac5996ff8d822eaf85",
    "Created": "2025-04-12T17:56:18.014724522+09:00",
    "Scope": "local",
    "Driver": "bridge",
    "EnableIPv4": true,
    "EnableIPv6": true,
    "IPAM": {
      "Driver": "default",
      "Options": {},
      "Config": [
        {
          "Subnet": "fc00:f853:ccd:e793::/64"
        },
        {
          "Subnet": "172.18.0.0/16",
          "Gateway": "172.18.0.1"
        }
      ]
    },
    "Internal": false,
    "Attachable": false,
    "Ingress": false,
    "ConfigFrom": {
      "Network": ""
    },
    "ConfigOnly": false,
    "Containers": {
      "d6cc5bfe97eea2e10d3f94912f9b904b9acedbad6816458f5b19faf0604d3eb9": {
        "Name": "myk8s-control-plane",
        "EndpointID": "71a6cae7682ffeb40e82565e3f41d4f56218ca20d779fcf8ad66ad52f1f288cf",
        "MacAddress": "ce:a5:e6:53:f2:5e",
        "IPv4Address": "172.18.0.2/16",
        "IPv6Address": "fc00:f853:ccd:e793::2/64"
      }
    },
    "Options": {
      "com.docker.network.bridge.enable_ip_masquerade": "true",
      "com.docker.network.driver.mtu": "1500"
    },
    "Labels": {}
  }
]
  • kind 클러스터의 상태를 확인 - 로컬에서 127.0.0.1:38591로 연결되어 있음
(⎈|kind-myk8s:default) ssoon@DESKTOP-UQRJB87:~/aews-labs$ kubectl cluster-info;
Kubernetes control plane is running at https://127.0.0.1:38591
CoreDNS is running at https://127.0.0.1:38591/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
  • CRI 는 containerd 사용
(⎈|kind-myk8s:default) ssoon@DESKTOP-UQRJB87:~/aews-labs$ kubectl get node -o wide
NAME                  STATUS   ROLES           AGE     VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION                       CONTAINER-RUNTIME
myk8s-control-plane   Ready    control-plane   8m12s   v1.32.2   172.18.0.2    <none>        Debian GNU/Linux 12 (bookworm)   5.15.167.4-microsoft-standard-WSL2   containerd://2.0.3
  • kindnet-XXXX : Kind 클러스터의 기본 CNI (Container Network Interface) 플러그인
(⎈|kind-myk8s:default) ssoon@DESKTOP-UQRJB87:~/aews-labs$ kubectl get pod -A -o wide
NAMESPACE            NAME                                          READY   STATUS    RESTARTS   AGE     IP           NODE                  NOMINATED NODE   READINESS GATES
...
kube-system          kindnet-tx5s9                                 1/1     Running   0          8m16s   172.18.0.2   myk8s-control-plane   <none>           <none>
...
  • kind 클러스터의 네임스페이스 목록(default, kube-system 등)을 확인
(⎈|kind-myk8s:default) ssoon@DESKTOP-UQRJB87:~/aews-labs$ kubectl get namespaces
NAME                 STATUS   AGE
default              Active   9m32s
kube-node-lease      Active   9m32s
kube-public          Active   9m32s
kube-system          Active   9m33s
local-path-storage   Active   9m28s
  • Kubernetes 컴포넌트 포트
(⎈|kind-myk8s:default) ssoon@DESKTOP-UQRJB87:~/aews-labs$ docker exec -it myk8s-control-plane ss -tnlp
State  Recv-Q Send-Q  Local Address:Port    Peer Address:Port Process
LISTEN 0      4096        127.0.0.1:10248        0.0.0.0:*     users:(("kubelet",pid=797,fd=16))
LISTEN 0      4096        127.0.0.1:41671        0.0.0.0:*     users:(("containerd",pid=202,fd=11))
LISTEN 0      4096       172.18.0.2:2380         0.0.0.0:*     users:(("etcd",pid=732,fd=7))
LISTEN 0      4096       172.18.0.2:2379         0.0.0.0:*     users:(("etcd",pid=732,fd=10))
LISTEN 0      4096        127.0.0.1:2379         0.0.0.0:*     users:(("etcd",pid=732,fd=8))
LISTEN 0      4096       127.0.0.11:39239        0.0.0.0:*
LISTEN 0      4096                *:2381               *:*     users:(("etcd",pid=732,fd=15))
LISTEN 0      4096                *:6443               *:*     users:(("kube-apiserver",pid=643,fd=3))
LISTEN 0      4096                *:10256              *:*     users:(("kube-proxy",pid=1052,fd=11))
LISTEN 0      4096                *:10257              *:*     users:(("kube-controller",pid=654,fd=3))
LISTEN 0      4096                *:10259              *:*     users:(("kube-scheduler",pid=601,fd=3))
LISTEN 0      4096                *:10249              *:*     users:(("kube-proxy",pid=1052,fd=12))
LISTEN 0      4096                *:10250              *:*     users:(("kubelet",pid=797,fd=28))
6443 kube-apiserver 클러스터의 메인 API 서버 (kubectl, 다른 컴포넌트와 통신)
2379, 2380 etcd Kubernetes 저장소(DB), 2379은 client, 2380은 peer 통신
2381 etcd etcd 메트릭 포트 (listen-metrics-urls 설정으로 열림)
10248 kubelet 헬스체크 관련 내부 포트
10250 kubelet kubelet API (API 서버 등에서 사용)
10249, 10256 kube-proxy 메트릭 및 헬스체크 포트
10257 kube-controller-manager 메트릭 또는 상태 노출용
10259 kube-scheduler 메트릭 또는 상태 노출용
  • 디버깅용 로그
(⎈|kind-myk8s:default) ssoon@DESKTOP-UQRJB87:~/aews-labs$ kubectl get pod -v6
I0412 18:06:48.992957    8033 loader.go:402] Config loaded from file:  /home/ssoon/.kube/config
I0412 18:06:48.993457    8033 envvar.go:172] "Feature gate default state" feature="ClientsAllowCBOR" enabled=false
I0412 18:06:48.993496    8033 envvar.go:172] "Feature gate default state" feature="ClientsPreferCBOR" enabled=false
I0412 18:06:48.993505    8033 envvar.go:172] "Feature gate default state" feature="InformerResourceVersion" enabled=false
I0412 18:06:48.993561    8033 envvar.go:172] "Feature gate default state" feature="WatchListClient" enabled=false
I0412 18:06:49.006139    8033 round_trippers.go:560] GET https://127.0.0.1:38591/api/v1/namespaces/default/pods?limit=500 200 OK in 8 milliseconds
No resources found in default namespace.
kubeconfig 로드 ✅ 성공
API 서버 응답 ✅ 성공 (200 OK)
기본 네임스페이스 파드 수 ❌ 없음 (No resources found)
  • kind 클러스터(kind-myk8s)의 설정 파일(~/.kube/config) 내용을 보여주며, 클러스터 주소(127.0.0.1:38591), 인증 정보, 기본 네임스페이스(default) 등이 포함되어 있어 kubectl이 클러스터와 통신
(⎈|kind-myk8s:default) ssoon@DESKTOP-UQRJB87:~/aews-labs$ cat ~/.kube/config
apiVersion: v1
clusters:
    - cluster:
        certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJSExWbzl5WXpaand3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TlRBME1USXdPRFV4TWpGYUZ3MHpOVEEwTVRBd09EVTJNakZhTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUURTMkQ2YmtPVFdDRlN4R011eE0xQlNaV0xDNG1NU3A5by9aTG5EeWt4UmdYa1V1TWhXVFVhZXFMQUsKRmVMd1dHY2lIKzRKTDkwaHZzbG9ySld3TjcxK09XR3AvdjNUR2tDMW1nbnlmbWRERC9RaElDQjZzaWNkYkh5dQpKMzdHejBEQkh5VzJSZm1EdkF3U25IR0d6YVVORFZRNVlwMDd2d3hvRWJaajZDQ2dBbzVzVDh0UW1xZ1VSTHVGCjFxWDFycnBLZmZkQ2lic1ZIK1hWMEJWc1EvM2pJRmUzb0ZWbzkwM2ZlcGVCRTJ2cmdtNkpzeXBSQm5GMEttNEMKejM4eklYcVR1U3N2L0xocmw0NHlxRmRxdGQvdHVQbDAxRjZIR3dsY0RuMUVnOWZXS3lscHU0a3VCektLUU82dgo5UHZoWFdLL09WK3R2SEdMck1oMExvV09rRGlwQWdNQkFBR2pXVEJYTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQCkJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJRQ1NqYUFzR21rbk42VnJIbUMrTkkxN2RnUkx6QVYKQmdOVkhSRUVEakFNZ2dwcmRXSmxjbTVsZEdWek1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ0pNNk5mYzNiNwprbG5EWW12M3hiRGdlQkhMQWJCTzdCQmFoWlJyN01IZkV4VTNqUzMzMnd3SjluMy9ialhWL0VFREd5VFpHb2NGCk5JQ0xwTWRpWlRaNGFVZW05S1BxRkhGRHVOVE9qMHhQc0FhWW41VnZQUTJ3aFNxd2owL0VGNmRSQkxPN09OTEoKU1R3c3ZLdDlMaXBxQ1ZicGhjbHE5WGxTelZqMG16MzRJeGo1Q010V1Y4cjR3L25rREVtdkhVc0poY25jTWRXVQp6R1NNZ0lnS2tPeUtmdE5VdG9Dc1NCMnVaLzVubEx0SGoyYmZBcm9BTWZCMGpKRGtDU0JIQTVnWVBpZ0tEaXVKCnpCdUVIRmJWM1Buem9TUEpsYXgya1l1L0RGZ3BqdUQzYlJad2xhN2RSdCs5WlVyQTdRWHJ4TjdZQTFNOUhsSTMKaHBrZEF1WUJaNjVNCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
        server: https://127.0.0.1:38591
      name: kind-myk8s
contexts:
    - context:
        cluster: kind-myk8s
        user: kind-myk8s
        namespace: default
      name: kind-myk8s
current-context: kind-myk8s
kind: Config
preferences: {}
users:
    - name: kind-myk8s
      user:
        client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLVENDQWhHZ0F3SUJBZ0lJSkRsRzk5R09QSVl3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TlRBME1USXdPRFV4TWpGYUZ3MHlOakEwTVRJd09EVTJNakZhTUR3eApIekFkQmdOVkJBb1RGbXQxWW1WaFpHMDZZMngxYzNSbGNpMWhaRzFwYm5NeEdUQVhCZ05WQkFNVEVHdDFZbVZ5CmJtVjBaWE10WVdSdGFXNHdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDZXNRWEEKdWtac0xNU1VyK0JXN0VGaENKWXpSZ0Y5dExsWC9SSEIxZFRTL3V6dXJtbGJIbVZFRnhYdGpkNGo0Q3BVNzRSQwpPRkk0Ym02TlMvZS83eTRZdEs5NzU5bFplYnFMMkdoTitXZ1J2NkdMSDQ4VGVibkpwcCt1MTR6K2tKTzlHUTJGCktHZ3JWKzV1b2ZLYkdjRHE4K1Z1Z1UvV2dkcldBZlpPMUQrSld1RW1YKzQ5d3hXNEhqRnZ1S1FWTlIwQVY5bUoKOEc5YTVxV1J1ODdJV3NlVm1XRS9NdzZCREE1YkI5dm5ETitSUHVMSXdObDV2UFgzM1ArT3pLVzhPdVlEb1ZYYwo5cC9oMW5NWlUrbnQ4U3dFY3p5Vm5rS3JoT2FyVDF1WVp3Tm4zUlhDUTdOTWYrd1E0eW1yenRBZ0RCUy9ncnVECkJ2RlVhRkdibTUxbStvaVRBZ01CQUFHalZqQlVNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUsKQmdnckJnRUZCUWNEQWpBTUJnTlZIUk1CQWY4RUFqQUFNQjhHQTFVZEl3UVlNQmFBRkFKS05vQ3dhYVNjM3BXcwplWUw0MGpYdDJCRXZNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUJxamkyYUlrak9IUEJjTHlOVVZRN05mRGd3CmdZNUJnQm4ySFJNenFYSS8zUUFuLzlhQkRScTlKT1NJK3pUU3QvdFpuS2lTMW4yZzZwazNpQVBLYlI1aTlXeGkKTGkveTNybXVnWFphQTlYT3BpYzd1UE45UExaUGQ1ZnBwSWh2MmlGTVFJMlJ4SVRVWlBCOTVGaGdWOThwdElRSQpxRkV0RWFTcnFGdmJUTHpOUnJacVpad2hqd3RrMzYxL3BDbzJhNXRWaTQ1OTF3Y0VBUlRuSWd1ZkU0WkhlWDlCCmx5S3REUElkR2NZYnlJaWNrTjJWRTBZTU9TUE5uSnowTlAzQklHUFNEMnJ3UURjSmFvMDZmaUpmemFHa3RGak4KUFZFbm1vSTBhNWNxcHdtek9EbjdiWS9ld1diZ0RzSlVqRkh0Zml6Uk1SOFJROGZsQ1lyMTRNRDFXT040Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
        client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBbnJFRndMcEdiQ3pFbEsvZ1Z1eEJZUWlXTTBZQmZiUzVWLzBSd2RYVTB2N3M3cTVwCld4NWxSQmNWN1kzZUkrQXFWTytFUWpoU09HNXVqVXYzdis4dUdMU3ZlK2ZaV1htNmk5aG9UZmxvRWIraGl4K1AKRTNtNXlhYWZydGVNL3BDVHZSa05oU2hvSzFmdWJxSHlteG5BNnZQbGJvRlAxb0hhMWdIMlR0US9pVnJoSmwvdQpQY01WdUI0eGI3aWtGVFVkQUZmWmlmQnZXdWFsa2J2T3lGckhsWmxoUHpNT2dRd09Xd2ZiNXd6ZmtUN2l5TURaCmViejE5OXovanN5bHZEcm1BNkZWM1BhZjRkWnpHVlBwN2ZFc0JITThsWjVDcTRUbXEwOWJtR2NEWjkwVndrT3oKVEgvc0VPTXBxODdRSUF3VXY0Szdnd2J4VkdoUm01dWRadnFJa3dJREFRQUJBb0lCQUdZanZuWXI3d1BWVkxuMgo4Y2hBekZ2dU1PN1Rra1ljdW1iOXhoNGl5WmI4NmZjK1h5Vjh6T1VranNLVjIzTHY1NDgva3Jza2tSY3RUUTY0CjVMK3U3TmFPQlowVXYzcXR0UG9wMGdqT0RNUFB1ZVJYN2JrMVVmV092NXpEdEVadFBBb3NROTEvQW4xVFhXM3IKNHNFZHRHUUZrNWlxdG41MG1pdkFtNDVsWW5lKytTZDM1UzNvZ2xGajZBU1pRNzRBSEYvTzFITGZ6ZDhobHp5egpnTGlXQ1MzKzRFZlFPak5oVVBZVkpiQzNuQjltOTRkZW1Zc2RjZkpNenArdFhGc2EvVW9zM2R3NHZReGRtaEhLClFJUE9QQzJDbXR4amVqY0k0aDkyRS9VTHl3U2tQbDYyUldoSG1IT3dzckNzdGwxdWZydkovdEg4VVo2OVNraHEKd0FlV2pxRUNnWUVBd29TUXVFY0RXclljOXdHbm5SZFB3ekpmMkRUcDhvZ0p5bFAvYnBacC82d21ON3Rmd2IwRwpZWTlpdDRyOGlvOUZlbmw4QThDUmlyL0JWcEs0MUcxS1FNazJvNHU3SWtyTjZvSW9ZL0RjbitSZElKSk9ockUzCjBmekFxOCs1eGRjRTRrNjJGdkpxYUtFVnNYaVVlYXhtM2sxZzYzUTBLZzlHdmM1RzBDa2NWRXNDZ1lFQTBObVEKZ0tsY0Z0c1R4MHlTQUpsK0JNMnh4aHo3dEdLZGFOUG10RHk1L2UvNnpTRWQrTldzYjJyNmRlY1laZzRuY05jdApDZ0M5blBZMCtWN3o0ZlZ0V1B1czFleFowTUNFUTdNWTZnZFZERlBBcUJEZUR6UTluQy9pbjZWVkxnYlVSamtPCmpQdGo3b3V6VzlBOEp1NWFwaEJrdWFPczVnSkZLK3B1ZnJJR0g5a0NnWUFMOEFMSnJHSUNVU2JaNmRvVmcvYTcKTGY0LzBJK0MrT0pRN25MQW9LNkVxRlg0R2FHNHpCYjJLY3lQSXhKNGxtNVhJOWwraVhUbEpQdUNpcUtaTnRQVgp3Z04rYWZia0ZkOHBReStqWW9iSHNVWWQxNXpHRzE0bm52RmNHZlYydE1seDhnNnV2ZFhWOGZ6WTFXT1hUQU5NCkpVZUxhNmcvNUl3YzNlbnVvSGRDblFLQmdRQzZzaEpzQVhtUjhPdGdXTUdYaVo3T2VuWTFySWtSZXFwT0lFYjIKemVaUjY2bmVuNEVraFJZdFQ0dHZ4RkxhUUVMZnEycldxMHpWT0g2b2dVb3dydTIrQXRWQk1wUWplVVdESTJIZApLd3JMQnorTXZlOVQxaFpSUGJrdmoyTnl6cVlKMUUxK2wrZUFRaC9tcm1KblJ1Ri8yOTIrMldMaEJoeUJvb0o5Ci9YUmVHUUtCZ0Npblh5TEtjaTk4akJsd0ZBZTNwV1JJeDdCOUtWL1huQWtNUFgzbVJYM2p4QXkrQllWWlBDT3EKNHRPRjVjcjc0TVRxMkdnV3BKbXJVNi9wSk5mWVdybVB0S0NHbkdXUTJFelk2UlR4NjREamNwVDBtcmVjNm5qYgpEUVJvbDFUbUMzMEdlZ3RIN0c2RmhYeThDenlOdGdTL1dETHZrUUFpNlZZYTcyeDYyNEdDCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==

(⎈|kind-myk8s:default) ssoon@DESKTOP-UQRJB87:~/aews-labs$ ls -l ~/.kube/config
-rw------- 1 ssoon ssoon 5679 Apr 12 18:00 /home/ssoon/.kube/config
  • 클러스터 삭제
(⎈|kind-myk8s:default) ssoon@DESKTOP-UQRJB87:~/aews-labs$ kind delete cluster --name myk8s
Deleting cluster "myk8s" ...
Deleted nodes: ["myk8s-control-plane"]