본문 바로가기
시스템/쿠버네티스

쿠버네티스 환경 설정

by cbwstar 2024. 1. 4.
728x90
반응형

우분투22.04 버전 4대의 가상 서버 준비

master : 10.0.100.2
node1: 10.0.100.3
node2: 10.0.100.4
node3: 10.0.100.5
template : 10.0.100.6   /* 쿠버네티스 작업하다 오류 발생시 복원용 */

 

총 4개의 가상서버를 준비하여야 하는데

일단 한개의 서버만 복제하여 쿠버네티스 master 정보를 셋팅한다. 마스터가 잘 셋팅이 되면 node서버는 마스터 복제하여 쉽게 구성할 수 있다. 마스터 서버 셋팅이 에러가 없이 잘되면 되는데 버전 문제가 많아서 잘 안된다. 몇번 시도 끝에 현재 버전에서 잘되는 방법으로 정리 하였다.

/* 현재 버전은 도커를 별도로 설치 할 필요가 없다. 기존 방식대로 도커를 설치 했다가 꼬이는것 같아서 공식문서를 보면서 작성 하였다. */

/* 가상서버 종료후 복제를 한다 */

 

 

 

복제후 서버를 실행시킨후에 호스트 네임과 아이피를 변경한다.

/* 호스트 네임 변경 */

sudo hostnamectl set-hostname master  

/* 아이피 변경 */

vi /etc/netplan/00-installer-config.yaml

master 서버는 : 10.0.100.2 번 아이피로 변경

 

> netplan apply

아이피 적용(아이피 확인)

> ifconfig

 

 

-  워크노드 3개를 복제한다.

 

7. Worker node 구성(only worker)

1) worknode1 서버에 접속하여 아이피와 호스트명을 변경한다.

cd /etc/netplan
vi 00-installer-config.yaml
netplan apply
hostnamectl set-hostname node1

vi /etc/hosts

 

 

sudo hostnamectl set-hostname node2
sudo hostnamectl set-hostname node3
위와 동일한 방법으로 수정한다.

 

/* 쿠버네티스 버전 1.27.9 기준으로 설치 */

/* 작업계정은 root 계정에서 진행 */

/* 공통 마스터, node1,node2,node3 */

쿠버네티스 공식 사이트 : https://v1-27.docs.kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

 

Installing kubeadm

This page shows how to install the kubeadm toolbox. For information on how to create a cluster with kubeadm once you have performed this installation process, see the Creating a cluster with kubeadm page. This installation guide is for Kubernetes v1.29. If

kubernetes.io

1. 메모리 스왑 해제

root@node1:~# free
               total        used        free      shared  buff/cache   available
Mem:         4005720      232608     3159696        1124      613416     3543420
Swap:        4004860           0     4004860
root@node1:~# swapoff -a
root@node1:~# sed -i '/swap/s/^/#/' /etc/fstab
root@node1:~# free
               total        used        free      shared  buff/cache   available
Mem:         4005720      230648     3161584        1124      613488     3545372
Swap:              0           0           0
root@node1:~# reboot

swap 항목이 0으로 변경 되었으면 재 부팅한다.

2. cgoup 확인

   mount 명령으로 cgroup를 확인 해본다.

 

root@node1:~# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=1944940k,nr_inodes=486235,mode=755,inode64)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,noexec,relatime,size=400576k,mode=755,inode64)
/dev/mapper/ubuntu--vg-ubuntu--lv on / type ext4 (rw,relatime)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,inode64)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k,inode64)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)

맨아래 cgroup2가 설정 되어 있다. 쿠버네티스 공식문서에 cgroupDriver을 systemd로 설정해서 사용하라고 나온다.

https://v1-27.docs.kubernetes.io/docs/setup/production-environment/container-runtimes/

 

Container Runtimes

Note: Dockershim has been removed from the Kubernetes project as of release 1.24. Read the Dockershim Removal FAQ for further details. You need to install a container runtime into each node in the cluster so that Pods can run there. This page outlines what

kubernetes.io

위에 문서에 나온대로 컨테이너 런타임을 설치하기 위해서 iptables가 브리지된 트랙픽을 허용할수 있게 설정한다.

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

# sysctl params required by setup, params persist across reboots
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

# Apply sysctl params without reboot
sudo sysctl --system

- 다음 명령을 실행하여 모듈이 로드 되었는지 확인

lsmod | grep br_netfilter
lsmod | grep overlay

- 다음 명령을 실행하여 구성에 , net.bridge.bridge-nf-call-iptables및 net.bridge.bridge-nf-call-ip6tables시스템 net.ipv4.ip_forward변수가 로 설정되어 있는지 확인하세요 .1sysctl

sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward

 

1) containerd 설치

    apt install -y containerd

    systemctl status containerd

2) containerd 환경설정 파일 셋팅

     mkdir -p /etc/containerd

     containerd config default | sudo tee /etc/containerd/config.toml

      vi /etc/containerd/config.toml

      137 라인 SystemdCgroup 을 true로 변경
      SystemdCgroup = true

3) 재기동

    systemctl restart containerd.service

    systemctl status containerd.service

 

3. kubadmin으로 설치

https://v1-27.docs.kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

 

Installing kubeadm

This page shows how to install the kubeadm toolbox. For information on how to create a cluster with kubeadm once you have performed this installation process, see the Creating a cluster with kubeadm page. This installation guide is for Kubernetes v1.29. If

kubernetes.io

/* 문서는 영문 문서로 설치 해야 함. 한글문서 따라 했다가 문서가 버전 업데이트가 안되었는지 에러가 발생해서 문서는 영문으로 */

 

  1) apt 업데이트

sudo apt-get update
# apt-transport-https may be a dummy package; if so, you can skip that package
sudo apt-get install -y apt-transport-https ca-certificates curl

  2) 구글의 공개 사이닝 키를 다운로드 한다.   

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.27/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

   3) 저장소 추가

echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.27/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

   4) 업데이트 및 kubeadm 설치

    - 설치 가능한 버전 확인

     apt-get update

     apt-cache madison kubeadm

root@node1:~# apt-cache madison kubeadm
   kubeadm | 1.27.9-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb  Packages
   kubeadm | 1.27.8-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb  Packages
   kubeadm | 1.27.7-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb  Packages
   kubeadm | 1.27.6-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb  Packages
   kubeadm | 1.27.5-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb  Packages
   kubeadm | 1.27.4-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb  Packages
   kubeadm | 1.27.3-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb  Packages
   kubeadm | 1.27.2-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb  Packages
   kubeadm | 1.27.1-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb  Packages
   kubeadm | 1.27.0-2.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb  Packages

apt-cache search kubelet

root@node1:~# apt list -a kubeadm
Listing... Done
kubeadm/unknown 1.27.9-1.1 amd64
kubeadm/unknown 1.27.8-1.1 amd64
kubeadm/unknown 1.27.7-1.1 amd64
kubeadm/unknown 1.27.6-1.1 amd64
kubeadm/unknown 1.27.5-1.1 amd64
kubeadm/unknown 1.27.4-1.1 amd64
kubeadm/unknown 1.27.3-1.1 amd64
kubeadm/unknown 1.27.2-1.1 amd64
kubeadm/unknown 1.27.1-1.1 amd64
kubeadm/unknown 1.27.0-2.1 amd64

kubeadm/unknown 1.27.9-1.1 arm64
kubeadm/unknown 1.27.8-1.1 arm64
kubeadm/unknown 1.27.7-1.1 arm64
kubeadm/unknown 1.27.6-1.1 arm64
kubeadm/unknown 1.27.5-1.1 arm64
kubeadm/unknown 1.27.4-1.1 arm64
kubeadm/unknown 1.27.3-1.1 arm64
kubeadm/unknown 1.27.2-1.1 arm64
kubeadm/unknown 1.27.1-1.1 arm64
kubeadm/unknown 1.27.0-2.1 arm64

kubeadm/unknown 1.27.9-1.1 ppc64el
kubeadm/unknown 1.27.8-1.1 ppc64el
kubeadm/unknown 1.27.7-1.1 ppc64el
kubeadm/unknown 1.27.6-1.1 ppc64el
kubeadm/unknown 1.27.5-1.1 ppc64el
kubeadm/unknown 1.27.4-1.1 ppc64el
kubeadm/unknown 1.27.3-1.1 ppc64el
kubeadm/unknown 1.27.2-1.1 ppc64el
kubeadm/unknown 1.27.1-1.1 ppc64el
kubeadm/unknown 1.27.0-2.1 ppc64el

kubeadm/unknown 1.27.9-1.1 s390x
kubeadm/unknown 1.27.8-1.1 s390x
kubeadm/unknown 1.27.7-1.1 s390x
kubeadm/unknown 1.27.6-1.1 s390x
kubeadm/unknown 1.27.5-1.1 s390x
kubeadm/unknown 1.27.4-1.1 s390x
kubeadm/unknown 1.27.3-1.1 s390x
kubeadm/unknown 1.27.2-1.1 s390x
kubeadm/unknown 1.27.1-1.1 s390x
kubeadm/unknown 1.27.0-2.1 s390x

 

/* 버전 명시해서 설치 */
apt-get install -y kubelet=1.27.9-1.1 kubeadm=1.27.9-1.1 kubectl=1.27.9-1.1

apt-mark hold kubelet kubeadm kubectl

 

/* master 만 */
kubeadm init --apiserver-advertise-address 10.0.100.2 --pod-network-cidr=10.1.0.0/16

/* 설치 옵션 apiserver-advertise-address 마스터 서버 아이피,

   pod-network-cidr 는 내부 pod 아이피 대역 설정 */

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 10.0.100.2:6443 --token jrcvwk.readw1ehq1etejgp \
	--discovery-token-ca-cert-hash sha256:e30d06efd1b53dc2fa59b0a349a972a21f74fac76e817ed92a67b905d1e497e8

이렇게 나오면 master에 쿠버네티스 설치 완료

마스터에서 만 실행시킨다.

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

 

   export KUBECONFIG=/etc/kubernetes/admin.conf

  실행하여 준다.

 

/* node 서버에서는 마스터에서 생성된 토큰을 실행시켜 주면 조인이 된다 */

kubeadm join 10.0.100.2:6443 --token jrcvwk.readw1ehq1etejgp \
--discovery-token-ca-cert-hash sha256:e30d06efd1b53dc2fa59b0a349a972a21f74fac76e817ed92a67b905d1e497e8 

 

 5) 설치 확인

    kubectl get nodes

    이렇게 실행 시키면 NotReady  상태로 표시된다.

    cni를 설치 해 줘야 한다.

 

     쿠버네티스 실행 확인

     - 마스터에서

        watch kubectl get nodes -o wide

       watch -n 1 kubectl get all -n calico-system

 

4. 칼리코 cni  설치 (마스터에만 설치한다.)

    https://docs.tigera.io/calico/3.26/getting-started/kubernetes/quickstart

 

Quickstart for Calico on Kubernetes | Calico Documentation

Install Calico on a single-host Kubernetes cluster for testing or development in under 15 minutes.

docs.tigera.io

cni를 바로 설치 하지 않고 다운 받아서 편집후 설치한다.

mkdir cni

cd cni

root@master:~/cni# pwd
/root/cni
root@master:~/cni#

사용자 정의 파일을 다운 받아서 pod 내부 대역대 cidr 부분을 수정한다.

1. 설치
wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.4/manifests/tigera-operator.yaml
2. 필요한 설치 참조
wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.4/manifests/custom-resources.yaml
root@master:~/cni# ll
total 1456
drwxr-xr-x 2 root root    4096  1월  5 08:32 ./
drwx------ 7 root root    4096  1월  5 09:48 ../
-rw-r--r-- 1 root root     821  1월  5 08:32 custom-resources.yaml
-rw-r--r-- 1 root root 1475581  1월  5 08:29 tigera-operator.yaml

 vi custom-resources.yaml

 - 설치한다.

   kubectl create -f tigera-operator.yaml

   kubectl create -f custom-resources.yaml

/* 칼리코 설치중 문제가 있어서 삭제 할려면 */

/* 삭제 방법 */
kubectl delete -f custom-resources.yaml
kubectl delete -f tigera-operator.yaml

설치 확인

  kubectl get all -n calico-system

root@master:~/cni# kubectl get all -n calico-system
NAME                                          READY   STATUS    RESTARTS   AGE
pod/calico-kube-controllers-79cc476bf-flc6b   1/1     Running   0          73m
pod/calico-node-xpcrx                         1/1     Running   0          73m
pod/calico-typha-656dfdcbb7-tfbc6             1/1     Running   0          73m
pod/csi-node-driver-glsbc                     2/2     Running   0          73m

NAME                                      TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/calico-kube-controllers-metrics   ClusterIP   None            <none>        9094/TCP   71m
service/calico-typha                      ClusterIP   10.101.200.13   <none>        5473/TCP   73m

NAME                             DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
daemonset.apps/calico-node       1         1         1       1            1           kubernetes.io/os=linux   73m
daemonset.apps/csi-node-driver   1         1         1       1            1           kubernetes.io/os=linux   73m

NAME                                      READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/calico-kube-controllers   1/1     1            1           73m
deployment.apps/calico-typha              1/1     1            1           73m

NAME                                                DESIRED   CURRENT   READY   AGE
replicaset.apps/calico-kube-controllers-79cc476bf   1         1         1       73m
replicaset.apps/calico-typha-656dfdcbb7             1         1         1       73m

이렇게 Runnung 상태이면 정상 설치가 되었다.

kube-system도 정상적으로 기동 되는지 확인한다.

 

kubectl get all - n kube-system

root@master:~/cni# kubectl get all -n kube-system
NAME                                 READY   STATUS    RESTARTS   AGE
pod/coredns-5d78c9869d-b6xlj         1/1     Running   0          100m
pod/coredns-5d78c9869d-mv7fx         1/1     Running   0          100m
pod/etcd-master                      1/1     Running   0          101m
pod/kube-apiserver-master            1/1     Running   0          101m
pod/kube-controller-manager-master   1/1     Running   0          101m
pod/kube-proxy-pvqgp                 1/1     Running   0          100m
pod/kube-scheduler-master            1/1     Running   0          101m

NAME               TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE
service/kube-dns   ClusterIP   10.96.0.10   <none>        53/UDP,53/TCP,9153/TCP   100m

NAME                        DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
daemonset.apps/kube-proxy   1         1         1       1            1           kubernetes.io/os=linux   100m

NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/coredns   2/2     2            2           100m

NAME                                 DESIRED   CURRENT   READY   AGE
replicaset.apps/coredns-5d78c9869d   2         2         2       100m

 

5. 단축키 설정

https://kubernetes.io/docs/reference/kubectl/quick-reference/
검색어 : autocomplete

 

kubectl Quick Reference

This page contains a list of commonly used kubectl commands and flags. Note: These instructions are for Kubernetes v1.29. To check the version, use the kubectl version command. Kubectl autocomplete BASH source <(kubectl completion bash) # set up autocomple

kubernetes.io

source <(kubectl completion bash) # set up autocomplete in bash into the current shell, bash-completion package should be installed first.
echo "source <(kubectl completion bash)" >> ~/.bashrc # add autocomplete permanently to your bash shell.

 - 단축키 사용방법은

   kubectl get no 탭키 앞에 몇자리 입력하고 탭키 누르면 나머지 뒷자리가 자동으로 채워진다.

 

- 방화벽 비활성(방화벽이 설정되어 있으면)

sudo ufw disable

 

/* 쿠버네티스 삭제 */

/* 쿠버네티스 완전삭제 */

systemctl stop kubelet
systemctl disable kubelet
kubeadm reset
rm -rf /etc/kubernetes /var/lib/kubelet /var/lib/etcd
apt remove -y kubeadm kubectl kubernetes-cni kubelet kube*
apt autoremove
apt purge kubeadm kubectl kubernetes-cni kubelet kube*

rm -rf /var/lib/cni/
rm -rf /var/lib/kublet/*
rm -rf /var/liv/etcd/
rm -rf /run/flannel
rm -rf /etc/cni/
rm -rf /etc/kubernetes
rm -rf ~/.kube

/* containerd 다시 시작 */
  systemctl restart containerd

 

이상으로 우분투 22.04 버전에 쿠버네티스 설치가 완료 되었다.

/* kubectl 정보 확인 명령어 */

- 클러스터 정보

  kubectl cluster-info

  kubectl get nodes

  kubectl get namespaces

  kubectl -n kube-system get pod

  kubectl -n calico-system get pod

  kubectl -n calico-apiserver get pod

  kubectl get pods -A

 

/* work node에 join 할때 마스터에서 생성된 토큰이 만료 되었을 경우 새로 생성하여 조인한다. */

1) token 값 확인

    kubeadm token list

2) 토큰이 만료된 경우 token 생성

    kubeadm token create

3) Hash값 확인

    openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

4) token, hash 값으로 워커노드에 조인하기

kubeadm join 10.0.100.2:6443 --token <Token 값> --discovery-token-ca-cert-hash sha256:<Hash 값>

kubeadm join 10.0.100.2:6443 --token nj9tir.96sgj53f4q5gkt5h \
	--discovery-token-ca-cert-hash sha256:e30d06efd1b53dc2fa59b0a349a972a21f74fac76e817ed92a67b905d1e497e8

5) 토큰 삭제

kubeadm token delete 토큰이름

6) 토큰 발행

kubeadm token create --print-join-command

 

/* 쿠버네티스 설치 순서 버전 1.29로 설치 */

hostnamectl set-hostname master 
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3

vi /etc/netplan/00-installer-config.yaml
netplan apply

10.0.100.2 master
10.0.100.3 node1
10.0.100.4 node2
10.0.100.5 node3

swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
reboot

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

sudo sysctl --system

lsmod | grep br_netfilter
lsmod | grep overlay

sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward

apt install -y containerd

mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
vi /etc/containerd/config.toml

137 라인 SystemdCgroup 을 true로 변경
      SystemdCgroup = true

systemctl restart containerd.service
systemctl status containerd.service

sudo apt-get update

sudo apt-get install -y apt-transport-https ca-certificates curl gpg
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt-get update
apt-cache madison kubeadm

apt-get install -y kubelet=1.29.0-1.1 kubeadm=1.29.0-1.1 kubectl=1.29.0-1.1
apt-mark hold kubelet kubeadm kubectl

/* master 만 */
kubeadm init --apiserver-advertise-address 10.0.100.2 --pod-network-cidr=10.1.0.0/16

/* node에만 */
kubeadm join 10.0.100.2:6443 --token y5j5t9.vxjor94djucrq8m1      --discovery-token-ca-cert-hash sha256:cc43e9d2d6681a6851da9ebf32885c3e4dd140c72c3f79be73fab8e9dc149241

kubectl get nodes

/* 쿠버네티스 join 오류가 발생하는 경우가 있음 마스터하고 통신이 안됨 통신 확인 필요 에러 발생시 */

curl -k https://10.0.100.2:6443/api/v1/namespaces/kube-public/configmaps/cluster-info?timeout=10s

telnet 10.0.100.2 6443  

네트워크 관련 라우팅이 자동 등록이 안되어서 통신이 안되는것 같음 그냥 ping 10.0.100.3 서로간에 ping통신으로 해주니까 연결이 되었음 그리고 설치

 

/* 칼리코 설치 마스터에서만 */
mkdir cni
wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.4/manifests/tigera-operator.yaml
wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.4/manifests/custom-resources.yaml
vi custom-resources.yaml
아이피 변경 : 10.1.0.0/16
kubectl create -f tigera-operator.yaml
kubectl create -f custom-resources.yaml

/* 설치 확인 */
kubectl get all -n calico-system

watch kubectl get nodes -o wide

 

/* 단축키 */

source <(kubectl completion bash) # set up autocomplete in bash into the current shell, bash-completion package should be installed first.
echo "source <(kubectl completion bash)" >> ~/.bashrc # add autocomplete permanently to your bash shell.

 

/* crictl 버전 확인 */

crictl version

root@master:~/cni# crictl version
WARN[0000] runtime connect using default endpoints: [unix:///var/run/dockershim.sock unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock unix:///var/run/cri-dockerd.sock]. As the default settings are now deprecated, you should set the endpoint instead. 
ERRO[0000] validate service connection: validate CRI v1 runtime API for endpoint "unix:///var/run/dockershim.sock": rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing: dial unix /var/run/dockershim.sock: connect: no such file or directory" 
Version:  0.1.0
RuntimeName:  containerd
RuntimeVersion:  1.7.2
RuntimeApiVersion:  v1

위에처럼 에러 발생시

cat /etc/circtl.yaml 파일이 존재하지 않으면 아래 명령 실행

sudo tee /etc/crictl.yaml > /dev/null <<EOF
runtime-endpoint: unix:///var/run/containerd/containerd.sock
image-endpoint: unix:///var/run/containerd/containerd.sock
timeout: 2
debug: true
pull-image-on-create: false
EOF
728x90
반응형

댓글



"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

loading