kubeadm을 사용하여 고가용성 Kubernetes 클러스터를 설정하는 두 가지 접근 방식이 존재.

내부 클러스터 : 추가적 마스터 인프라 필요, etcd 구성과 플레인 노드가 같은 위치에 존재..

외부 etcd 클러스터 :  추가적 인프라가 필요,  수평적 노드구성과 etcd 가 분리되어 있어야 함.

클러스터는 Kubernetes 버전 1.11 이상을 실행해야 함. 

주의 : kubeadm을 사용하여 HA 클러스터를 설정하는 것은 여전히 실험적임.

즉, 클러스터 업그레이드 시 문제가 발생할때 두 방법 중 하나를 시도하고 피드백을 제공하는 것을 권고.

고 가용성 구성 기본 조건

HA구성을 위한 kubeadm의 최소 요구 사항 3대 물리서버.

kubeadm의 최소 요구 사항을 충족하는 3 대의 기계

클러스터의 모든 컴퓨터 간 전체 네트워크 연결 (공용 또는 개인 네트워크가 정상 임)

한 장치에서 시스템의 모든 노드로 SSH 액세스.

모든 컴퓨터에서 sudo 권한, 외부 etcd 클러스터에 대해서만 필요함.

etcd 회원을위한 3 대의 추가 기계.


SSH 설정

메인 장치에서 시스템의 다른 모든 노드에 액세스 할 수있는 ssh-agent를 활성화

# eval $(ssh-agent)

SSH ID를 세션에 추가.

# ssh-add ~/.ssh/path_to_private_key

노드 간 SSH를 사용하여 연결이 올바르게 작동하는지 체크

어떤 노드로 SSH 할 때 -A 플래그를 추가해야함

# ssh -A 10.0.0.7

모든 노드에서 sudo를 사용할 때 SSH 전달이 작동하도록 환경을 보존.

# sudo -E -s


SSH 에 대해서.

ssh-keygen 사용하기

아래와 같이 입력한다. -t  rsa는 rsa라는 암호화 방식으로 키를 생성한다는 의미다. 

$ ssh-keygen -t rsa
Generating public/private rsa key pair

ssh 확인 

ls -al ~/.ssh/

authorized_keys 파일은 없을수도 있다. 

각 파일에 대한 설명은 아래와 같다. 

id_rsaprivate key, 절대로 타인에게 노출되면 안된다.
id_rsa.pubpublic key, 접속하려는 리모트 머신의 authorized_keys에 입력한다.
authorized_keys리모트 머신의 .ssh 디렉토리 아래에 위치하면서 id_rsa.pub 키의 값을 저장한다. 자세한 내용은 다음 단락을 참조

.ssh 디렉토리는 매우 중요한 보안 정보가 담긴 디렉토리다. 따라서 퍼미션 설정을 꼭해야 하는데 아래와 같은 설정을 권장한다. 아래의 명령을 순차적으로 실행한다. 퍼미션에 대한 자세한 정보는 생활코딩 리눅스 수업을 참조한다. 

SSH 퍼미션 설정

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub  
chmod 644 ~/.ssh/authorized_keys
chmod 644 ~/.ssh/known_hosts

SSH Server의 authorized_keys 의 내용이 SSH Client의 id_rsa.pub 파일과 같아야 한다. 그래서 ssh 접속을 할 때 id_rsa 파일과 authorized_keys 파일의 내용을 비교 할 수 있다. 일반적으로 SCP를 사용한다

일반적으로 SCP를 사용한다. SCP는 파일을 전송하는 프로그램인데, 아래와 같은 형식을 갖는다.

scp $HOME/.ssh/id_rsa 리모트 머신의 아이디@리모트 머신의 호스트 주소:저장할 파일

위의 형식에 따라서 로컬 머신의 id_rsa.pub 파일을 리모트 머신의 홈디렉토리로 전송해보자. 아래는 SSH Client가 설치된 로컬 머신에서 실행하는 명령이다.


scp $HOME/.ssh/id_rsa.pub egoing@egoing.net:id_rsa.pub

이제 원격 머신에서 전송한 id_rsa.pub 파일을 authorized_keys 파일에 추가해보자. 아래의 명령에서 cat는 뒤에 따라오는 파일의 내용을 화면에 출력하는 것이고, >> 는 cat이 출력한 내용을 authorized_keys 파일에 추가하는 것이다. 내용을 교체하는 것이 아니라 추가하는 것이라는 점에 주의하자. 만약 리모트 머신으로 접속하는 여러개의 로컬 머신이 있다면 각각의 로컬 머신의 id_ras.pub 파일을 authorized_keys에 추가해주면 된다. 

cat $HOME/id_rsa.pub >> $HOME/.ssh/authorized_keys