이 블로그는 이 트윗이 있었기에 가능했습니다!
훌륭한 #Couchbase #쿠버네티스 해킹 세션 @saturnism많은 것을 배웠고, 멋진 블로그를 기대합니다.
- 아룬 굽타 (@arungupta) 2016년 2월 27일
Kubernetes는 Google의 Docker 컨테이너용 오픈 소스 오케스트레이션 시스템입니다. 여러 호스트에서 컨테이너화된 애플리케이션을 관리하고 애플리케이션의 배포, 유지 관리 및 확장을 위한 기본 메커니즘을 제공합니다. 사용자는 원하는 상태에 대한 선언적 기본 요소를 제공할 수 있습니다(예: "Couchbase 서버 5개 필요"). 그러면 자동 재시작, 스케줄 재조정, 컨테이너 복제 등의 Kubernetes 자가 복구 메커니즘이 이 상태를 충족하도록 보장합니다. 사용자는 상태를 정의하기만 하면 Kubernetes가 클러스터에서 항상 상태를 충족하도록 보장합니다. 쿠버네티스의 주요 개념 에서 Kubernetes의 핵심 개념을 설명합니다. 여러 파트로 구성된 이 블로그 시리즈에서는 다음을 실행하는 방법을 보여줍니다. 카우치베이스 를 여러 가지 방법으로 살펴봅니다. 첫 번째 파트는 Vagrant를 사용한 간단한 설정으로 시작합니다.
쿠버네티스 시작하기
Kubernetes를 실행하는 방법은 여러 가지가 있지만 가장 간단한(반드시 예측 가능한 것은 아닙니다;) 방법은 Vagrant를 사용하여 실행하는 것입니다.
- 최신 다운로드 쿠버네티스 릴리즈, 1.1.8로 업데이트하고 아카이브를 확장하세요.
- 다음 이름으로 Kubernetes 클러스터를 시작합니다:
1234cd 쿠버네티스내보내기 쿠버네티스_프로바이더=vagrant./클러스터/kube-up.sh
출력은 다음과 같이 표시됩니다:
12345678910111213141516171819202122232425쿠버네티스-1.1.8 > ./쿠버네티스/클러스터/kube-up.sh... 시작 클러스터 사용 공급자: vagrant... 호출 확인-전제 조건... 호출 kube-up가져오기 machine 'master' up 와 함께 'virtualbox' 공급자...가져오기 machine 'minion-1' up 와 함께 'virtualbox' 공급자...==> 마스터: 가져오기 base 상자 'kube-fedora21'.... . .유효성 검사 출력:이름 상태 메시지 오류컨트롤러-관리자 건강 확인 nil스케줄러 건강 확인 niletcd-0 건강 {"health": "true"} niletcd-1 건강 {"health": "true"} nil클러스터 유효성 검사 성공완료, 목록 클러스터 서비스:Kubernetes 마스터 는 실행 중 에서 https://10.245.1.2힙스터 는 실행 중 에서 https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/heapsterKubeDNS 는 실행 중 에서 https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/kube-dnsKubeUI 는 실행 중 에서 https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/kube-uiGrafana 는 실행 중 에서 https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/monitoring-grafanaInfluxDB 는 실행 중 에서 https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/monitoring-influxdb
쿠버네티스 클러스터에서 카우치베이스 실행하기
쿠버네티스에서 도커 컨테이너를 실행하는 가장 쉬운 방법은 kubectl 실행
명령을 사용합니다. 명령 사용법은 다음과 같습니다:
1 |
kubectl 실행 이름 --이미지=이미지 [--환경="키=값"] [--포트=포트] [--복제본=복제본] [--건조-실행=bool] [--재정의=인라인-json] [플래그] |
이 명령은 복제된 특정 이미지를 실행합니다. 이미지 복제는 생성된 컨테이너를 관리할 복제 컨트롤러를 생성하여 처리합니다. 이 명령을 실행하기 위한 전체 옵션 목록은 다음을 통해 확인할 수 있습니다:
1 |
./클러스터/kubectl.sh 실행 --도움말 |
카우치베이스 도커 컨테이너 에서 다양한 Couchbase용 Docker 컨테이너에 대해 설명합니다. 이 블로그에서는 아룽업타/카우치베이스
이미지가 미리 구성되어 있습니다.
1 |
./클러스터/kubectl.sh 실행 카우치베이스 --이미지=arungupta/카우치베이스 |
출력 결과가 표시됩니다:
1 |
복제 컨트롤러 "couchbase" 생성 |
출력에서 복제 컨트롤러가 생성되었음을 확인할 수 있습니다. 확인해 보겠습니다:
1 2 3 |
./쿠버네티스/클러스터/kubectl.sh get rc 컨트롤러 컨테이너(S) 이미지(S) 셀렉터 복제 AGE 카우치베이스 카우치베이스 arungupta/카우치베이스 실행=카우치베이스 1 17s |
이제 포드를 확인합니다:
1 2 3 |
./쿠버네티스/클러스터/kubectl.sh get po 이름 READY 상태 다시 시작 AGE 카우치베이스-tzdhl 0/1 보류 중 0 36s |
파드의 상태를 확인해 보겠습니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
./쿠버네티스/클러스터/kubectl.sh 설명 pod 카우치베이스-tzdhl 이름: 카우치베이스-tzdhl 네임스페이스: 기본값 이미지(s): arungupta/카우치베이스 노드: 10.245.1.4/10.245.1.4 시작 시간: 금, 26 2월 2016 18:05:10 -0800 레이블: 실행=카우치베이스 상태: 실행 중 이유: 메시지: IP: 10.246.67.2 복제 컨트롤러: 카우치베이스 (1/1 복제본 생성) 컨테이너: 카우치베이스: 컨테이너 ID: 도커://56dddb66bf60a590e588b972d5cae997ec96149066a9fb8075548c982eb14961 이미지: arungupta/카우치베이스 이미지 ID: 도커://080e2e96b3fc22964f3dec079713cdf314e15942d6eb135395134d629e965062 QoS 계층: cpu: 버스터블 요청: cpu: 100m 상태: 실행 중 시작됨: 금, 26 2월 2016 18:05:56 -0800 준비: True 다시 시작 Count: 0 환경 변수: 조건: 유형 상태 준비 True 볼륨: 기본값-토큰-clfeb: 유형: 비밀 (a 비밀 그 should 채우기 이 볼륨) 비밀 이름: 기본값-토큰-clfeb 이벤트: FirstSeen LastSeen Count 에서 서브객체 경로 이유 메시지 ───────── ──────── ───── ──── ───────────── ────── ─────── 1m 1m 1 {스케줄러 } 예약됨 성공적 할당 카우치베이스-tzdhl 에 10.245.1.4 1m 1m 1 {kubelet 10.245.1.4} 암시적으로 필수 컨테이너 POD 당기기 당기기 이미지 "gcr.io/google_containers/pause:0.8.0" 59s 59s 1 {kubelet 10.245.1.4} 암시적으로 필수 컨테이너 POD 생성됨 생성됨 와 함께 도커 id 2dac5f81f4c2 59s 59s 1 {kubelet 10.245.1.4} 사양.컨테이너{카우치베이스} 당기기 당기기 이미지 "arungupta/couchbase" 59s 59s 1 {kubelet 10.245.1.4} 암시적으로 필수 컨테이너 POD 시작됨 시작됨 와 함께 도커 id 2dac5f81f4c2 59s 59s 1 {kubelet 10.245.1.4} 암시적으로 필수 컨테이너 POD 당겨짐 성공적 당겨짐 이미지 "gcr.io/google_containers/pause:0.8.0" 19s 19s 1 {kubelet 10.245.1.4} 사양.컨테이너{카우치베이스} 당겨짐 성공적 당겨짐 이미지 "arungupta/couchbase" 18s 18s 1 {kubelet 10.245.1.4} 사양.컨테이너{카우치베이스} 생성됨 생성됨 와 함께 도커 id 56dddb66bf60 18s 18s 1 {kubelet 10.245.1.4} 사양.컨테이너{카우치베이스} 시작됨 시작됨 와 함께 도커 id 56dddb66bf60 |
출력의 다섯 번째 줄에 노드의 IP가 10.245.1.4라고 나와 있습니다. 이것은 나중에 웹 콘솔에 액세스하는 데 사용됩니다. 이 출력의 마지막 줄은 이제 파드가 준비되었음을 보여줍니다. 파드의 상태를 다시 확인하면 다음과 같이 표시됩니다:
1 2 3 |
./쿠버네티스/클러스터/kubectl.sh get po 이름 READY 상태 다시 시작 AGE 카우치베이스-tzdhl 1/1 실행 중 0 2m |
쿠버네티스 클러스터의 카우치베이스 웹 콘솔
이제 카우치베이스 컨테이너가 쿠버네티스 클러스터에서 실행 중이므로, 이제 쿠버네티스 클러스터에서 웹 콘솔. 각 파드에는 고유한 IP 주소가 할당되지만 이 주소는 클러스터 내에서만 액세스할 수 있습니다. 이 주소는 kubectl 노출
명령을 실행한다. 이 명령은 리플리케이션 컨트롤러, 서비스 또는 파드를 가져와서 새 쿠버네티스 서비스로 노출합니다. 이 명령어를 사용하면 됩니다:
1 2 |
./클러스터/kubectl.sh 노출 rc 카우치베이스 --대상-포트=8091 --포트=8091 --외부-IP=10.245.1.4 서비스 "couchbase" 노출 |
이 명령에서
--대상-포트
는 서비스가 트래픽을 전달해야 하는 컨테이너의 포트 이름 또는 번호입니다.--port
는 서비스가 제공되어야 하는 포트입니다.--external-ip
는 서비스에 설정할 외부 IP 주소입니다. 이 IP 주소는kubectl 설명 파드
명령어를 사용하세요.
이제 http://10.245.1.4:8091 에서 Couchbase 웹 콘솔에 액세스할 수 있으며 다음과 같습니다:
비밀번호 자격 증명을 다음과 같이 입력합니다. 관리자
/비밀번호
.
짜잔!
다음 주소로 문의하세요. 스택오버플로우 또는 카우치베이스 포럼. 에서 팔로우할 수도 있습니다. @couchbasedev 그리고 @couchbase.