쿠버네티스(k8s, Kubernetes, 큐브, kube)는 컨테이너화된 애플리케이션을 배포, 관리, 확장할 때 수반되는 다수의 수동 프로세스를 자동화하는 오픈 소스 컨테이너 오케스트레이션 플랫폼으로
작동 중인 쿠버네티스 배포 -> 클러스터
쿠버네티스는 컨테이너를 "포드(pod)"로 분류하고
포드는 그룹화된 컨테이너에 추상화 계층을 추가하므로 사용자가 워크로드를 예약하고 네트워킹 및 스토리지와 같은 필수 서비스를 컨테이너에 제공함
▶ 사용이미지 : Ubuntu 20.04.7z , vt-x 체크, hyper-V disable
master node 1개 : 메모리 4G : CPU 2/1 : nat 300G (single)
work node 2개 : 메모리 4G : CPU 2/1 : nat 200G (single)
id/password : user01/test1234
▶ ip 설정
master 192.168.2.10 [8.8.8.8/192.168.2.2]
work1 192.168.2.11 [8.8.8.8/192.168.2.2]
work2 192.168.2.12 [8.8.8.8/192.168.2.2]
hostnamectl set-hostname [master/work1/work2]
apt update apt install -y net-tools apt install -y curl ssh 확인 win10에서 ssh 접속 확인 superputty사용 |
master,work1,work2 설정 진행 |
network: version: 2 ethernets: ens33 dhcp4: no addresses: [192.168.2.xx/24] gateway4: 192.168.2.2 nameservers: addresses: [8.8.8.8,8.8.4.4] |
![]() |
nano /etc/hosts 192.168.2.10 master 192.168.2.11 work1 192.168.2.12 work2 |
![]() |
netplan apply hostname -i ping 확인 |
![]() |
▶ win10 에서 superputty 이용하여 ssh 접속
winscp 다운![]() |
|
superputty ssh접속 확인![]() |
|
![]() |
master, work1, work2 모두 접속 |
참고 : https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
kubeadm 설치하기
이 페이지에서는 kubeadm 툴박스 설치 방법을 보여준다. 이 설치 프로세스를 수행한 후 kubeadm으로 클러스터를 만드는 방법에 대한 자세한 내용은 kubeadm으로 클러스터 생성하기 페이지를 참고한다.
kubernetes.io
▶ superputty 이용, #에서 진행
▶ 모든 스왑 비활성화 진행 (모든 노드에서 진행)
swapoff -a sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab |
▶ 모든 노드에서 진행
1. Using Docker Repository (패키지 설치, Docker GPG Key추가, Docker Repository추가) sudo apt update --> rm -rf ...... sudo apt install -y ca-certificates curl gnupg lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg 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 sudo sed -i 's/^disabled_plugins \=/\#disabled_plugins \=/g' /etc/containerd/config.toml sudo systemctl restart containerd |
|
2. containerd 설치 sudo apt update sudo apt install -y containerd.io sudo systemctl status containerd |
![]() |
3. Containerd configuration for Kubernetes cat <<EOF | sudo tee -a /etc/containerd/config.toml [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] SystemdCgroup = true EOF sudo sed -i 's/^disabled_plugins \=/\#disabled_plugins \=/g' /etc/containerd/config.toml sudo systemctl restart containerd |
|
4. 소켓 생성 확인 ls /var/run/containerd/containerd.sock |
![]() |
▶ kubeadm, kubelet 및 kubectl 설치
모든 머신에 다음 패키지들을 설치
- kubeadm: 클러스터를 부트스트랩하는 명령, 클러스터를 초기화하고 관리하는 기능.
- kubelet: 클러스터의 모든 머신에서 실행되는 파드와 컨테이너 시작과 같은 작업을 수행하는 컴포넌트.
데몬으로 동작하며 컨테이너를 관리
- kubectl: 클러스터와 통신하기 위한 커맨드 라인 유틸리티. 클라이언트 전용 프로그램.
1. apt 패키지 색인을 업데이트하고, 쿠버네티스 apt 리포지터리를 사용하는 데 필요한 패키지를 설치. sudo mkdir /etc/apt/keyrings sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl 2. 구글 클라우드의 공개 사이닝 키를 다운로드 curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg 3. 쿠버네티스 apt 리포지터리를 추가 echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list 4. apt 패키지 색인을 업데이트하고, kubelet, kubeadm, kubectl을 설치하고 해당 버전을 고정 sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl ![]() 5. kubeadm 버전을 확인 --> kubeadm version ![]() |
▶ 넷필터 브릿지 설정 (모든 모드에서 진행)
modprobe br_netfilter echo 1 > /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables |
▶ 마스터 노드 초기화 --> kubeadm init
![]() |
|
kubeadm init | kubeadm config images pull |
![]() |
<생성된 키> kubeadm join 192.168.2.10:6443 --token np2wwl.4imw6mpdmvkvjl5u --discovery-token-ca-cert-hash sha256:40905e46cf8b28f61c59fbd9d88cfd530529ec7e7cc6cfc26c296ac4c943a773 kubeadm join 192.168.2.10:6443 --token KEY1 --discovery-token-ca-cert-hash sha256:KEY2 |
|
KEY1 kubeadm token list ![]() |
|
KEY2 openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' ![]() |
|
토큰 재발급하기: kubeadm token create --print-join-command![]() |
▶ 유저 설정
다음 명령을 실행하면 .kube/config 파일이 설정되면서 사용이 가능함. 이 실습은 `마스터 노드`에서만 진행.
mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config |
▶ work 노드 조인하기
본인의 콘솔에 출력된 토큰과 hash 값을 사용해 조인을 수행해야 함. 다음 명령은 `워커 노드`에서 실습을 진행.
![]() |
|
work1, work2 node에서 join 수행 | ![]() |
▶ pod 네트워크 배포
`마스터 노드`에서 다음 명령을 실행하면 앞서 구성한 유저 설정을 통해 클러스터에 cilium을 설치.
curl -LO https://github.com/cilium/cilium-cli/releases/latest/download/cilium-linux-amd64.tar.gz sudo tar xzvfC cilium-linux-amd64.tar.gz /usr/local/bin rm cilium-linux-amd64.tar.gz cilium install |
버전 확인 : cilium version --client ![]() |
![]() 설치 검증 : cilium status --wait |
![]() 모두 Not Ready --> Ready 상태로 변경됨 |
Use Cilium for NetworkPolicy
This page shows how to use Cilium for NetworkPolicy. For background on Cilium, read the Introduction to Cilium. Before you begin You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. I
kubernetes.io
참고 : https://docs.cilium.io/en/stable/gettingstarted/k8s-install-default/#validate-the-installation
Cilium Quick Installation — Cilium 1.14.3 documentation
Install Cilium into the EKS cluster. Note If you have to uninstall Cilium and later install it again, that could cause connectivity issues due to aws-node DaemonSet flushing Linux routing tables. The issues can be fixed by restarting all pods, alternativel
docs.cilium.io
'Kubernetes, k8s' 카테고리의 다른 글
Label 배포명세서 (0) | 2023.11.01 |
---|---|
Configure Liveness (0) | 2023.11.01 |
HOSTPATH (0) | 2023.10.31 |
Emtpy-dir ( volume ) (0) | 2023.10.30 |
요구 명세 (pod생성, 포트포워딩, 웹접속) (0) | 2023.10.30 |