Post

[쿠버네티스] 설치 (실습)

Vmware 사용해서 쿠버네티스 설치 방법이다

실습 진행할 때에는 D드라이브에 Vitual Machine 폴더를 만들어서 지정하여 사용했다

Virtual Network Editor

Host only subnet ip 172.100.100.0

NAT DHCP 192.168.184.201 ~ 254

Network Adapter 추가

vim, net-tools, tree 설치

netplan 파일 설정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# /etc/netplan/50-cloud-init.yaml
network:
  version: 2
  ethernets:
    ens33:
      addresses:
        - 192.168.184.202/24
      routes:
        - to: default
          via: 192.168.184.2
      nameservers:
        addresses:
          - 8.8.8.8
        search:
          - 8.8.4.4
      dhcp4: false
    ens34:
      addresses: [172.100.100.2/24]
      nameservers:
        addresses:
          - 8.8.8.8
        search:
          - 8.8.4.4
      dhcp4: false

Location & Timezone 설정

sudo locale-gen ko_KR.UTF-8

sudo timedatectl set-timezone Asia/Seoul

방화벽 오픈 : sudo ufw disable

Swap 모드 off로 변경 : sudo swapoff -a

ntp 설치 : sudo apt -y install ntp

동기화된 목록 확인 : sudo ntpq - p

도커 설치 및 커널 변경

네트워크 패킷 포워딩을 통해 커널에서 IP 포워딩을 활성화

sudo -i 를 통해 root로 접속 → sudo 만으로는 불가능

echo '1' > /proc/sys/net/ipv4/ip_forward

1
2
3
4
sudo cat &lt;<EOF | sudo tee /etc/modules-load.d/containerd.conf 
overlay 
br_netfilter 
EOF

sudo modprobe overlay

sudo modprobe br_netfilter

1
2
3
4
5
sudo cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf 
net.bridge.bridge-nf-call-iptables = 1 
net.ipv4.ip_forward = 1 
net.bridge.bridge-nf-call-ip6table = 1 
EOF
1
2
3
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
1
2
3
4
5
sudo cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf 
net.bridge.bridge-nf-call-iptables = 1 
net.ipv4.ip_forward = 1 
net.bridge.bridge-nf-call-ip6table = 1 
EOF

이후 도커 설치

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# docker 사용에 필요한 패키지 설치
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common 

#######################################
# 도커 리파지토리 등록을 위해서는 키링을 통해 관리하게 되어 있기에
# 이와 관련된 사전 준비가 필요하다.
# Docker의 공식 GPG(GNU Privacy Guard) key를 추가

# 키를 저장할 디렉터리 생성 및 GPG키 추가
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 도커 리포지토리 설정
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null

# docker에서 제공하는 GPG key 추가 확인
sudo apt-key fingerprint
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
/etc/apt/trusted.gpg

--------------------
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]

/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg
------------------------------------------------------

sudo apt-key fingerprint 0EBFCD88
[sudo] password for ian:
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
#######################################
# 등록된 키를 통해 다운받기 위해 apt repository source에 docker의 repository 를 키핑을 포함하여 추가 하고
# 리스트 업데이트 후 설치 및 확인

#
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# apt repository source에 더커 리파지토리를 등록하였으니 apt의 업데이트 필요
sudo apt update

# 도커 엔진 및 관련 패키지 설치
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 도커 서비스 시작 및 확인
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker
sudo docker –version

# 사용자 등록 : sudo 사용하지 않기 위함
sudo usermod -aG docker $USER
# 테스트
docker run hello-world

sudo sh -c "containerd config default > /etc/containerd/config.toml”

sudo sed -i 's| SystemdCgroup = false| SystemdCgroup = true|g' /etc/containerd/config.toml

수정 후 재시작

sudo systemctl restart containerd.service

sudo vi /etc/docker/daemon.json 수정

1
2
3
4
5
6
7
8
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}

쿠버네티스 설치

1
2
3
4
5
6
7
8
9
10
11
12
13
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/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.32/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

# 설치할때 오류생기면 update, upgrade
sudo apt -y install cri-tools kubeadm kubectl kubelet kubernetes-cni

sudo apt-mark hold kubelet kubeadm kubectl # 업데이트 홀드

# 시스템 restart 
sudo systemctl daemon-reload
sudo systemctl restart kubelet.service
sudo systemctl enable --now kubelet.service
This post is licensed under CC BY 4.0 by the author.