머신을 껐다 켜면 ip가 바뀌기 때문에 초기화 하는 과정이 필요하다.
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
설정
kubeadm join 172.31.37.250:6443 --token r83fm9.fatfgdwbf68pbchi \
--discovery-token-ca-cert-hash sha256:506e2c1098c6d2aa9568dab65b57e8599759f06dce2437eee57a721396dc4eba
아까 복사해둔 이것 실행시킨다
kubectl get nodes -o wide
kubectl get pods --all-namespaces
노드가 조인 되었음을 확인할 수 있다
첫 서비스를 실행시켜보자. 헬로월드 국룰
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와 위에서 기억한 노드포트 번호 넣는다.
윈도우 씨엠디 켜서 다음 실행
curl http://<public-node-ip>:<node-port>
위에 우분투 기계에서 하든 cmd 에서 하든 Hello Kubernetics! 가 나온다 ㅎ
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 페이지가 나온다 ^^
실습 후 정리할 때 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
Port is already used