
☸ Kubernetes는 컨테이너화된 애플리케이션을 쉽게 관리하기 위한 오픈소스 플랫폼이다.

-쿠버네티스 (Kubernetes, K8s)
-오픈 소스 (Open Source) 시스템
-컨테이너 오케스트레이션 (Container Orchestration) 이라고 불린다.
-과거 구글에 의해 설계되었고 현재 리눅스 재단에 의해 관리.
*설치에 필요한 우분투 22.04 LTS
-VMware사용 설치 진행. 3대 필요
우분투 설치할 때

-시스템 사양 / network : NAT
-hostname 설정 master, node1, node2
-hosts 에 모두 등록
-SSH접속 / 스냅샷 꼭
-우분투 설치시 패스워드는 1234로 통일 사용자 생성시 ubuntu/1234
-설치후 apt-get -y update 및 apt-get insall -y openssh-server
*설치 과정 기술문서
https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#install-using-native-package-management
1) 저장소 설정
-업데이트
apt-get update
apt-get install ca-certificates curl gnupg lsb-release
GPG key 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
-저장소 등록
저장소 설정 ( apt 업데이트 )
- apt-get install -y ca-certificates curl gnupg lsb-release
- Docker 저장소를 APT (Advanced Package Tool)의 소스 리스트에 추가하는 작업을 수행 ( echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null )
2) 도커엔진 설치
#apt-get update
#apt-get install -y docker-ce docker-ce-cli containerd.io
#docker version 으로 설치 확인 및 버전 확인
도커 서비스 등록
systemctl enable docker
systemctl start docker
도커 엔진 설치
- apt-get update
- apt-get install -y docker-ce docker-ce-cli containerd.io
- docker version으로 확인 ( 26.1.1 )
도커 서비스 등록
- systemctl start docker
- systemctl enable docker
3) 쿠버네티스 설치
iptables 설정
방화벽 끄기
ufw disable
서로 통신되기 위한 iptable 설정
- cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF- cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF- sysctl --system 으로 확인
방화벽 끄기
- ufw disable
4) kubelet, kubeadm, kubectl 설치
#apt-get update
#apt-get install -y apt-transport-https ca-certificates curl
구글 퍼블릭 키 다운로드
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg
⇒ 에러 안뜨고 무소식이면 됨
gpg 및 리스트 내용 추가
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list
#apt-get update
#apt-get install -y kubelet kubeadm kubectl
#apt-mark hold kubelet kubeadm kubectl
⇒ 노드 1, 2 도 여기까지 진행.
kubelet, kubeadm, kubectl 설치 ( 업데이트 및 ca 패키지 다운로드 )
- apt-get update
- apt-get install -y apt-transport-https ca-certificates curl
- Kubernetes의 공식 GPG 키를 다운로드하여 APT 패키지 관리자에 등록 ( curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg )- Kubernetes 저장소를 APT (Advanced Package Tool)의 소스 리스트에 추가하는 작업을 수행 ( echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list )- sudo apt-get update
sudo apt-get install -y kubectl kubeadm kubelet
sudo apt-mark hold kubectl kubeadm kubelet
-systemd 와 cgroup 설정 맞추기
#mkdir /etc/docker 디렉토리 생성 있으면 삭제 하고 생성해도되고, 그냥 사용 해도됨.
#systemctl daemon-reload
#systemctl restart kubelet
+++여기 까지가 3대 모두 설정 하기 +++
systemd 와 cgroup 설정 맞추기
- ls /etc/docker/ 아무것도 없는 것 확인 후 들어가서 json파일 생성
- systemctl daemon-reload
- systemctl restart kubelet ( node1과 node2는 여기까지 설정 )
5) 컨트롤 패널 구성( master에 만 )
-여러 사용자가 쿠버네티스 명령어 사용 할 수 있도록 설정 ⇒ 생략해도됨.
컨트롤 패널 구성( master에 만)
- rm /etc/containerd/config.toml
- systemctl restart containerd
- kubeadm init ( 설치되는 것 확인 후 토큰 메모 )
- 쿠버 토큰 ( kubeadm join 192.168.10.100:6443 --token gelvqt.c8xqmcehj2smr31x \
--discovery-token-ca-cert-hash sha256:f44a58b6fe322fa1c5a6fb8bf978d423830838e4b2552fb9e2dfd356eccb49c0 , 노드와 연결 역할 )
여러 사용자가 쿠버네티스 명령어 사용 할 수 있도록 설정
- mkdir -p $HOME/.kube
- cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
- chown (id -g) $HOME/.kube/config
6) pod network 애드온 ( master에 만 )
kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
kubeadm join 192.168.10.100:6443 --token hqs9oc.mgkdx9yt28lmpmek \
--discovery-token-ca-cert-hash sha256:8d804bc9714b4b720004f5f50124f0eab9ebcd461292be7566b15a4e392e7c50
pod network 애드온 ( master에 만)
- kubectl을 사용하여 웨이브(Weave)의 데몬셋(daemonset)을 클러스터에 배포하는 작업을 수행, 이를 통해 웨이브 네트워크를 쿠버네티스 클러스터에 설치하고 구성 ( kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml )
- kubectl get pods --all-namespaces
7) worker node 구성( node1, node2 )
root@node1:~# kubeadm reset
node1 / node2 에서
/etc/containerd 로 가서 파일 config.toml 파일 삭제
systemctl restart containerd
토큰 다시 붙여넣기
마스터에서 kubectl get pods
root@master:~# service kubelet restart
쿠버 토큰을 이용해서 연결 ( node1, node2 )
- /etc/containerd 에서 config.toml 삭제 후 systemctl restart containerd
- 복사한 쿠버 토큰 입력 ( kubeadm join 192.168.10.100:6443 --token gelvqt.c8xqmcehj2smr31x \
--discovery-token-ca-cert-hash sha256:f44a58b6fe322fa1c5a6fb8bf978d423830838e4b2552fb9e2dfd356eccb49c0 )- master에서 kubectl get pods와 kubectl get nodes 확인
-k8sNetwork (포트 포워딩)

-hosts 에 모두 등록
CPU-2, RAM-4G, HDD-40G
-CentOS8 설치 / GUI / KDUMP 해제, 네트워크 켜기


#sysctl --system


=========== 복제 ============
-호스트 이름 변경 / -IP 변경 / -3대 핑 테스트 및 외부 핑 테스트
⇒ 드라이브에 있는 이미지 사용시 복제하고 여기부터 진행 하면됨.
*마스터 토큰을 노드에 등록 ( 토큰의 유효기간 24시간 )
⇒24시간이 지나면 토큰을 새로 발급 받아서 등록
*토큰을 새로 발급 받기
토큰 발급 받아서 등록
- kubeadm reset ( 마스터와 노드1, 2 )
- #kubeadm init --apiserver-advertise-address=192.168.10.100 --pod-network-cidr=172.16.0.0/16 ( 마스터에서 토큰 발급 )
- #mkdir -p $HOME/.kube
- #cp -i /etc/kubernetes/admin.conf $HOME/.kube/config ⇒ y 엔터
- #chown (id -g) $HOME/.kube/config
- #kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
- #kubectl get nodes ( 마스터에서 )
*노드는
*마스터에서
마스터와 노드 연결 확인
- 토큰 복사 후 노드1, 2에 붙여넣기 ( kubeadm join 192.168.10.100:6443 --token ckdqen.cq1mv48he82k2gyc \
--discovery-token-ca-cert-hash sha256:0ee88af9a32be5a80ef5a2136db6639ad373036ee2b43a8d3a5cf3ac931f3eb6 )
- #kubectl get nodes ( 마스터에서 )