목차

Kubernetes 클러스터 초기화 (kubeadm init)

# pod-network-cidr은 Pod 네트워크의 IP 주소 범위를 지정 설정된 경우 control plane은 모든 노드에대해 CIDR을 자동으로 할당
# apiserver-advertise-address는 수신 대기 중임을 알릴 IP 주소 -> master node IP설정
# 오류시 kubeadm reset를 사용하여 초기화 후 다시 셋팅

sudo kubeadm init --pod-network-cidr=10.244.0.0/16 \\
--apiserver-advertise-address=10.10.10.21

#맨 마지막 하단에 나오는 부분을 캡쳐하여 설정 완료후 서브 노드에 사용
#ex
kubeadm join 192.168.56.100:6443 --token 3p0jo7.pwoq2lndhx5xk45s \\
--discovery-token-ca-cert-hash sha256:e0c59604e0a5f9c212a8f9da1bea8306f472904330aceaa44b42d225e8f53fa2

# 마스터가 2개 이상일때
### 먼저 HAProxy 설정 필수 (로드밸런서 보통 가용 높은 마스터 노드 2대에 설치 )
sudo kubeadm init \\
  --control-plane-endpoint \"10.10.10.100:6443\" \\
  --upload-certs \\
  --pod-network-cidr=10.244.0.0/16
  #--control-plane-endpoint  kube-lb 에 지정한 값넣으면됨
 #명령 실행 후, join 명령어(마스터용, 워커용)와 certificate-key가 콘솔에 출력됨 → 따로 복사해

# kubernetes control-plane 초기화
#sudo권한 없이 kuberctl 사용하기
# admin.conf 구성 파일을 통한 Kubernetes 권한을 부여 -> 권한 지정 없이 진행
mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

# kubectl 자동완성 기능 설정
sudo apt install bash-completion -y

source <(kubectl completion bash)

echo \"source <(kubectl completion bash)\" >> ~/.bashrc

complete -F __start_kubectl k

vi .bashrc #alias 추가
alias kub=kubectl
alias kubg='kubectl get'
alias kubc='kubectl create'
alias kuba='kubectl apply'
alias kubr='kubectl run'
alias kubd='kubectl delete'
complete -F __start_kubectl k

#vi .bashrc
source .bashrc

sudo netstat -nltp | grep LISTEN
#HostOS에 open된 port를 확인한다. 특히, kube-apiserver! 6443 port

kubectl get node
#현재는 마스터 1개

kubectl get po -A
#master, apiserver, controller, scheduler
#마스터 노드 켑쳐한 내용 각 노드에 불여 넣기
sudo kubeadm join 192.168.56.100:6443 --token 3p0jo7.pwoq2lndhx5xk45s \\
--discovery-token-ca-cert-hash sha256:e0c59604e0a5f9c212a8f9da1bea8306f472904330aceaa44b42d225e8f53fa2
kubectl get no
#마스터 노드와 연결한 노드 만큼 표기

kubectl get po --all-namespaces #kubectl get po -A 같음
#노드 갯수만큼 Pending 된걸 볼 수있음