| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 메탈LB
- 쿠버네티스 컴포넌트
- Prometheus install
- LoadBalancer Controller
- 깃허브 액션
- Firelens
- 로드밸런서 컨트롤러
- kubernetes 동작 원리
- 그라파나 시각화
- grafana on kubernetes
- helm
- Solution Architecture
- AWS 딥레이서
- jenkins
- EFS CSI Driver
- SAA 합격 후기
- 딥레이서
- 딥레이서 보상함수
- EKS 클러스터
- terraform
- blue-green
- 그라파나 대시보드
- 솔데스크
- github action 사용법
- headless service
- livenessPorbe
- Aurora cluster
- 쿠버네티스
- Kubernets on Jenkins
- Kubernetes
mingming
Kubernetes 설치하기 (Ubuntu 20.04) 본문
우분투에 쿠버네티스 설치하기
OS : Ubuntu 20.04
Master Node 1대 , Worker Node 1대
1. 기본설정
설치 편의를 위해 root 계정으로 전환하기
sudo su -
우분투 22번 포트 허용 (원격접속)
ufw allow 22/tcp
2. 도커엔진 설치하기
패키지 업데이트 및 도커 설치
# docker 설치를 위한 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
# 우분투 패키지에 Docker 저장소 추가
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 > /dev/null
# docker 설치
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io
도커 설치 확인
systemctl status docker
3. Kubernetes 설치하기
스왑 메모리 비활성화 (메모리 최적화)
# 스왑 메모리 비활성화
swapoff -a
# 스왑 공간 마운트 해제
sed -i '/swap/s/^/#/' /etc/fstab
k8s,conf 파일 iptable 설정
# ipv4, ipv6 네트워크 트래픽이 iptables를 통해 브릿지로 전달되도록 설정
echo "net.bridge.bridge-nf-call-ip6tables = 1" | sudo tee /etc/sysctl.d/k8s.conf
echo "net.bridge.bridge-nf-call-iptables = 1" | sudo tee -a /etc/sysctl.d/k8s.conf
sudo sysctl --system
kubernetes 저장소 업데이트
apt-get install -y apt-transport-https ca-certificates
# 쿠버네티스 패키지 저장소 추가 및 GPG 키 추가
sudo curl -s /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
# GPG 키 에러시
sudo curl -s https://dl.k8s.io/apt/doc/apt-key.gpg | sudo apt-key add -
쿠버네티스 설치
apt-get update
apt-get install -y kubelet kubeadm kubectl
systemctl daemon-reload
systemctl restart kubelet
Master Node
# Cluster 마스터 노드 초기화
kubeadm init
# config 파일 업데이트
mkdir -p ~/.kube
cp -i /etc/kubernetes/admin.conf ~/.kube/config
chown $(id -u):$(id -u) ~/.kube/config
# kubeadm init 시 container 충돌오류시 해결방법
rm /etc/containerd/config.toml
systemctl restart containerd
kubeadm init 시 생성되는 토큰 값 기록해놓기!!
kubeadm join 192.168.45.200:6443 --token 93bz2r.rq0873828nx50bcy \
--discovery-token-ca-cert-hash sha256:
Worker Node
kubeadm join 192.168.45.200:6443 --token 93bz2r.rq0873828nx50bcy \
--discovery-token-ca-cert-hash sha256:
# Container 충돌 오류시
rm /etc/containerd/config.toml
systemctl restart containerd
클러스터 조인이 성공적으로 됐는지 확인
4. CNI 연결하기

kubectl get nodes

kubectl get pods -A

CNI 연결을 하기 전엔 이런상태인 것을 확인할 수 있습니다.
Weavenet 연결
kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml


정상가동되는걸 확인할 수 있습니다.
테스트 pod 배포하기
kubectl create deployment nginx --image=nginx --port=80 --replicas=2


nginx 웹서버가 정상적으로 작동중인 것을 확인할 수 있습니다.
글을 마치며
쿠버네티스 설치과정에서 CNI 연결 과정이 가장 힘들었는데
coreos
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
flannel
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
처음 이 두개의 CNI로 연결을 시도해봤는데 정상작동하지 않았다. 대충 로그를 확인해 봤을 때 에러 원인은
cidr 블록을 지정해주지 않아서 그렇다는데
kubeadm init --pod-network-cidr=10.244.0.0/16
init 할 때 cidr 블록을 지정해주면 해결되긴 했지만, 파드가 정상적으로 배포되지는 않는 에러가 있었다
대략 세달전의 기억이라 가물가물하지만 기회가 된다면 다시한번 시도해보려고 한다.
'kubernetes' 카테고리의 다른 글
| Kubernetes 컴포넌트 (0) | 2023.08.14 |
|---|---|
| kubernetes 동작원리 (1) | 2023.08.13 |
| kubernetes 연습장 (0) | 2023.08.13 |
| EKS 클러스터 배포하기 (Terraform) (0) | 2023.08.11 |
| EKS 클러스터 배포하기 (eksctl 명령어) (0) | 2023.08.09 |