무지개곰
article thumbnail

멀티 노드 환경을 만드는 방법은 아래의 링크를 참조해 주세요.

 

[Kubernetes] Kubeadm을 통한 쿠버네티스 설치 (네트워크 설정, 오류 해결)

싱글노드 클러스터로 연습을 하려고 하였지만 멀티 노드 클러스터 환경을 구축해 보는 것도 경험이고 kubernetes의 다양한 기능을 직접 체험해 보기 위해서는 멀티 노드 클러스터를 활용하는 것이

rainbow96bear.tistory.com

master node에 work node를 연결하였지만 STATUS는 NotReady 상태입니다. CNI가 없어 발생하는 문제입니다. CNI를 설치하고 'deployment'를 사용해 보도록 하겠습니다.

목차

CNI 설치

pod 생성


CNI 설치

CNI란?

CNI는 kubernetes와 같은 컨테이너 오케스트레이션 시스템에서 네트워크 관련 자겁을 추상화하고 관리하는 인터페이스 및 표준입니다. 컨테이너화 된 애플리케이션의 네트워크 요구 사항을 처리하고 컨테이너 간 및 컨테이너와 호스트 간의 네트워크통신을 관리하는 역할을 합니다.

CNI 설치

Kubernetes를 설치하고 work node를 연결하면 아래와 같은 NotReady 상태입니다.

아래의 링크에 접속하면 Kubernetes에 필요한 기능을 제공하는 타사 프로젝트를 소개해줍니다.

https://kubernetes.io/docs/concepts/cluster-administration/addons/

 

Installing Addons

Note: This section links to third party projects that provide functionality required by Kubernetes. The Kubernetes project authors aren't responsible for these projects, which are listed alphabetically. To add a project to this list, read the content guide

kubernetes.io

그중에서 저는 Weave Net을 설치하였습니다. 아래는 Kubernetes에 나와있는 Weave Net의 간략한 설명입니다.

Docs에서 Weave Net을 선택하여 들어가게 되면 아래의 링크에 접속하게 됩니다.

https://www.weave.works/docs/net/latest/kubernetes/kube-addon/

 

Integrating Kubernetes via the Addon

The following topics are discussed: Installation Before installing Weave Net, you should make sure the following ports are not blocked by your firewall: TCP 6783 and UDP 6783/6784. For more details, see the FAQ. Weave Net can be installed onto your CNI-ena

www.weave.works

위의 링크에 접속하면 아래와 같은 설명이 나와있습니다.

CNI를 사용하기 위하여 아래의 명령어를 master node에서 실행합니다.

kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml

CNI를 설치하고 'kubectl get nodes'를 사용하면 STATUS가 Ready로 아래와 같이 변해있을 것입니다. 컴퓨터의 성능에 따라 속도 차이는 있으므로 천천히 기다려줍니다.


pod 생성

pod을 생성하는 방법은 다양하지만 'deployment'를 이용하여 생성하는 방법을 기록하겠습니다.

deploymetn란?

Kubernetes에서 컨테이너화된 애플리케이션을 관리하고 배포하기 위한 리소스 유형 중 하나입니다. deployment를 이용하여 버전관리, 자동 스케일링, 롤링 업데이트, 롤백 등을 할 수 있습니다.

deployment create

deployment를 생성하는 명령은 'kubectl create deployment [deployment 이름]'입니다.

사용되는 플래그 및 옵션은 다음과 같습니다.

--image : pod에 생성할 image를 지정합니다.

--replicas : 생성할 ReplicaSet에서 원하는 pod 복제본 수를 지정합니다.

--labels : deployment에 레이블을 추가합니다. pod 선택 및 식별에 사용됩니다.

--namespace : deployment를 생성할 네임스페이스를 지정합니다. 기본적으로 default 네임스페이스에 생성됩니다.

--dry-run : deployment를 생성하지 않고 YAML 정의를 확인할 수 있습니다.

label, namespace 등에 대하여 다음에 자세히 다루도록 하겠습니다.

저는 --image와 --replicas를 사용하여 3개의 pod를 생성하고 image는 nginx를 사용하였습니다.

kubectl create deployment rainbowbear --image=nginx:1.14 --replicas=3

명령어를 입력하고 위와 같이 생성이 완료되었다는 메시지가 나옵니다.

'kubectl get deployment'를 사용하여 deployment가 생성된 것을 확인할 수 있습니다.

'kubectl get pods'를 사용하여 확인한 결과 아래와 같이 3개의 pod이 생성된 것을 볼 수 있습니다. STATUS가 아직 ContainerCreating입니다.

잠시 후 다시 확인을 하였고 이번에는 '-o wide'를 추가하여 더 자세한 정보를 출력하였습니다.

위와 같이 모두 Runnig상태인 것을 확인하였습니다.

 

Running 상태에서 신호를 보내면 응답이 올까 하여 확인하였지만 'No route to host'가 확인되었습니다.

생성도 너무 느리고 작동도 제대로 되지 않아 자료를 찾아본 결과 아래의 질의에서 용량문제를 확인하였습니다.

https://discuss.kubernetes.io/t/the-connection-to-the-server-host-6443-was-refused-did-you-specify-the-right-host-or-port/552/15

Virtualbox에서 가상머신을 전부 지우고 Hard Disk를 40GB로 생성하였습니다.

Hard Disk 용량을 늘린 후 작업한 결과 아래와 같은 결과를 확인할 수 있었습니다.

profile

무지개곰

@무지개곰

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!