개요
inflearn - 쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 의 학습내용을 복습하는 용도로 작성하고자 하며
내용이 추가 되거나 변경될 수 있음.
구간별 상태 확인 (2)
4. rocky linux 기본 설정
1) 패키지 업데이트 실행(강의와 동일한 실습 환경을 위해 업데이트는 실행하지 않음)
2) 타임존 설정 확인
- 스크립트
timedatectl set-timezone Asia/Seoul
- 중복 실행할 필요 없음
5. kubeadm 설치 전 사전작업
1) 방화벽 해제 확인
[root@k8s-master ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
- 스크립트
systemctl stop firewalld && systemctl disable firewalld
- 중복 실행할 필요 없음
2) 스왑(swap) 비활성화 확인
[root@k8s-master ~]# free
total used free shared buff/cache available
Mem: 6063276 1690380 434788 28020 3938108 4063728
Swap: 0 0 0
- Swap 에 할당된 자원이 없어야 함
[root@k8s-master ~]# cat /etc/fstab | grep swap
#/swapfile none swap defaults 0 0
- 주석 처리(#) 가 잘 되어 있는지 확인
[Kubernetes Docs]
6. 컨테이너 런타임 설치
6-1. 컨테이너 런타임 설치 전 사전작업
1) iptables 세팅
▷ 설정 세팅 확인
[root@k8s-master ~]# cat /etc/modules-load.d/k8s.conf
overlay
br_netfilter
[root@k8s-master ~]# cat /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
▷ 모듈 적재 확인
[root@k8s-master ~]# lsmod | grep overlay
overlay 139264 35
[root@k8s-master ~]# lsmod | grep br_netfilter
br_netfilter 24576 0
bridge 290816 1 br_netfilter
[Kubernetes Docs]
6-2. 컨테이너 런타임 (containerd 설치)
- 스크립트상 적용된 명령(중복실행 금지)
yum install -y containerd.io-1.6.21-3.1.el8
[Kubernetes Docs] : https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/#containerd
[Containerd Release] : https://github.com/containerd/containerd/blob/main/RELEASES.md#kubernetes-support
6-2-1. containerd 패키지 설치 (option2)
[Containerd Docs] : https://github.com/containerd/containerd/blob/main/docs/getting-started.md#option-2-from-apt-get-or-dnf
6-2-1-1. docker engine (containerd.io)만 설치
- 스크립트
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- docker repo 설정 확인
[root@k8s-master ~]# yum repolist enabled
- containerd 설치 확인
[root@k8s-master ~]# systemctl status containerd
[Docker Docs] : https://docs.docker.com/engine/install/centos/#install-using-the-repository
- 설치 가능한 버전의 containerd.io 리스트 확인
[root@k8s-master ~]# yum list containerd.io --showduplicates | sort -r
6-3. 컨테이너 런타임 (CRI 활성화)
▷ cri 활성화 설정 확인
- 스크립트
# default cgroupfs에서 systemd로 변경 (kubernetes default는 systemd)
containerd config default > /etc/containerd/config.toml
sed -i 's/ SystemdCgroup = false/ SystemdCgroup = true/' /etc/containerd/config.toml
- 실행 결과
[root@k8s-master ~]# cat /etc/containerd/config.toml
* false 일 경우 cgroupfs
▷ kubelet cgroup 확인 (configmap)
[root@k8s-master ~]# kubectl get -n kube-system cm kubelet-config -o yaml
[root@k8s-master ~]# cat /var/lib/kubelet/config.yaml
▷ kubelet cgroup 확인 (kubelet)
[root@k8s-master ~]# cat /var/lib/kubelet/config.yaml
* kubelet에서 cgroup 수정 필요시 적용 방법
// 아래 두 군데에서 cgroupDriver를 systemd 혹은 cgroupfs로 변경
[root@k8s-master ~]# vi /var/lib/kubelet/config.yaml
[root@k8s-master ~]# kubectl edit -n kube-system cm kubelet-config
[root@k8s-master ~]# systemctl restart kubelet
[Kubernetes Docs] : https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/#containerd
7. kubeadm 설치
▷ repo 설정 확인
[root@k8s-master ~]# yum repolist enabled
[Kubernetes Docs] : https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#kubeadm-kubelet-%EB%B0%8F-kubectl-%EC%84%A4%EC%B9%98
▷ SELinux 설정 확인
[root@k8s-master ~]# cat /etc/selinux/config
[root@k8s-master ~]# sestatus
▷ kubelet, kubeadm, kubectl 패키지 설치
- 스크립트
yum install -y kubelet-1.27.2-150500.1.1.x86_64 kubeadm-1.27.2-150500.1.1.x86_64 kubectl-1.27.2-150500.1.1.x86_64 --disableexcludes=kubernetes
- 실행 결과
#버전 보기
[root@k8s-master ~]# kubeadm version
[root@k8s-master ~]# kubectl version
#상태 보기
[root@k8s-master ~]# systemctl status kubelet
#설정 파일 위치
[root@k8s-master ~]# cat /var/lib/kubelet/config.yaml
#로그 조회
journalctl -u kubelet | tail -10
* stop 상태일 때는 아래 명령으로 올리기
[root@k8s-master ~]# systemctl restart kubelet
▷ 설치 가능한 버전의 kubeadm 리스트 확인
[root@k8s-master ~]# yum list --showduplicates kubeadm --disableexcludes=kubernetes
8. kubeadm으로 클러스터 생성
[Kubernetes Docs] : https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
8-1. 클러스터 초기화 (Pod Network 세팅)
▷ 클러스터 상태 확인
- vagrant 스크립트
kubeadm init --pod-network-cidr=20.96.0.0/12 --apiserver-advertise-address 192.168.56.30
- 실행 결과
# master node 상태확인
[root@k8s-master ~]# kubectl get node
# pod network cidr 설정 확인
[root@k8s-master ~]# kubectl cluster-info dump | grep -m 1 cluster-cidr
# apiserver advertise address 적용 확인
[root@k8s-master ~]# kubectl cluster-info
# kubernetes component pod 확인
[root@k8s-master ~]# kubectl get pods -n kube-system
[Kubernetes Docs] : https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#initializing-your-control-plane-node
* Cluster가 정상이 아닐 때는 아래 명령으로 reset후 다시 init 해주기.
* reset 실행 후 1분 정도 시간이 지난 후에 init을 해주기
[root@k8s-master ~]# kubeadm reset
[root@k8s-master ~]# kubeadm init --pod-network-cidr=20.96.0.0/12 --apiserver-advertise-address 192.168.56.30
8-2. kubectl 사용 설정
▷ 인증서 설정 확인
[root@k8s-master ~]# cat ~/.kube/config
[Kubernetes Docs] : https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#more-information
8-3. CNI Plugin 설치 (calico)
▷ calico pod 설치 및 pod network cidr 적용 확인
# Calico Pod 상태 확인
[root@k8s-master ~]# kubectl get -n calico-system pod
[root@k8s-master ~]# kubectl get -n calico-apiserver pod
# Calico에 pod network cidr 적용 확인
[root@k8s-master ~]# kubectl get installations.operator.tigera.io default -o yaml | grep cidr
[Calico Docs] : https://docs.tigera.io/calico/latest/getting-started/kubernetes/self-managed-onprem/onpremises#install-calico
* Calico 설치가 정상이 아닐 때 (Calico가 CrashLoopBackOff 상태고, coredns가 가 Pending 상태)
#Calico 삭제
kubectl delete -f https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/calico-3.26.4/calico.yaml
kubectl delete -f https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/calico-3.26.4/calico-custom.yaml
#Calico 재설치
[root@k8s-master ~]# kubectl create -f https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/calico-3.26.4/calico.yaml
[root@k8s-master ~]# kubectl create -f https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/calico-3.26.4/calico-custom.yaml
8-4. Master에 pod를 생성 할 수 있도록 설정
▷ Master Node 에 Taint 해제 확인
- 스크립트
kubectl taint nodes k8s-master node-role.kubernetes.io/control-plane-
- 실행결과
[root@k8s-master ~]# kubectl describe nodes | grep Taints
[Kubernetes Docs] : https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#control-plane-node-isolation
9. 쿠버네티스 편의 기능 설치
9-1. kubectl 자동완성 기능
▷ kubectl 기능 설정 확인
[root@k8s-master ~]# cat ~/.bashrc
[kubectl Cheat Sheet] : https://kubernetes.io/docs/reference/kubectl/cheatsheet/
9-2. Dashboard 설치
▷ dashboard 설치 확인
[root@k8s-master ~]# kubectl get pod -n kubernetes-dashboard
[kubernetes dashboard] : https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
[9-3] Metrics Server 설치
▷ metrics server 설치 확인
[root@k8s-master ~]# kubectl get pod -n kube-system | grep metrics
[root@k8s-master ~]# kubectl top pod -A
[kubernetes Metrics Server] : https://github.com/kubernetes-sigs/metrics-server
'프로그래밍 > kubernetes' 카테고리의 다른 글
[쿠버네티스 어나더 클래스 (지상편) - Sprint 1] - 구간별 상태 확인 (1/2) (0) | 2024.10.28 |
---|---|
[쿠버네티스 어나더 클래스 (지상편) - Sprint 1] - 쿠버네티스 빠르고 쉽게 설치하는 방법 (3) | 2024.10.26 |
[쿠버네티스 어나더 클래스 (지상편) - Sprint 1] - 컨테이너 한방정리(Container Orchestration과 Container 흐름) (0) | 2024.10.23 |
[쿠버네티스 어나더 클래스 (지상편) - Sprint 1] - 컨테이너 한방정리(Container 흐름) (2) | 2024.10.23 |
[ Vagrant ] vagrant up - Code E_INVALIDARG(0x80070057) 오류 해결 방법 (2) | 2024.10.23 |