Kubernetes 설치

Kubernetes 설치에 대해서 다룬다. 설치를 위한 환경은 다음과 같다.

  • Master
    • Distribution: Ubuntu 18.04
    • IP: 192.168.96.14
    • hostname: kmaster
    • account: systemv
  • Worker Node
    • Distribution: CentOS 7
    • IP: 192.168.96.15
    • hostname: knode
    • account: systemv
  • CNI: Flannel

공통 설정 부분

sudo 권한 추가

Master, Node 두 서버 모두 Static IP 주소를 가지고 있어야 한다. 그리고 모두 일반 계정을 가지고 있어야 하며 이 일반 계정은 sudo 사용 권한을 가지고 있어야 한다.

CentOS 7 의 경우에 일반 계정을 생성한 후에 sudo 권한을 주고 싶다면 다음과 같이 하면 된다.

CentOS 7 에는 wheel 라고 하는 특수한 그룹이 존재하는데, sudo 설정에는 이 그룹에 한해 sudo 사용 권한을 부여하고 있어 일반계정 systemv 에 sudo 를 사용하게하고 싶다면 wheel 그룹에 포함시키면 된다.

Ubuntu 18.04 에서는 다음과 같이 일반계정을 sudo 권한을 줄 수 있다.

br_netfilter 모듈 로딩

br_netfilter 커널 모듈을 로딩해 줘야 한다. 기존에는 modprobe 설정으로 했지만 이제는 systemd 를 활용하면 되는데 ubuntu 18.04, CentOS 7 이 모두 이를 사용하고 있어서 적용 가능하다.

다음과 같이 모듈이름으로 conf 파일을 생성해 준다.

물론 이렇게 하면 시스템을 재부팅을 하더라도 자동으로 모듈이 로딩 된다.

커널 네트워크 파라메터

다음과 같이 커널 파라메터를 수정해 줘야 한다.

/etc/hosts 파일 편집

Master, Node 서버 양쪽 모두에 /etc/hosts 파일에 각 서버 정보를 다음과 같이 입력해준다.

swap off 설정

양쪽 모두 swap 을 off 해준다.

그리고 반드시 /etc/fstab 에서 swap 관련 마운트 설정을 주석처리 해준다.

CentOS 7 에서 설정

SELinux off

CentOS 7 에서 설정은 SELinux 설정이다. 다음과 같이 해준다.

firewalld 비활성화

이것은 systemctl 로 다음과 같이 가능하다.

패키지 설치

Ubuntu 에서 설정

패키지 설치

Docker 설치 및 설정

Kubernetes 는 Docker 를 기반으로하는 서비스다. 당연히 설치를 해줘야 하는데, 설치 관련 내용은 다음에 링크에서 각 배포판마다 잘 설명되어 있다.

한가지, Docker 설치를 위한 패키지 저장소는 명령어와 파일을 생성하는 방법 두가지가 있다.

ubuntu 18.04

ubuntu 에서는 add-apt-repository 명령어로 저장소 URL 을 추가 가능하다. 예를 들면 다음과 같다.

하지만 파일을 추가하는 방법으로 가능하다.

CentOS 7

CentOS 7 에서는 yum-config-manager 명령어를 이용해서 추가할 수 있다. 이 명령어는 yum-utils 패키지에 포함되어 있어 설치하면 사용할 수 있다.

다음과 같이 파일을 추가하는 방법도 있다.

Cgroup driver 설정

Kubernetes 를 설치할때에 Cgroup driver 를 systemd 로 추천하고 있다. 그래서 Kubernetes 만 systemd 로 드라이버를 교체하면 docker 와 통신이 되지 않는다. 이것을 위해서 Docker 에서도 드라이버를 systemd 로 교체해 준다.

다음과 같이 확인 가능하다.

Kubernetes 설치

Ubuntu 18.04

Ubuntu 18.04 에서는 다음과 같이 Kubernetes 패키지 저장소를 추가 한다.

다음과 같이 kubeadm, kubelet, kubectl 을 설치해 준다.

CentOS 7

CentOS 7 에서는 다음과 같이 Kubernetes 패키지 저장소를 추가 한다.

Master 설정

Master 를 만드는 것은 kubeadm 을 이용한다. 일반 계정으로 실행 한다.

Kubernetes Master 명령은 전부 일반계정으로 하도록 되어 있는데, 위 출력에 나온대로 설정을 해준다.

하지만 문제가 있다. 다음을 보자

kmaster 가 ‘NotReady’ 로 나오고 coredns 상태가 ‘Pending’ 이다. kubelet 로그를 보자.

NetworkPlugin 이 없어 오류가 나오는 것으로 이는 CNI(Container Network Interface) 를 필요로 한다.

Flannel 설치

CNI 중에 Flannel 을 이용하려고 한다. 다음과 같이 설치를 해준다.

설치를 하고 기다리면 다음과 같이 오류가 발생한다.

잠깐 시간을 주고 기달리면 모두 Running 상태가 된다. 만일 오랜 시간이 지나도 Running 이 아니라면 kubelet 을 재시작 해준다.

Kubelet cgroup driver 교체

혹시나 kubelet 의 cgroup driver 를 교체 해줘야 한다면 다음의 파일을 열어서 드라이버를 교체 해주면 된다.

Post a comment

You may use the following HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">