포스팅 목차
kubernetes cluster install tools
google kubernetes engine (GKE)
- create account on GKE
- add method of payment
- intall and use gcloud - Vendor-specific command to manage GKE
- https://console.cloud.google.com/getting-started
$ gcloud container clusters create xxxx
$ gcloud container clusters list
$ kubectl get nodes
$ gcloud container clusters delete xxxx
Minikube
- open source project within Github kubernetes
- download from google
- assumes VirtualBox already installed
- useful for developers
- uses Go binary localkube
- Also uses Docker
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64
$ chmod +x minikube
$ sudo mv minikube /usr/local/bin
$ minikube start
$ kubectl get nodes
kubespray
https://github.com/kubernetes-incubator/kubespray
kubernetes operations (kops)
- AWS 지원, GKE beta, VMWare alpha
kubeadm
- available since kubernetes 1.4.0
- works with ubuntu 16.04 and cent os 7.1
- main-step
- Run kubeadm init on the head node
- Create a network for IP-per-Pod criteria
- Run kubeadm join on worker or secondary master nodes - documentation
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/ - install A Pod Network
1) Only one pod network per per cluster
2) Several to choose from
- Calico : projectcalico.org
- Canal
- Flannel : github.com/coreos/flannel
- Kube-router : github.com/cloudnativelabs/kube-router
- Romana : github.com/romana/romana
- Weave Net : weave.works/oss/net
$ kubectl create -f https://git.io./weave-kube
3) Can become complicated to manage
4) Several add-ons available
kubectl 설치
- install or compile kubectl
- main binary for working with objects
- available for common distributions via dedicated repos
- configuration file : ~/.kube/config
- endpoints
- SSL keys
- contexts
설치시 고려 사항
- Which provider should I use?
Public or private cloud? - Which operating system should I use?
- Which networking solution should I use?
Do I need an overlay? - Where should I run my etcd cluster?
3 node 형태로 많이 쓰임 - Should I configure Highly-Available head nodes (master node)?
고가용성 3가지
- 서비스 자체 관점의 H/A
- master 노드의 H/A (api-server, controller, scheduler..)
- DB (ETCD) H/A
주요 구성 설정들
- single-node
- Single head node(master node), multiple workers
- Multiple head nodes with HA, multiple workers
- HA etcd, HA head nodes, multiple workers
- Federation(multi cloud) also provides higher availablility
kubernetes를 위한 systemd unit file
Hyperkube 사용한 설치
- 각 이미지를 실행하여 master를 설치 할 수 있다.
$ docker run --rm gcr.io/google_containers/hyperkube:v1.10.12 /hyperkube apiserver --help
$ docker run --rm gcr.io/google_containers/hyperkube:v1.10.12 /hyperkube scheduler --help
$ docker run --rm gcr.io/google_containers/hyperkube:v1.10.12 /hyperkube controller-manager --help
source 로 부터 직접 컴파일
- Configure Golang environment
- Clone source code
- May need to install other compiler and libraries
참조) CKA 대비 간단 실습
01. kubeadm 을 이용한 설치 및 세팅
02. kubernetes 클러스터 노드 확장 및 셋팅
03. 간단한 application 배포, yaml템플릿, 서비스 expose 해보기
04. deployment 의 CPU, Memory 제약
05. namespace 를 위한 resource limit 설정
06. 좀더 복잡한 deployment 배포해보기
07. 기본 Node 의 maintenance (유지보수)
08. API AND ACCESS
09. API 객체
10. Managing State with Deployments
11. Service Resource
12. Volumes and Data : ConfigMap 간단 테스트
13. PV 와 PVC 생성
14. ResourceQuota 사용 (PVC Count 와 Usage를 제한)
15. ingress 간단 실습
16. Scheduling - label 사용한 pod 할당
17. Scheduling - Taint를 이용한 pod 배포 관리
18. 로깅과 트러블슈팅 : 로그위치와 로그 출력 보기
19. 로깅과 트러블슈팅 : Metrics와 DashBoard
20. CRD (Custom Resource Definition)
21. helm
22. Security - TLS
23. Security - Authentication, Authorization, Admission
24. HA(High Availability) 구성 - master node