티스토리 뷰
- 쿠버네티스란 ?
쿠버네티스를 시작하기 전 컨테이너 구조에 대해 간략히 언급하자면,
호스트 운영체제 위에 도커 그 위에 컨테이너(클러스터 구성된) 로 구분하여
해당 컨테이너에 앱을 올리는 방식으로 VM을 통한 구조보다 성능이 좋다.
그 중 쿠버네티스는 컨테이너 오케스트레이션 중 하나로, 각 컨테이너의 관리를 편하게 해주는 시스템이다.
기존의 도커를 통한 컨테이너(클러스터 구성된) 를 관리 할 경우 수정, 배포시 각 컨테이너별로 다시 배포해야 하는 단 점이 있는데,
컨테이너 오케스트레이션을 사용하여 하나의 컨테이너 설정을 이미지화 하여 다른 컨테이너에도 똑같이 적용 할 수 있 는 시스템이로서, 이 중 하나가 쿠버네티스(kubernetes, 별칭: k8s)다.
쿠버네티스는 선언적API라 하며, 이는 컨테이너가 어떤 상태인지 원하는지 쿠버네티스에 설정 할 경우
지속적으로 모니터링이 이뤄지며 자동화 한다.
* 도커 세팅
일단 도커 데스크톱을 다운하여 cmd창에 docker version으로 설치확인,
도커 데스크톱의 setting에서 Enable Kubernetes 체크 후 재시작, cmd창 kubectl version 으로 확인
* 클라우드 서비스 셋팅
- 구글 쿠버네티스 엔진
- 아마존 쿠버네티스 일래스틱 컨테이너 서비스
- 애저 쿠버네티스 서비스
- 구글 클라우드 서비스 시작
구글 클라우드 서비스의 compute Engine에 VM인스턴스를 생성한다. ( Ubuntu로 시작 )
- 마스터 노드 SSH 설정
마스터 노드인 1번 서버에 다른 서버의 원격접속을 위한 SSH를 설정 ( 사용툴인 ansible이 SSH로 접근 됨 )
SSH 생성 : 'ssh-keygen -t rsa' : -t rsa는 rsa 암호화방식
- ssh경로에 id_rsa, id_rsa.pub가 생성됨
- SSH 키 배포
마스터 노드에 생성한 SSH의 키를 복사하여 (명령어 : cat 경로명/파일명 ex. cat .ssh/id_rsa.pub)
구글 클라우드 서비스의 메타데이터 -> SSH 탭에 추가
자체 서버일 경우 각 서버에 'ssh-copy-id 계정이름@서버IP' 명령어를 통해 각각 배포 하거나,
환경에 다라서는 'vi .ssh/authorized_keys' 등으로 직접 설정
마스터 노드에서 'ssh 서브노드명 hostname' 으로 접속 확인
- kubespray 설치
우선, 파이썬 패키지 매니저 설치 'sudo apt -y install python-pip' 후 pip --version으로 확인
깃허브에서 kubespray를 클론 'git clone 주소' (주소 : https://github.com/kubernetes-sigs/kubespray.git )
그 후 kubespray 로 들어가 원하는 버전을 체크아웃 'git checkout -b 버전'
브런치 목록 보기 명령어 : 'git branch -al'
현재 브런치 확인 명령어 : 'git status'
해당 경로안의 requirements.txt 파일안에 패키지 버전정보가 들어있다.
패키지 버전이 맞지않으면 requirements.txt를 수정해가며 작업
pip 버전이 맞지 않으면 'python -m pip install --upgrade pip' 또는 'pip install -U setuptools'로 업데이트
그후 ansible --version을 통해 앤서블 설치확인
- tree 설치
sudo apt install tree : 트리구조 명령어 설치
2. 기타
- http://slack.k8s.io ( k8s 슬랙 커뮤니티 )
- http://www.facebook.com/groups/k8skr ( k8s 페이스북 커뮤니티 )
- https://labs.play-with-k8s.com ( 웹기반 쿠버네티스 실습 )