본문 바로가기

IT

Kubernetes(쿠버네티스) 2 CNI 설치 및 실행, taint

728x90

쿠버네티스는 하나의 MASTER [control-plane]와 여러 서버 NODE[node]가 존재

  • MASTER를 실행시켜야 쿠버네티스가 돌아가고 있다고 할 수 있다.
  • sudo kubeadm init --pod-network-cidr=10.100.0.0/16
    • sudo kubeadm init --pod-network-cidr=10.100.0.0/16 -v=5 => 클러스터 구성과정을 자세히 보여줌
    • pod => 도커의 컨테이너 개념으로 쿠버네티스에서 다루는 배포의 최소 단위
    • 10.100.0.0/16 => 쿠버네티스가 설치된 이 PC에 존재하는 IP와 상관없이 구성 요소들끼리 통신이 가능하도록 묶는 IP 대역

**문서 -create-cluster-kubeadm

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#instructionssudo 

현재 리눅스 유저를 쿠버네티스 관리자 계정으로 지정

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

노드 확인 명령어

  • kubectl get nodes -A
  • kubectl get nodes -A -o wide

get nodes

POD 확인 명령어

  • kubectl get pods -A
  • kubectl get pods -A -o wide

kubectl get pods -A

칼리코(Container Network Interface 구현체) 설치

# This section includes base Calico installation configuration.
# For more information, see: https://projectcalico.docs.tigera.io/master/reference/installation/api#operator.tigera.io/v1.Installation
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
  name: default
spec:
  # Configures Calico networking.
  calicoNetwork:
    # Note: The ipPools section cannot be modified post-install.
    ipPools:
    - blockSize: 26
      cidr: 10.100.0.0/16
      encapsulation: VXLANCrossSubnet
      natOutgoing: Enabled
      nodeSelector: all()

---

# This section configures the Calico API server.
# For more information, see: https://projectcalico.docs.tigera.io/master/reference/installation/api#operator.tigera.io/v1.APIServer
apiVersion: operator.tigera.io/v1
kind: APIServer 
metadata: 
  name: default 
spec: {}
  • kubectl create -f calico-resources.yaml

생성확인

  • watch kubectl get pods -n calico-system
  • status가 Ready로 바뀐 것을 확인 가능

get nodes -A

단일 노드로 구성하기 위해 마스터에서도 파드 배포 가능하게 만들기

  • kubectl taint nodes --all node-role.kubernetes.io/control-plane-
  • taint(얼룩)는 일종의 DB로 치면 제약사항이다. taint가 있으면 제약사항을 주는 것인데 -를 줌으로써 제약사항을 뺀다. 실제로 쿠버네티스에서는 마스터는 남는 서버를 가진 노드들에게 요청을 하지만 현재 실습환경에서는 마스터하나만을 다루고 있기 때문에 딜레이가 생긴다. 따라서 마스터에서 파드 배포가 가능하게 설정이 필요하다.   

untainted

kubectl 자동완성 설정

  • 탭하여 명령어 자동완성 기능 설정
sudo yum install bash-completion -y
source /usr/share/bash-completion/bash_completion
kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null
echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -o default -F __start_kubectl k' >>~/.bashrc
source /usr/share/bash-completion/bash_completion
# 터미널 다시 접속