728x90
개 요
Ubuntu 환경에서 Kubernetes 설치 방법을 설명
2023년 11월 13일 부로 apt.kubernetes.io Repository는 deprcated 되었고, pkgs.k8s.io로 변경되었다.
1. 설치 환경
구 분 | 버 전 | 비 고 |
OS | Ubuntu 22.04 | |
Kubernetes | v1.26 | |
cri-o | v1.24.6 | Runtime |
2. OS 환경
구 분 | Master Node | Worker Node |
CPU | 2core | 1core |
Memory | 2GB | 1GB |
설치 요구 사항
1. 방화벽 설정
# 6443-10250/tcp port를 OPEN하거나 방화벽을 종료
$ firewall-cmd --add-port=6443-10250/tcp
$ systemctl stop firewlld.service
2. Selinux off 설정
$ setenforce=0
$ vi /etc/sysconfig/selinux 파일에서 아래 옵션 부분 설정
...
SELINUX=disabled
...
3. SWAP 설정
# RSS 메모리 + 페이지 메모리(swap off)
# 동적 적용, OS 재기동 시 초기화 됨
$ swapoff -a
# 영구 적용
$ vi /etc/fstab에서 swap 줄을 주석 처리
4. HostName과 IP Mapping 설정
$ vi /etc/hosts
...
127.0.0.1 hostname
...
5. Kernel module and parameters 설정
# OS 모듈 설정
$ modprobe br_netfilter // 해당 모듈 기동
$ lsmod | grep br_netfilter // 모듈 기동 확인
# 영구적으로 모듈 기동 설정
$ vi /etc/modules-load.d/99-Kubernetes.conf 파일에서 아래 내용 작성 후 저장
br_netfilter
overlay
ip_vs_rr
ip_vs_wrr
ip_vs_sh
ip_vs
nf_conntrack_ipv4
# 네트워크 파라미터 설정
$ vi /etc/sysctl.d/99-k8s.conf 파일에서 아래 내용 작성 후 저장
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables=1
# 설정 후 적용
$ sysctl --system -p
Runtime 설치(CRI-O)
# 환경 변수 설정
$ export OS=xUbuntu_22.04
$ export VERSION=1.24:/1.24.6
# Repository 다운로드
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:1.24:1.24.6.list
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/Release.key | apt-key add -
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | apt-key add -
# CRI-O 설치
$ apt-get update
$ apt-get install -y cri-o-runc
$ apt-get install -y cri-o
# CRI-O 기동 및 확인
$ systemctl start crio
$ systemctl enable crio
$ systemctl status crio
Kubernetes 설치
1. Kubernetes apt Repository 사용을 위해 필요한 Package 설치
$ apt-get update
$ apt-get install -y apt-transport-https
$ apt-get install -y ca-certificates
$ apt-get install -y curl
2. Kubernetes Package 사용을 위한 Public Key 다운로드
$ curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.26/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
3. Kubernetes Repository 추가
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.26/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
4. kubeadm, kubectl, kubelet 설치
$ apt-get update
$ apt-get install -y kubeadm kubelet kubectl
$ apt-mark hold kubelet kubeadm kubectl
5. Kubernetes 초기 설정
Kubernetes Cluster 생성을 위해서는 crio, kubelet이 정상 기동 되어있는지 확인 후에 진행한다.
$ kubeadm init --control-plane-endpoint=[master 주소 / 내부 ip 주소] --upload-certs --apiserver-advertise-address=[master 주소 / 내부 ip 주소] --pod-network-cidr=[pod 내에서 사용할 주소]
...
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join [ip주소]:6443 --token v1nfh1.hjlkza7z630egrgy \
--discovery-token-ca-cert-hash sha256:37cc731e72892e2c0a10dc1139ab2a399e77de8ea8fe539995097234d2361ff2
위와 같이 나오면 설치 성공
5.1. root 계정에서 kubectl 사용을 위해 환경 변수 설정
$ mkdir -p $HOME/.kube
$ cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ chown $(id -u):$(id -g) $HOME/.kube/config
5.2. kubectl 명령어 자동 완성 설정
$ apt-get install bash-completion –y
$ source <(kubectl completion bash)
$ echo “source <(kubectl completion bash)” >> ~/.bashrc
5.3. Worker Node 설정
사전에 Runtime인 CRI-O는 기동되어 있어야 한다.
# Worker Node에서 아래 명령어 입력
kubeadm join [ip주소]:6443 --token v1nfh1.hjlkza7z630egrgy \
--discovery-token-ca-cert-hash sha256:37cc731e72892e2c0a10dc1139ab2a399e77de8ea8fe539995097234d2361ff2
위 Command Line이 생각 안나는 경우 아래 명령어를 Master Node에서 실행하여 확인 할 수 있다.
$ kubeadm token create --print-join-command
6. Kubernetes 초기화
$ kubeadm reset --force
728x90
'Kubernetes' 카테고리의 다른 글
[Kubernetes] Image Pull Policy (0) | 2024.10.15 |
---|---|
[Kubernetes] Ingress Sticky Session 적용하기 (0) | 2024.10.15 |
[Kubernetes]에러 모음집 (0) | 2023.08.30 |
[kubernetes]Private Registy (0) | 2023.05.15 |
[kubernetes]Metallb 설치 (1) | 2023.05.11 |