Install kubectl cli

아래 링크를 참고해서 kubectl cli 를 설치합니다.

https://kubernetes.io/docs/tasks/tools/install-kubectl/

맨 아래의 Enabling shell autocompletion 부분을 참고해서 설정하면 TAB 키를 눌러 명령어 및 리소스 이름 자동완성이 가능합니다. 녹화 영상에서 kubectl 이 자동 완성되는 부분은 TAB을 눌러 자동 완성되는 부분입니다.

Install kubectl cli (Ubuntu)

Ubuntu 16.04 환경인 실습 VM 에서 kubectl cli 를 설치하는 script 입니다.

  1. sudo apt update && sudo apt install -y apt-transport-https
  2. curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
  3. echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" |sudo tee /etc/apt/sources.list.d/kubernetes.list
  4. sudo apt update
  5. sudo apt install -y kubectl
  6. kubectl
  7. kubectl version
  8. source <(kubectl completion bash)
  9. kubectl completion bash |sudo tee /etc/bash_completion.d/kubectl

Deploying apps into clusters

실습 전 시드니 (Sydney) 영역에 무료 클러스터를 생성해야 합니다.

https://console.bluemix.net/docs/containers/cs_tutorials_apps.html#cs_apps_tutorial

  1. bx login
    1. au-syd 선택
  2. bx cr region-set
    1. ap-south 선택
  3. bx cr namespace-list
  4. export MY_REGISTRY_NAMESPACE=<namespace>
    1. 다른 사용자와 겹치지 않는 고유한 이름을 사용해야 합니다.
    2. 이후의 $MY_REGISTRY_NAMESPACE 부분은 지금 사용하는 <namespace> 이름으로 써도 무방합니다.
  5. bx cr namespace-add $MY_REGISTRY_NAMESPACE
  6. bx cr namespace-list
  7. bx cr login
  8. docker image ls
  9. docker image tag hello-world:1 registry.au-syd.bluemix.net/$MY_REGISTRY_NAMESPACE/hello-world:1
  10. docker image ls
  11. docker image push registry.au-syd.bluemix.net/$MY_REGISTRY_NAMESPACE/hello-world:1
  12. bx cr image-list
  13. docker image tag hello-world:2 registry.au-syd.bluemix.net/$MY_REGISTRY_NAMESPACE/hello-world:2
  14. docker image push registry.au-syd.bluemix.net/$MY_REGISTRY_NAMESPACE/hello-world:2
  15. bx cr image-list
  16. bx cs region-set
    1. ap-south 선택
  17. bx cs clusters
  18. export MY_CLUSTER_NAME=<cluster 이름>
    1. 다른 사용자와 겹치지 않는 고유한 이름을 사용해야 합니다.
    2. 이후의 $MY_CLUSTER_NAME 부분은 지금 사용하는 <cluster 이름> 이름으로 써도 무방합니다.
  19. bx cs workers $MY_CLUSTER_NAME
  20. bx cs cluster-config $MY_CLUSTER_NAME
    1. 화면에 표시되는 export KUBECONFIG= 라인 복사해서 실행
  21. echo $KUBECONFIG
  22. kubectl version --short
  23. kubectl run hello-world-deployment --image=registry.au-syd.bluemix.net/$MY_REGISTRY_NAMESPACE/hello-world:1
  24. kubectl get deployment
  25. kubectl get deployment hello-world-deployment
  26. kubectl get deployment hello-world-deployment -o yaml
  27. kubectl describe deployment hello-world-deployment
  28. kubectl get replicaset
  29. kubectl get replicaset -o yaml
  30. kubectl describe replicaset
  31. kubectl get pod
  32. kubectl get pod -o yaml
  33. kubectl describe pod
  34. kubectl expose deployment/hello-world-deployment --type=NodePort --port=8080 --name=hello-world-service --target-port=8080
  35. kubectl describe service hello-world-service
  36. bx cs workers $MY_CLUSTER_NAME
  37. http://워커아이피:노드포트/ 접속
  38. kubectl edit deployment hello-world-deployment
    1. :q! 입력 후 엔터 쳐서 탈출
  39. kubectl scale --replicas=5 deployment hello-world-deployment
  40. kubectl get pod
  41. kubectl rollout status deployment hello-world-deployment
  42. kubectl describe replicaset
  43. watch -n 1 curl http://워커아이피:노드포트/
    1. ctrl-c 눌러 종료
  44. kubectl set image deployment hello-world-deployment hello-world-deployment=registry.au-syd.bluemix.net/$MY_REGISTRY_NAMESPACE/hello-world:3
  45. kubectl rollout status deployment hello-world-deployment
    1. ctrl-c 눌러 종료
  46. kubectl describe pod
  47. kubectl rollout undo deployment hello-world-deployment
  48. kubectl get pod
  49. kubectl set image deployment hello-world-deployment hello-world-deployment=registry.au-syd.bluemix.net/$MY_REGISTRY_NAMESPACE/hello-world:2
  50. kubectl get pod
  51. kubectl rollout status deployment hello-world-deployment
  52. watch -n 1 curl http://워커아이피:노드포트/
    1. ctrl-c 눌러 종료