1. 도커-쿠버네티스 설치
- 설치 스크립트 및 yaml파일을 다운받습니다.
git clone http://112.217.198.156:9000/%EC%97%91%EC%84%B8%EC%8A%A4%EB%9E%A9/CCCR_Lecture

- CCCR_Lecture 디렉토리로 이동합니다.
cd CCCR_Lecture/

- 도커 쿠버네티스 설치 스크립트를 실행시킵니다. (sudo 권한으로 실행)
sudo ./install-docker-k8s.sh

- 설치가 완료 되면 명령어 자동완성 활성화 및 일반사용자의 도커 사용을 위해 로그아웃 한 후 로그인을 합니다.\
exit

------

2. 쿠버네티스 클러스터 구성
- CCCR_Lecture 디렉토리로 이동합니다.
cd CCCR_Lecture/

- 원노드 클러스터를 구성하는 스크립트를 실행시킵니다.
sudo ./init-k8s.sh

- 수강번호를 입력합니다. 
수강번호 : admin

- 스크립트 실행이 끝나면 정상적으로 쿠버네티스 클러스터가 구성이 되었는지 확인합니다.
kubectl get node 

kubectl get all --all-namespaces

NAMESPACE            NAME                                           READY   STATUS             RESTARTS   AGE
kube-system          pod/calico-kube-controllers-58497c65d5-6cfcg   1/1     Running            0          24m
kube-system          pod/calico-node-mmg6b                          1/1     Running            0          24m
kube-system          pod/coredns-78fcd69978-5jczq                   1/1     Running            0          24m
kube-system          pod/coredns-78fcd69978-mbm9z                   1/1     Running            0          24m
kube-system          pod/etcd-vraptor                               1/1     Running            4          24m
kube-system          pod/kube-apiserver-vraptor                     1/1     Running            4          24m
kube-system          pod/kube-controller-manager-vraptor            1/1     Running            4          24m
kube-system          pod/kube-proxy-7lsph                           1/1     Running            0          24m
kube-system          pod/kube-scheduler-vraptor                     1/1     Running            3          24m
local-path-storage   pod/local-path-provisioner-556d4466c8-qwnvd    1/1     Running            0          24m
metallb-system       pod/controller-8687cdc65-f4r26                 1/1     Running            0          24m
metallb-system       pod/speaker-wpwg7                              1/1     Running            0          24m

NAMESPACE     NAME                      TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)                  AGE
default       service/kubernetes        ClusterIP      10.96.0.1      <none>           443/TCP                  24m
kube-system   service/kube-dns          ClusterIP      10.96.0.10     <none>           53/UDP,53/TCP,9153/TCP   24m

NAMESPACE        NAME                         DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                 AGE
kube-system      daemonset.apps/calico-node   1         1         1       1            1           kubernetes.io/os=linux        24m
kube-system      daemonset.apps/kube-proxy    1         1         1       1            1           kubernetes.io/os=linux        24m
metallb-system   daemonset.apps/speaker       1         1         1       1            1           beta.kubernetes.io/os=linux   24m

NAMESPACE            NAME                                      READY   UP-TO-DATE   AVAILABLE   AGE
kube-system          deployment.apps/calico-kube-controllers   1/1     1            1           24m
kube-system          deployment.apps/coredns                   2/2     2            2           24m
local-path-storage   deployment.apps/local-path-provisioner    1/1     1            1           24m
metallb-system       deployment.apps/controller                1/1     1            1           24m

NAMESPACE            NAME                                                 DESIRED   CURRENT   READY   AGE
kube-system          replicaset.apps/calico-kube-controllers-58497c65d5   1         1         1       24m
kube-system          replicaset.apps/coredns-78fcd69978                   2         2         2       24m
local-path-storage   replicaset.apps/local-path-provisioner-556d4466c8    1         1         1       24m
metallb-system       replicaset.apps/controller-8687cdc65                 1         1         1       24m



만약 제대로 구성이 되지 않았다면 다시 한번 스크립트를 실행시킵니다.
sudo ./init-k8s.sh

---

3. nodejs 올려보기

- nodejs.yaml 파일을 통해 디플로이먼트 및 서비스를 생성합니다.
kubectl create -f nodejs.yaml

- 파드 및 서비스가 정상적으로 생성되었는지 확인합니다.
kubectl get all -o wide

- 파드의 정보를 자세히 볼 수 있습니다.
kubectl get pod -o wide

- 외부 접속 IP를 확인합니다.
kubectl get svc -o wide

- 로드밸런서 타입의 서비스와 연결된 pod의 ip를 확인합니다.
kubectl get endpoints

- curl 또는 web으로 접속하여 확인합니다.
watch -n 1 curl 192.168.11.61

http://210.117.126.4:61080 으로 접속

---

4. wordpress 구축하기

- kustomization.yaml 을 통해 리소스를 생성합니다.
kubectl apply -k ./

- 리소스가 생성 되었는지 확인합니다.
kubectl get all -o wide

- 파드의 정보를 자세히 볼 수 있습니다.
kubectl get pod -o wide

- 외부 접속 IP를 확인합니다.
kubectl get svc -o wide

- 로드밸런서 타입의 서비스와 연결된 pod의 ip를 확인합니다.
kubectl get endpoints

- web으로 접속하여 확인합니다.
http://210.117.126.4:62080 으로 접속

- 생성된 리소스를 삭제하려면 다음의 명령어를 실행합니다.
kubectl delete -f nodejs.yaml
kubectl delete -f -k ./
