개발/클라우드 엔지니어

우분투에 쿠버네티스 설치하기 4(TEST)

새벽감성개발자 2024. 1. 23. 09:00
반응형

5 쿠버네티스의 기본

5.1 아키텍처

※ 쿠버네티스는 마스터와 노드로 구성되고, 각각의 기능과 역할 그리고 구성 요소를 확인

※ 이전까지 docker까지 설치하고 명령어를 알아봤다. Kubernetes를 우분투 20.04 버전에 설치하는 순서를 알아본다.

sudo -i

apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF

apt-get update
apt-get install -y kubelet kubeadm kubectl

## 자동 업데이트 방지
apt-mark hold kubelet kubeadm kubectl


kubeadm init

 

  • 명령어 정리는 위와 같다. 캡처버전을 통해 어떻게 풀어 나가야 하는지 설명하겠다.

필요한 설치 파일을 등록하고, 설정한다
업데이트를 해주고

  • kubelet kubeadm kubectl을 설치해준다.

설치한 버전이 자동으로 업데이트 되지 않도록 고정해준다
각 설치 라이브러리의 버전을 확인한다

  • kubeadm init

정상적으로 설치했고, 파란색으로 작성되어진 명령어를 입력하면 된다

 

kubectl 명령어를 위한 설치를 진행

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

export KUBECONFIG=/etc/kubernetes/admin.conf

 

  • 해당 config파일이 어떻게 생겨먹은건지 몰라서, 검색을 열심히 했는데 이것까지 다루는 블로그가 없었다.

.kube/config

뭐 대충 이렇게 생긴 config

# 정상적으로 kubectl이 설치되었는지 확인한다

kubectl cluster-info

정상적으로 설치했다면 이것과 비슷한 창이 뜰 것이다

 

※ 쿠버네티스 자동완성 툴

apt-get install bash-completion

source /usr/share/bash-completion/bash_completion

kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null

echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -o default -F __start_kubectl k' >>~/.bashrc

# bash 다시 로드
exec bash

 

※ kubectl convert 플러그인 설치

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl-convert"

sudo install -o root -g root -m 0755 kubectl-convert /usr/local/bin/kubectl-convert

# 플러그인이 정상적으로 설치되었는지 확인
kubectl convert --help

--help 옵션이 정상적으로 작동하면 설치된 것이다.

참고링크

 

리눅스에 kubectl 설치 및 설정

시작하기 전에 클러스터의 마이너(minor) 버전 차이 내에 있는 kubectl 버전을 사용해야 한다. 예를 들어, v1.29 클라이언트는 v1.28, v1.29, v1.30의 컨트롤 플레인과 연동될 수 있다. 호환되는 최신 버전

kubernetes.io

 

★ kubectl에서 노드를 분리

 

 

MASTER NODE

kubectl get pods --all-namespaces

coredns 가 READY되지 않아서 설치를 진행해준다

오류!! 오류!! 아래의 코드를 참조해서 진행한다.

kubeadm reset
# kubeadm init을 초기화 해준다

swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab

modprobe br_netfilter
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

sudo reboot

# preserve_hostname: false 를 true로 값을 변경해준다
preserve_hostname: true

 

# default cidr로 설정한다.
kubeadm init --pod-network-cidr=10.244.0.0/16

mkdir -p ~/.kube
sudo cp /etc/kubernetes/admin.conf ~/.kube/config
sudo chmod 644 ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

kubectl get pods --all-namespaces

시간이 지나면서 STATUS가 RUNNING이 되었다.

위의 상태가 되면 MASTER NODE의 구성이 끝났다.

참고한 블로그 링크

더보기

 

 

 

반응형

'개발 > 클라우드 엔지니어' 카테고리의 다른 글

5. 쿠버네티스의 기본  (0) 2024.01.24
우분투에 쿠버네티스 설치하기 2  (1) 2024.01.18
우분투에 쿠버네티스 설치하기 1  (0) 2024.01.17
2 컨테이너의 이해  (0) 2024.01.16
1. 쿠버네티스란?  (1) 2024.01.15