도커와 쿠버네티스 첫걸음

Lead Software Engineer @ProtoPie

Microsoft MVP

TypeScript Korea User Group Organizer

Marktube (Youtube)

Mark Lee

이 웅재

1. 도커를 사용한 컨테이너 이미지 생성, 실행, 공유하기

2. 쿠버네티스 클러스터 설치

3. 쿠버네티스에 첫 번째 애플리케이션 실행하기

1. 도커를 사용한 컨테이너 이미지 생성, 실행, 공유하기

도커 컨테이너 실행

docker run <image>

docker run <image>:<tag>

~/Desktop/kubernets 
➜ docker run busybox echo "Hello world"
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
9758c28807f2: Pull complete 
Digest: sha256:a9286defaba7b3a519d585ba0e37d0b2cbee74ebfe590960b0b1d6a5e97d1e1d
Status: Downloaded newer image for busybox:latest
Hello world

컨테이너 이미지 생성

docker build -t kubia .

https://github.com/ProtoPie/xiders-tool​

FROM node:12.19.0-alpine
LABEL maintainer="mark@protopie.io"

WORKDIR /app

RUN apk update && apk add python g++ make && rm -rf /var/cache/apk/*

COPY package*.json ./

RUN npm ci --only=production

COPY . .

EXPOSE 5000

ENTRYPOINT ["node", "src/server"]

로컬에 저장된 이미지 리스트 조회

docker images

~/Desktop/kubernets took 5s 
➜ docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
xt13                           latest              7332d5c74af6        11 hours ago        384MB
xt12                           latest              366f83336186        11 hours ago        384MB
<none>                         <none>              771fdf38bf8a        11 hours ago        330MB
xt11                           latest              14918f9ef7a0        11 hours ago        386MB
xt10                           latest              75e57f8e9f7a        12 hours ago        386MB
xt9                            latest              b474ffeb5c34        12 hours ago        391MB
xt7                            latest              39b757fe2fae        12 hours ago        150MB
xt6                            latest              3048cde361ed        12 hours ago        149MB
xt5                            latest              90dc2439ab42        15 hours ago        150MB
xt4                            latest              67ee4668259a        15 hours ago        356MB
<none>                         <none>              316408239a83        15 hours ago        90.9MB
<none>                         <none>              13331780c606        15 hours ago        90.9MB
xt3                            latest              94aa35c5a04b        15 hours ago        357MB
<none>                         <none>              9fe751434a46        15 hours ago        90.9MB
xt1                            latest              ff5f72d932c9        15 hours ago        134MB
<none>                         <none>              8065142b9016        16 hours ago        134MB
v7                             latest              1855016c214f        6 days ago          96.7MB
v6                             latest              d834ecf2e4fa        6 days ago          96.7MB
v5                             latest              c2df0c55043c        6 days ago          96.7MB
...
~/Desktop/kubernets 
➜ docker run --name nginx-container -p 80:80 -d nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
bb79b6b2107f: Pull complete 
111447d5894d: Pull complete 
a95689b8e6cb: Pull complete 
1a0022e444c2: Pull complete 
32b7488a3833: Pull complete 
Digest: sha256:ed7f815851b5299f616220a63edac69a4cc200e7f536a56e421988da82e44ed8
Status: Downloaded newer image for nginx:latest
879e99997b0b0c88fb2295cbef9de0ede651e935acf86de19b536a48ce235e69

컨테이너 이미지 실행

docker run --name nginx-container -p 80:80 -d nginx

~/Desktop/kubernets 
➜ curl localhost                                     
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

애플리케이션 접근하기

curl localhost

~/Desktop/kubernets took 15s 
➜ docker ps                                              
CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS              PORTS                                                                                                      NAMES
879e99997b0b        nginx                                 "/docker-entrypoint.…"   57 seconds ago      Up 56 seconds       80/tcp, 0.0.0.0:80->80/tcp                                                                             nginx-container

실행 중인 모든 컨테이너 조회하기

docker ps

컨테이너에 관한 추가 정보 얻기

docker inspect nginx-container

~/Desktop/kubernets 
➜ docker inspect nginx-container                         
[
    {
        "Id": "879e99997b0b0c88fb2295cbef9de0ede651e935acf86de19b536a48ce235e69",
        "Created": "2020-10-27T05:35:22.5560472Z",
        "Path": "/docker-entrypoint.sh",
        "Args": [
            "nginx",
            "-g",
            "daemon off;"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 79854,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2020-10-27T05:35:22.9538582Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:f35646e83998b844c3f067e5a2cff84cdf0967627031aeda3042d78996b68d35",
        "ResolvConfPath": "/var/lib/docker/containers/879e99997b0b0c88fb2295cbef9de0ede651e935acf86de19b536a48ce235e69/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/879e99997b0b0c88fb2295cbef9de0ede651e935acf86de19b536a48ce235e69/hostname",
        "HostsPath": "/var/lib/docker/containers/879e99997b0b0c88fb2295cbef9de0ede651e935acf86de19b536a48ce235e69/hosts",
        "LogPath": "/var/lib/docker/containers/879e99997b0b0c88fb2295cbef9de0ede651e935acf86de19b536a48ce235e69/879e99997b0b0c88fb2295cbef9de0ede651e935acf86de19b536a48ce235e69-json.log",
        "Name": "/nginx-container",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {
                "8080/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "8080"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "Capabilities": null,
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/7b1c9cb31a5086141fad1ef82e6b9eee1d09d0b9434ae183f75451050bc17165-init/diff:/var/lib/docker/overlay2/91393c9d4b2b25d4f3c3106ee086ff6fa3edc8a0877078d64032108269b03e83/diff:/var/lib/docker/overlay2/6c27ab6692cb5adefa3635e2fcb2d37f1fc7aaf74bd704178d8b35ef9c1da46d/diff:/var/lib/docker/overlay2/0da4dfcf1134dc0a8601cbfe4b73476640d0e80a2603331d7f44475cef5fa349/diff:/var/lib/docker/overlay2/cad41dd4c6761888dd1974bb4057c00c6cb5abb8520af5ef77697f19e1b2ff81/diff:/var/lib/docker/overlay2/1b67443eaa3cd63d9f46e1a62fc86636c60517b85036d4994427a14e0e8a51cd/diff",
                "MergedDir": "/var/lib/docker/overlay2/7b1c9cb31a5086141fad1ef82e6b9eee1d09d0b9434ae183f75451050bc17165/merged",
                "UpperDir": "/var/lib/docker/overlay2/7b1c9cb31a5086141fad1ef82e6b9eee1d09d0b9434ae183f75451050bc17165/diff",
                "WorkDir": "/var/lib/docker/overlay2/7b1c9cb31a5086141fad1ef82e6b9eee1d09d0b9434ae183f75451050bc17165/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "879e99997b0b",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {},
                "8080/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NGINX_VERSION=1.19.3",
                "NJS_VERSION=0.4.4",
                "PKG_RELEASE=1~buster"
            ],
            "Cmd": [
                "nginx",
                "-g",
                "daemon off;"
            ],
            "Image": "nginx",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "/docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {
                "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
            },
            "StopSignal": "SIGTERM"
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "3367f2a1a3a7e9f841624a9591d2fd6f2f2c274a14e3422b4fe7a816f401203f",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "80/tcp": null,
                "8080/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "8080"
                    }
                ]
            },
            "SandboxKey": "/var/run/docker/netns/3367f2a1a3a7",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "da57917c22494188aa4c98a3daedb8289633c207f341a1c51b633ae3ba06056a",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:02",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "3fe6b85a96405f1c979d07cd1dcc72ba598328b93de0343035ebcd916d8d6507",
                    "EndpointID": "da57917c22494188aa4c98a3daedb8289633c207f341a1c51b633ae3ba06056a",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]

실행 중인 컨테이너 내부에서 shell 실행하기

docker exec -it nginx-container bash

~/Desktop/kubernets 
➜ docker exec -it nginx-container bash
root@8b02e823d3a4:/# 

컨테이너 중지와 삭제

docker stop nginx-container

docker rm nginx-container

~/Desktop/kubernets took 2m 52s 
➜ docker stop nginx-container

nginx-container

~/Desktop/kubernets 
➜ docker rm nginx-container

nginx-container

추가 태그로 이미지 태그 지정 후 도커 허브에 업로드

docker tag nginx mark/nginx

docker push mark/nginx

~/Desktop/kubernets took 2m 52s 
➜ docker tag nginx mark/nginx


~/Desktop/kubernets 
➜ docker images              
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
mark/nginx                     latest              f35646e83998        13 days ago         133MB

~/Desktop/kubernets 
➜ docker push mark/nginx

2. 쿠버네티스 클러스터 설치

Minikube 를 활용한 단일 노드 쿠버네티스 클러스터 실행하기

# Minikube 란 ??

로컬에서
쿠버네티스를 테스트하고 애플리케이션을 개발하는 목적으로
단일 노드 클러스터를 설치하는
도구다.

- https://kubernetes.io/ko/docs/tasks/tools/install-minikube/

Minikube 설치

~/Desktop/kubernets 
➜ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64 \
  && chmod +x minikube
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 53.0M  100 53.0M    0     0  65.2M      0 --:--:-- --:--:-- --:--:-- 65.2M

~/Desktop/kubernets 
➜ ll
total 338192
-rwxr-xr-x  1 mark  staff    53M 10 27 09:37 minikube
-rw-r--r--@ 1 mark  staff    99M  9 10 12:33 쿠버네티스인액션.pdf

~/Desktop/kubernets 
➜ ./minikube status
🤷  There is no local cluster named "minikube"
👉  To fix this, run: "minikube start"

Minikube 클러스터 시작하기

~/Desktop/kubernets 
➜ ./minikube start   
😄  Darwin 10.15.7 위의 minikube v1.14.1
✨  자동적으로 docker 드라이버가 선택되었습니다
👍  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...
💾  Downloading Kubernetes v1.19.2 preload ...
    > preloaded-images-k8s-v6-v1.19.2-docker-overlay2-amd64.tar.lz4: 486.33 MiB
🔥  Creating docker container (CPUs=2, Memory=1990MB) ...
🐳  쿠버네티스 v1.19.2 을 Docker 19.03.8 런타임으로 설치하는 중
🔎  Verifying Kubernetes components...
🌟  Enabled addons: storage-provisioner, default-storageclass

❗  /Users/mark/Desktop/google-cloud-sdk/bin/kubectl is version 1.16.13-dispatcher, which may have incompatibilites with Kubernetes 1.19.2.
💡  Want kubectl v1.19.2? Try 'minikube kubectl -- get pods -A'
🏄  Done! kubectl is now configured to use "minikube" by default

~/Desktop/kubernets took 1m 12s 
➜ ./minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

kubectl 로 클러스터 확인하기

~/Desktop/kubernets took 23s 
➜ kubectl cluster-info
Kubernetes master is running at https://127.0.0.1:32772
KubeDNS is running at https://127.0.0.1:32772/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

3. 쿠버네티스 첫 번째 애플리케이션 실행하기

kubectl 로 클러스터 확인하기

~/Desktop/kubernets 
➜ kubectl run kubia --image=luksa/kubia --port=8080 --generator=run/v1
kubectl run --generator=run/v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
replicationcontroller/kubia created

kubectl 로 클러스터 확인하기

~/Desktop/kubernets 
➜ kubectl run kubia --image=luksa/kubia --port=8080 --generator=run-pod/v1
pod/kubia created

~/Desktop/kubernets 
➜ kubectl get pods
NAME          READY   STATUS    RESTARTS   AGE
kubia-gnftf   1/1     Running   0          2m44s

kubectl 로 클러스터 확인하기

~/Desktop/kubernets 
➜ kubectl describe pod
Name:         kubia-gnftf
Namespace:    default
Priority:     0
Node:         minikube/192.168.49.2
Start Time:   Tue, 27 Oct 2020 10:00:10 +0900
Labels:       run=kubia
Annotations:  <none>
Status:       Running
IP:           172.17.0.5
IPs:
  IP:           172.17.0.5
Controlled By:  ReplicationController/kubia
Containers:
  kubia:
    Container ID:   docker://8992a63716ba39281423c91ff68527b307bcbb46eaa64d8fe60a3f0611b61f67
    Image:          luksa/kubia
    Image ID:       docker-pullable://luksa/kubia@sha256:3f28e304dc0f63dc30f273a4202096f0fa0d08510bd2ee7e1032ce600616de24
    Port:           8080/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Tue, 27 Oct 2020 10:00:32 +0900
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-6vzh9 (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  default-token-6vzh9:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-6vzh9
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type    Reason     Age        From               Message
  ----    ------     ----       ----               -------
  Normal  Scheduled  <unknown>                     Successfully assigned default/kubia-gnftf to minikube
  Normal  Pulling    3m38s      kubelet, minikube  Pulling image "luksa/kubia"
  Normal  Pulled     3m18s      kubelet, minikube  Successfully pulled image "luksa/kubia" in 20.3154572s
  Normal  Created    3m17s      kubelet, minikube  Created container kubia
  Normal  Started    3m17s      kubelet, minikube  Started container kubia

kubectl 로 클러스터 확인하기

~/Desktop/kubernets 
➜ kubectl expose rc kubia --type=LoadBalancer --name kubia-http
service/kubia-http exposed

kubectl 로 클러스터 확인하기

~/Desktop/kubernets 
➜ kubectl get services
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP          23m
kubia-http   LoadBalancer   10.107.119.83   <pending>     8080:30466/TCP   46s

kubectl 로 클러스터 확인하기

~/Desktop/kubernets 
➜ kubectl get services
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP          23m
kubia-http   LoadBalancer   10.107.119.83   <pending>     8080:30466/TCP   46s

kubectl 로 클러스터 확인하기

~/Desktop/kubernets 
➜ ./minikube service kubia-http
|-----------|------------|-------------|---------------------------|
| NAMESPACE |    NAME    | TARGET PORT |            URL            |
|-----------|------------|-------------|---------------------------|
| default   | kubia-http |        8080 | http://192.168.49.2:30466 |
|-----------|------------|-------------|---------------------------|
🏃  Starting tunnel for service kubia-http.
|-----------|------------|-------------|------------------------|
| NAMESPACE |    NAME    | TARGET PORT |          URL           |
|-----------|------------|-------------|------------------------|
| default   | kubia-http |             | http://127.0.0.1:56948 |
|-----------|------------|-------------|------------------------|
🎉  Opening service default/kubia-http in default browser...
❗  Because you are using a Docker driver on darwin, the terminal needs to be open to run it.

kubectl 로 클러스터 확인하기

~/Desktop/kubernets 
➜ kubectl get replicationcontrollers
NAME    DESIRED   CURRENT   READY   AGE
kubia   1         1         1       10m

kubectl 로 클러스터 확인하기

~/Desktop/kubernets 
➜ kubectl scale rc kubia --replicas=3
replicationcontroller/kubia scaled

~/Desktop/kubernets 
➜ kubectl get rc                     
NAME    DESIRED   CURRENT   READY   AGE
kubia   3         3         3       10m

~/Desktop/kubernets 
➜ kubectl get pods
NAME          READY   STATUS    RESTARTS   AGE
kubia-52tl4   1/1     Running   0          47s
kubia-gnftf   1/1     Running   0          11m
kubia-v886c   1/1     Running   0          47s

kubectl 로 클러스터 확인하기

~/Desktop/kubernets 
➜ curl http://127.0.0.1:57106
You've hit kubia-v886c

~/Desktop/kubernets 
➜ curl http://127.0.0.1:57106
You've hit kubia-gnftf

~/Desktop/kubernets 
➜ curl http://127.0.0.1:57106
You've hit kubia-52tl4

~/Desktop/kubernets 
➜ curl http://127.0.0.1:57106
You've hit kubia-52tl4

~/Desktop/kubernets 
➜ curl http://127.0.0.1:57106
You've hit kubia-v886c

~/Desktop/kubernets 
➜ curl http://127.0.0.1:57106
You've hit kubia-gnftf

kubectl 로 클러스터 확인하기

~/Desktop/kubernets 
➜ kubectl get pods -o wide     
NAME          READY   STATUS    RESTARTS   AGE     IP           NODE       NOMINATED NODE   READINESS GATES
kubia-52tl4   1/1     Running   0          3m35s   172.17.0.7   minikube   <none>           <none>
kubia-gnftf   1/1     Running   0          14m     172.17.0.5   minikube   <none>           <none>
kubia-v886c   1/1     Running   0          3m35s   172.17.0.6   minikube   <none>           <none>

kubectl 로 클러스터 확인하기

~/Desktop/kubernets 
➜ kubectl describe pod kubia-52tl4
Name:         kubia-52tl4
Namespace:    default
Priority:     0
Node:         minikube/192.168.49.2
Start Time:   Tue, 27 Oct 2020 10:10:51 +0900
Labels:       run=kubia
Annotations:  <none>
Status:       Running
IP:           172.17.0.7
IPs:
  IP:           172.17.0.7
Controlled By:  ReplicationController/kubia
Containers:
  kubia:
    Container ID:   docker://e65d6b09258674b8abbdb9fa06a0a153312a87863c5e6a8da08a8c54c6dad85e
    Image:          luksa/kubia
    Image ID:       docker-pullable://luksa/kubia@sha256:3f28e304dc0f63dc30f273a4202096f0fa0d08510bd2ee7e1032ce600616de24
    Port:           8080/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Tue, 27 Oct 2020 10:10:57 +0900
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-6vzh9 (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  default-token-6vzh9:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-6vzh9
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type    Reason     Age        From               Message
  ----    ------     ----       ----               -------
  Normal  Scheduled  <unknown>                     Successfully assigned default/kubia-52tl4 to minikube
  Normal  Pulling    4m25s      kubelet, minikube  Pulling image "luksa/kubia"
  Normal  Pulled     4m20s      kubelet, minikube  Successfully pulled image "luksa/kubia" in 5.2359442s
  Normal  Created    4m20s      kubelet, minikube  Created container kubia
  Normal  Started    4m20s      kubelet, minikube  Started container kubia

kubectl 로 클러스터 확인하기

~/Desktop/kubernets 
➜ ./minikube dashboard            
🤔  Verifying dashboard health ...
🚀  프록시를 시작하는 중 ...
🤔  Verifying proxy health ...
🎉  Opening http://127.0.0.1:58109/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...