1. 쿠버네티스 설치

weekbelt·2021년 4월 27일
0

k8s

목록 보기
1/1

쿠버네티스 설치 전에 개발환경은 Microsoft사의 Azure 클라우드의 서버 인프라에서 쿠버네티스를 설치하겠습니다. master, worker1, worker2, worker3 총 4개의 가상머신으로 클러스터를 구축하겠습니다.

쿠버네티스의 설치 방법은 여러가지가 있는데 쿠버네티스가 제공하는 kubeadm이라는 관리도구를 이용해서 설치해보겠습니다.

1. 패키지 관리 명령어 도구 설치

apt-get(Advanced Packaging Tool)은 우분투(Ubuntu)를 포함안 데비안(Debian)계열의 리눅스에서 쓰이는 패키지 관리 명령어 도구입니다. 쿠버네티스를 설치하기위해 필요한 명령어 도구 입니다.

apt-get update

2. 도커 설치

아래 명령어를 입력하여 도커를 설치합니다.

apt-get install -y docker docker.io apt-transport-https ca-certificates curl openssh-client openssh-server traceroute gnupg-agent software-properties-common python3-pip

3. /etc/docker/daemon.json 수정

/etc/docker디렉터리에 daemon.json을 생성하여 아래와 같이 설정한다.

{
  "exec-opts": ["native.cgroupdriver=systemd"]
}
systemctl enable docker

4. 쿠버네티스 저장소 추가

쿠버네티스를 설치할 모든 노드에 다음 명령어를 차례대로 입력해 쿠버네티스 저장소를 추가한다.

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

5. kubeadm 설치

모든 노드에서 쿠버네티스에 필요한 패지키를 내려받습니다. 다음과 같이 별도의 버전을 명시하지 않으면 최신 버전의 쿠버네티스가 설치됩니다.

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

6. 쿠버네티스 클러스터 초기화

마스터 노드로 사용할 호스트에서 다음 명령어로 클러스터를 초기화합니다.

kubeadm init --apiserver-advertise-address 10.1.7.8 --pod-network-cidr=192.168.70.0/24
  • --apiserver-advertise-address: 옵션의 인자에 다른 노드가 마스터에게 접근할 수 있는 IP 주소를 환경에 맞게 입력해줍니다. 위의 경우는 master 노드의 역할을 하는 호스트에 접근할 수 있는 IP 주소가 10.1.7.8인 경우입니다.
  • --pod-network-cidr: 쿠버네티스에서 사용할 컨테이너의 네트워크 대역이며, 각 서버의 네트워크 대역과 중복되지 않게 적절히 선택합니다.

초기화가 완료되면 다음과 같은 출력 결과를 확인할 수 있습니다.

To start using your cluster, you need to run the following as a regular user:

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 10.1.7.8:6443 --token ksi2qe.u1zfnll1cspqv4dc \
	--discovery-token-ca-cert-hash sha256:876f6b4970cbcae2365fa5d9ef51ab505a6d65b9749172d90c42c10c5742e87a

중간에 출력된 3줄의 명령어를 복사해 마스터 노드에서 실행합니다. 맨 마지막에 출력된 명령어인 kubeadm join ...은 마스터를 제외한 노드인 워커 노드들(worker1, worker2, worker3)에서 실행합니다.

만약 root user라면 아래 명령어로 대체할 수 있습니다.

export KUBECONFIG=/etc/kubernetes/admin.conf

7. 컨테이너 네트워크 애드온 설치

쿠버네티스의 컨테이너간 통신을 위해 calico라는 네트워크 플러그인을 설치합니다.

kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml

설치가 정상적으로 완료 됐는지 확인하기 위해, 다음 명령어로 쿠버네티스 핵심 컴포넌트들의 실행 목록을 확인합니다. 전부 Running이라는 문구가 출력됐다면 정상적으로 설치가 완료된 것입니다.

calico-kube-controllers-7f6768fdfb-w4wsq   1/1     Running   0          41s
calico-node-4vbt2                          0/1     Running   0          42s
calico-node-cl9fm                          0/1     Running   0          42s
calico-node-ll6bw                          0/1     Running   0          42s
calico-node-trxhf                          0/1     Running   0          42s

7. MetalLB설치

MetalLB란

Kubernetes는 bare metal 클러스터를위한 네트워크로드 밸런서 (LoadBalancer 유형의 서비스) 구현을 제공하지 않습니다.

bare metal 이란 가상머신이 host의 OS내에 설치된다기 보다 하드웨어에 직접 설치되는 컴퓨터 시스템이나 네트워크를 말한다.

kubectl create -f https://raw.githubusercontent.com/cilium/cilium/1.9.5/install/kubernetes/quick-install.yaml
kubectl edit configmap -n kube-system kube-proxy
kubectl edit configmap -n kube-system kube-proxy
#설정파일이 열리니, 특정 부분을 찾아서 아래와 같이 수정
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: "ipvs"
ipvs:
    strictARP: true

8. 클러스터 세팅

root@posicube-dev-k8s-master:~# cat /etc/kubernetes/admin.conf
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data:
...

위의 내용을 로컬 머신의 ~/.kube/에 yml로 저장
zsh의 alias에 추가
vi ~/.zshrc
alias aznode="export KUBECONFIG=/Users/jihongmin/.kube/config.yml"

적용
source ~/.zshrc

클러스터 변경
aznode

9. k9설치

curl -sL https://github.com/derailed/k9s/releases/download/v0.24.7/k9s_Linux_x86_64.tar.gz | sudo tar xfz - -C /usr/local/bin k9s

참고자료: https://blog.outsider.ne.kr/346
참고자료: https://github.com/posicube-services/backoffice-k8s-playground

profile
백엔드 개발자 입니다

0개의 댓글