Quick References

Version Check

Server 그리고 client version 둘다 확인 할 수 있습니다.

$ kubectl version

Context

context 정보는 다음과 같이 얻습니다.

$ kubectl config get-contexts
          anderson-context   anderson-cluster   anderson.jo   
*         minikube           minikube           minikube   

다른 context로 변경은 다음과 같이 합니다.

$ kubectl config use-context anderson-context
Switched to context "anderson-context".

Cluster Information

$ kubectl cluster-info
Kubernetes master is running at https://172.17.0.16:8443
KubeDNS is running at https://172.17.0.16:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

위의 명령어에서 master 그리고 Kubernetes DNS서비스 돌아가는 것을 확인 할 수 있습니다.

  • Kubernetes master: master
  • KubeDNS: DNS
  • kubernetes-dashboard: dashboard - UI에서 applications을 확인 가능

All Nodes Information

applications을 host시킬 수 있는 모든 nodes 정보를 보여줍니다.

$ kubectl get nodes
NAME       STATUS   ROLES    AGE   VERSION
minikube   Ready    master   12m   v1.13.3

Namespace

namespace 정보는 다음과 같이 얻습니다.

$ kubectl get namespaces
NAME              STATUS   AGE
default           Active   8d
kube-node-lease   Active   8d
kube-public       Active   8d
kube-system       Active   8d
tutorial-ns       Active   2s

Namespace 생성은 다음과 같이 합니다 .

$ kubectl create namespace tutorial-ns
namespace/tutorial-ns created

Pods

$ kubectl get pod -n tutorial-ns
NAME                                      READY   STATUS    RESTARTS   AGE
tutorial-server-deploy-6b5748b65c-9wpbk   0/1     Pending   0          33s

정확하게 app을 지정해서 볼 수 도 있습니다.

$ kubectl get pod -n tutorial-ns -l app=ml-app

Pod에 대한 정보는 다음의 명령어로 알 수 있습니다.

$ kubectl describe pod tutorial-server-deploy-6b5748b65c-9wpbk -n tutorial-ns

Deploy

$ kubectl apply -f deploy.yaml

Port Forward for Testing

Port 확인

Port를 확인합니다.

$ kubectl get pods tutorial-server-deploy-6b4b98486-k4srw -n tutorial-ns 
NAME                                     READY   STATUS    RESTARTS   AGE
tutorial-server-deploy-6b4b98486-k4srw   1/1     Running   0          59m

$ kubectl get pods tutorial-server-deploy-6b4b98486-k4srw -n tutorial-ns --template='\n'
80

port-forward 를 사용해서 local port를 pod에 있는 port로 연결을 시킵니다.

resource name을 지정할수 있는데 deployment, service , pod 등을 선택할 수 있습니다.

5000:80 에서 앞쪽 포트가 localhost에서 사용할 포트이고, 80이 pod의 접속 포트 입니다.

Pods으로 접속

먼저 Pods 정보를 확인하고 ready인지 확인합니다.

$ kubectl get pods  -n alpha -l app=ml-app
NAME                                     READY   STATUS    RESTARTS   AGE
tutorial-server-deploy-6b4b98486-k4srw   1/1     Running   0          56m

Pods으로 접속

$ kubectl port-forward tutorial-server-deploy-6b4b98486-k4srw -n tutorial-ns 5000:80
Forwarding from 127.0.0.1:5000 -> 80
Forwarding from [::1]:5000 -> 80

pods/ 를 추가해도 됨

$ kubectl port-forward pods/tutorial-server-deploy-6b4b98486-k4srw -n tutorial-ns 5000:80
Forwarding from 127.0.0.1:5000 -> 80
Forwarding from [::1]:5000 -> 80

Deployment로 접속

Deployments 상태도 확인을 합니다.

$ kubectl get deployment -n tutorial-ns -l app=ml-app
NAME                     DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
tutorial-server-deploy   1         1         1            1           7h

deployment/ 를 붙여서 접속

$ kubectl port-forward deployment/tutorial-server-deploy -n tutorial-ns 5000:80
Forwarding from 127.0.0.1:5000 -> 80
Forwarding from [::1]:5000 -> 80
Handling connection for 5000

ReplicaSet 으로 접속

ReplicaSet도 상태를 확인합니다.

$ kubectl get rs -n tutorial-ns -l app=ml-app
NAME                                DESIRED   CURRENT   READY   AGE
tutorial-server-deploy-6cd9bdc5d4   1         1         1       1h

ReplicaSet으로 접속합니다.

$ kubectl port-forward rs/tutorial-server-deploy-6cd9bdc5d4 -n tutorial-ns 5000:80
Forwarding from 127.0.0.1:5000 -> 80
Forwarding from [::1]:5000 -> 80
Handling connection for 5000

Service로 접속

서비스를 확인합니다.

$ kubectl get svc  -n tutorial-ns -l app=ml-app
NAME                  TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
tutorial-server-svc   NodePort   10.231.46.95   <none>        80:30021/TCP   3d

서비스로 접속을 합니다.

$ kubectl port-forward svc/tutorial-server-svc -n tutorial-ns 5000:80
Forwarding from 127.0.0.1:5000 -> 80
Forwarding from [::1]:5000 -> 80
Handling connection for 5000

Minikube

Minikube는 Kubernetes를 local 환경에서 쉽게 돌릴수 있는 툴입니다.

Minikube는 single-node Kuebernetes cluster이며 VM위에서 돌아가며,

local 개발시에 편리하게 사용할 수 있습니다.

Minikube 설치하기

실행은 다음과 같이 합니다.

sudo minikube start

Minikube를 실행하기 위해서는 VM이 설치되어 있어야 합니다.

하지만 저처럼 귀찮니즘에 쩔어있는 개발자라면 VM없이 실행시킬수 있는 방법이 있습니다.

아래의 옵션을 더 추가해서 실행을 시킵니다.

sudo minikube start --vm-driver=none --apiserver-ips 127.0.0.1 --apiserver-name localhost

만약에 권한과 관련된 warning이 뜨면 다음의 명령어로 권한을 수정해 줍니다.

(개인적으로는 해줄 필요가 없었음)

sudo chown -R $USER $HOME/.minikube
sudo chgrp -R $USER $HOME/.minikube
sudo chown -R $USER $HOME/.kube
sudo chgrp -R $USER $HOME/.kube

또는 delete 명령어도 도움이 될 수 있습니다.

sudo minikube delete