[k8s] Hello, World!

해질녘·2022년 5월 3일
0

k8s 실습

  • 이 포스팅은 이미 worker, master 머신에 k8s를 설치했음을 전제로 한다.

cluster 생성

머신을 껐다 켜면 ip가 바뀌기 때문에 초기화 하는 과정이 필요하다.

  • IP가 바뀌는 건 aws에 돈을 덜 내서 그렇다.
  • 실제 일 할 때에는 돈을 내고 변동 없는 ip 주소를 쓰게 될 것...

master

sudo kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=<주소>

주소 부분에는 master의 private addr. 넣어준다.

kubeadm join 172.31.37.250:6443 --token mr3vij.9d9ckzw12b8q8z1k \
        --discovery-token-ca-cert-hash sha256:72f55303a5f90ac870916afbea900303b3146a890278fba3d58d7cd9b8ffa58e

결과로 이런 걸 보여준다. 어디 다른데에 복붙 해놓고 아래 처럼 쿠버네틱스 설정을 완료한다.

mkdir -p $HOME/.kube
sudo cp -f /etc/kubernetes/admin.conf $HOME/.kube/config
kubectl cluster-info

이 절차는 권한을 주는 것이다. cluster-info 의 결과로 k8s 컨트롤 플래인 (마스터노드)가 실행중이라고 나온다.

마스터 포트번호는 6443이다.

kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml 
kubectl create -f https://docs.projectcalico.org/manifests/custom-resources.yaml

설정

worker

kubeadm join 172.31.37.250:6443 --token r83fm9.fatfgdwbf68pbchi \
        --discovery-token-ca-cert-hash sha256:506e2c1098c6d2aa9568dab65b57e8599759f06dce2437eee57a721396dc4eba

아까 복사해둔 이것 실행시킨다

master

kubectl get nodes -o wide
kubectl get pods --all-namespaces

노드가 조인 되었음을 확인할 수 있다

헬로 어플리케이션

첫 서비스를 실행시켜보자. 헬로월드 국룰

master

kubectl get nodes

노드 연결되었음을 확인.

kubectl get pods -A
kubectl apply -f https://k8s.io/examples/service/access/hello-application.yaml
kubectl expose deployment hello-world --type=NodePort --name=example-service
kubectl describe services example-service

위 명령들 실행하면 뭐가 주르륵 나옴

그중에서 Nodeport: 뒤에 있는 숫자를 기억한다.

curl http://<public-node-ip>:<node-port>

여기에 워커의 퍼블릭 ip와 위에서 기억한 노드포트 번호 넣는다.

cmd

윈도우 씨엠디 켜서 다음 실행

curl http://<public-node-ip>:<node-port>

위에 우분투 기계에서 하든 cmd 에서 하든 Hello Kubernetics! 가 나온다 ㅎ

Nginx 실행

master

kubectl apply -f https://k8s.io/examples/application/deployment.yaml
kubectl expose deployment nginx-deployment --type=NodePort --name=n-service
kubectl describe services

결과로 위에 켜둔 hello 랑 n-service 정보가 나온다. n-service에서 노드포트번호 기억해서 아래에 입력

웹 브라우저

publicIP:포트번호 접속하면 nginx 페이지가 나온다 ^^

Clean up

실습 후 정리할 때 kubeadm 초기화 해주어야 한다.

master에서

kubeadm reset
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

수작업으로 k8s cluster 용 iptable 등등을 제거

apt install ipvsadm
ipvsadm -C

ipvs tables 리셋

kubeadm reset 이후 reboot 하면 완전히 정리됨

오류들

Permission denied
  • 앞에 sudo 붙이기
  • 아니면 sudo su - 해서 루트 진입해서 하기
Port is already used
  • 위에 Clean up 절차 거치고 새로 한다. 새로 할 때는 cluster 생성부터 해야한다.

0개의 댓글