Ssup2 Blog logo Ssup2 Blog

1. 설치 환경

[그림 1] Kubernetes 설치를 위한 Node 구성도

[그림 1]은 Kubernetes 설치를 위한 Node의 구성도를 나타내고 있다. 설치 환경은 다음과 같다.

2. Ubuntu Package 설치

2.1. All Node

모든 Node에서 Kubernetes를 위한 Package를 설치한다.

(All)# sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
(All)# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
(All)# sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
(All)# apt-get update
(All)# apt-get install docker-ce docker-ce-cli containerd.io

Docker를 설치한다.

(All)# apt-get update && apt-get install -y apt-transport-https curl
(All)# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
(All)# echo deb http://apt.kubernetes.io/ kubernetes-xenial main > /etc/apt/sources.list.d/kubernetes.list
(All)# apt-get update
(All)# apt-get install -y kubeadm=1.18.3-00 kubelet=1.18.3-00

kubelet, kubeadm를 설치한다.

(ALL)# sysctl -w net.ipv6.conf.all.forwarding=1
(ALL)# echo net.ipv6.conf.all.forwarding=1 >> /etc/sysctl.conf

IPv6 Forwarding을 설정한다.

3. Kubernetes Cluster 구축

3.1. Master Node

(Master)# kubeadm init --apiserver-advertise-address=192.168.0.61 --kubernetes-version=v1.18.3 --feature-gates=IPv6DualStack=true --pod-network-cidr=192.167.0.0/16,fdbb::0/64 --service-cidr=10.96.0.0/12,fdcc::0/112
...
kubeadm join 192.168.0.61:6443 --token 6gu1o3.dwhguhu651x137eq --discovery-token-ca-cert-hash sha256:2ab0fa9f6f8c3c49c263bc0a0edc19ddf973bf7fdf5e464c807df45e8bf49ab8

kubeadm를 초기화 한다. –pod-network-cidr, –service-cidr 각각 IPv6 CIDR도 설정한다.

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

kubernetes config 파일을 설정한다.

3.2. Worker Node

(Worker)# kubeadm join 192.168.0.61:6443 --token 6gu1o3.dwhguhu651x137eq --discovery-token-ca-cert-hash sha256:2ab0fa9f6f8c3c49c263bc0a0edc19ddf973bf7fdf5e464c807df45e8bf49ab8

kubeadm init 결과로 나온 kubeadm join ~~ 명령어를 모든 Worker Node에서 수행한다.

4. Calico 설치

(Master)# wget https://docs.projectcalico.org/v3.14/manifests/calico.yaml

Calico Manifest 파일을 Download한다.

...
          "mtu": __CNI_MTU__,
          "ipam": {
              "type": "calico-ipam",
              "assign_ipv4": "true",
              "assign_ipv6": "true"
          },
...
            # The default IPv4 pool to create on startup if none exists. Pod IPs will be
            # chosen from this range. Changing this value after installation will have
            # no effect. This should fall within `--cluster-cidr`.
            - name: CALICO_IPV4POOL_CIDR
              value: "192.167.0.0/16"
            - name: IP6
              value: "autodetect"
            - name: CALICO_IPV6POOL_CIDR
              value: "fdbb::0/64"
...
            - name: FELIX_DEFAULTENDPOINTTOHOSTACTION
              value: "ACCEPT"
            - name: FELIX_IPV6SUPPORT
              value: true
[파일 1] calico.yaml

Calico Manifest 파일을 [파일 1]의 내용으로 수정한다.

(Master)# kubectl apply -f calico.yaml

Calico를 설치한다.

5. 참조