kubeadm ubuntu 20.04 설치

심규환·2022년 1월 20일
0

Kubernetes

목록 보기
2/5
post-thumbnail

1. 환경 구성

OS : Ubuntu 20.04 desktop
구성 : master1, node1, node2
권장 메모리 : 최소 2GB
초기 설치 패키지 : openssh-server curl vim tree

2. Docker 설치

참고 : https://docs.docker.com/engine/install/ubuntu/

• Set up the repository

1) repository를 최신화 합니다.
#apt-get update

2) HTTPS로 repository를 접근하여 사용할 수 있도록 패키지를 다운 받습니다.
#apt-get install -y ca-certificates curl gnupg lsb-release

3) Docker 공식 GPG key를 등록합니다.
#curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

4) 안정적인 repository를 사용하기 위해 명령어로 설정
#echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu

• Install Docker Engine

이제 등록된 repository를 사용하여 Docker를 설치합니다.

1) 설치 가능한 패키지 리스트를 최신화, docker 설치

#apt-get update
#apt-get install -y docker-ce docker-ce-cli containerd.io

2) 설치 확인

#systemctl status docker

3. 쿠버네티스 설치

1) kubelet를 제대로 동작하려면 swap을 반드시 꺼야 한다.

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

2) 방화벽 끄기

#ufw disable

3) 필수 포트 확인

  • 쿠버네티스 컴포넌트 끼리 통신하기 위해 특정 포트가 반드시 열려 있어야 한다.
    #telnet 127.0.0.1 6443

4) 쿠버네티스의 kube-proxy는 iptables를 의존하기 때문에 리눅스의 iptables 프록시가 올바르게 작동하도록 아래와 같이 설정한다.

#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 sysctl --system

4. kubeadm, kubelet, kubectl 설치

참고 : https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

1) apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl
2) curl -s 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
3) apt-get update

4) apt-get -y install kubelet kubeadm kubectl
5) apt-mark hold kubelet kubeadm kubectl (패키지 변경 방지)
6) systemctl daemon-reload
7) systemctl restart kubelet
8) systemctl status kubelet 을 한 뒤, kubelet이 실행이 안된다면 아래와 같이 하기
§ sudo mkdir /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
§ systemctl enable docker
§ systemctl daemon-reload
§ systemctl restart docker
§ systemctl status kubelet
-> node에서 할 경우, kubelet이 실행 안될 수 있다. 여기까지 한 후, join을 하면 된다.

5. Master component init

1) #kubuadm init (kubeadm은 kubernetes 설치 도구)

-> kubernetes cluster 이미지를 가져와서 초기화 설치를 진행한다.

2) 설치 완료


중간에 적혀 있는 것처럼 아래에 그대로 진행하자. 그리고 제일 아래에는 join을 위한 토큰 키이기 때문에 기록하자.

#mkdir -p $HOME/.kube

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

3) install weave Net

쿠버네티스 위브넷은 쿠버네티스의 모든 네임스페이스의 네트워크 정책 어노테이션을 자동으로 모니터링한다.
#kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

설치 확인>
#kubectl get pod --all-namespaces

6. Worker node Join

1) node - master

아까 기록하라 했던 양식을 고대로 복붙하자.
#kubeadm join 10.100.0.104:6443 --token w15f2h.cvpjuo73ex0a1g9a --discovery-token-ca-cert-hash sha256:4f2277f0db4708acc70569ca9583485ec6459349625a87fc7dc2958ce4afc8d5

2) join 확인

7. kubectl 자동완성 기능 추가(Bash)

• Bash
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

profile
장생농씬가?

0개의 댓글