본문 바로가기
  • 노션에서 삽질한 내용을 정리하는 블로그
자기발전소/# Docker and K8s

K8s 클러스터 설치: 단일 마스터 및 워커 노드 2개 구성

by iamlucia 2020. 10. 3.

[ master node에서 kubeadm init 성공하면 출력되는 메세지 ]

 

@ Master Node 

 

# mkdir -p $HOME/.kube
# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

@ Worker Node : join token 값 입력

 

# kubeadm join [master node ip]:6443  --token nvd3fo.kr2d7ql95md0uwpm  --discovery-token-ca-cert-hash .... 

 

[ worker node에 입력하여 join 완료 ]

 

worker1에서 clone으로 생성한 worker2의 호스트네임을  바꾸지 않은 채로 실행하여 
master에서 node를 살펴볼 때 worker1만 뜨는 상황 발생
worker1의복사본인 worker2에서 hostnamectl명령어로 서버명을 변경하고 reboot

# kubeadm reset 으로 잘못된 이름으로 join한 history삭제한 다음 다시 토큰값과 hash값으로 join 

 


이때 워커노드 /etc/fstab 에 swap절 부분 주석처리해놔도 reboot하고나면 다시 주석처리되어있기 때문에

swapoff -a 하고 나서 한번 더 확인해야

kubelet이 정상작동함


Cluster 구성 요소 확인

 

--sort-by 필드별 sorting 도 가능

 

호스트 관점에서는 이러한 컴포넌트 컨테이너들이 프로세스 형태로 보인다 

컨테이너 안에서 진행 중인 프로세스가 호스트 관점에서도 투명하게 확인 가능

즉, ps 형태로 확인 가능

 

 

Kubectl 기본 제어 

 

 

 

kubectl get 다음에 리스트를 조회할 때에는 복수형으로 NAME 필드에 있는 이름을 명시

kubectl create -f .yaml 등으로 yaml 생성할 때 해당 리소스를 작성할 때 KIND 값에 단수형으로 명시

 

리소스가 네임스페이스 기반으로 생성이 되는데, 클러스터 레벨의 리소스도 있다 =>namespaced true인 경우 네임스페이스 기반 리소스임

 

apigroup 에 명시안되어있는 것들은 coreapi

리소스의 기능을 추가하고자 할 때 기존 사용자에는 영향을 주지 않고 추가하기 위해서 api group을 분리하기도 한다. 

 

 

리소스 이름이 길거나 많이 쓰이는 경우, 단축명이 지원되고 있다.

 

k8s 단축명  사용

 

$ sudo yum -y insatll bash-completion 
$ bash
$ source <(kubectl completion bash)
$ echo "source <(kubectl completion bash)" >> ~/.bashrc
$ echo "source <(kubectl completion bash)">> ~/.bash_profile