포스팅 목차
설치를 위한 준비 사항
kubeadm을 이용한 설치 기준
- virtualbox 이용시
- master : 3vCPU/4G memory/5G minimal OS
- worker : 1vCPU/2G memory/5G minimal OS
- gcp, aws 이용시
- spec : 2 vCPU/ 7.5G memory
- putty 이용 할 경우 .pem or .ppk file 요구
- YAML 파일 작성시 유의 사항
- TAB 사용 하면 안되고 white space로 사용
VM 기준 사전 세팅
1. DHCP IP를 static으로 설정
# vi /etc/network/interfaces
auto ens33
iface ens33 inet static
address 172.20.0.150
netmask 255.255.255.0
broadcast 172.20.0.255
gateway 172.20.0.2
dns-nameservers 172.20.0.2
2. Name resolution 설정
# vi /etc/hosts에 등록
172.20.0.150 k8smaster
172.20.0.151 worker1
3.swap disable
cat /etc/fstab
4. sudo 설정
# vi /etc/sudoers
%sudo ALL=(ALL:ALL) NOPASSWD: ALL
쿠버네티스 클러스터 설치
docker 설치 및 kubernetes repo 설정
root@k8smaster1:~# apt-get update && apt-get upgrade -y
# docker 설치 (참고, docker ce - edge:매월 업데이트, stable:3개월 마다 업데이트)
root@k8smaster1:~# apt-get install -y docker.io
# file 생성 후 main repo entry 추가
root@k8smaster1:~# vi /etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
#package를 위해 GPG key를 추가
root@k8smaster1:~# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
# 새로운 repo 업데이트
root@k8smaster1:~# apt-get update
kube 관련 software 설치
root@k8smaster1:~# apt-get install -y kubeadm=1.15.1-00 kubelet=1.15.1-00 kubectl=1.15.1-00
calico network plugin 설치
# calico plugin 설치를 위한 yaml 파일 다운로드
# https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
# https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml
root@k8smaster1:~# wget https://tinyurl.com/yb4xturm -O rbac-kdd.yaml
root@k8smaster1:~# wget https://tinyurl.com/y8lvqc9g -O calico.yaml
# 컨테이너에 할당된 IPV4 pool
# CALICO_IPV$POOL_CIDR
# 192.168.0.0./16
# 해당 설정 값은 kubeadm init 시 주어진 값과 match되어야 함.
root@k8smaster1:~# less calico.yaml
# primary interface IP 확인
# - ens4 inet 10.128.0.3/32 ....
root@k8smaster1:~# ip addr show
kubeadm 설정 및 초기화
kubeadm init 중 에러 발생시 다시 설정하고 싶은 경우 kubeadm reset 후에 다시 아래 대로 해주면 된다.
root@k8smaster1:~# vi kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: 1.15.1 # <-- Use the word stable for newest version
controlPlaneEndpoint: "k8smaster:6443" # <-- hostname으로 아이피로 안하는 이유는 클러스터 구성 시 proxy를 사용하기 위해서
networking:
podSubnet: 192.168.0.0/16 # <-- podSubnet은 상단에 calico pool설정 값과 일치 해야 함
# --upload-certs => master, slave 인증서
# tee명령을 통해 output 로 남겨둠. 추후 worker node 추가시 사용
root@k8smaster1:~# kubeadm init --config=kubeadm-config.yaml --upload-certs | tee kubeadm-init.out
root 아닌 서브 계정으로 작업 하기 위해 서브계정에 권한 부여 (이후로는 서브 계정만 사용)
ps0107@k8smaster1:~$ mkdir -p $HOME/.kube
ps0107@k8smaster1:~$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
ps0107@k8smaster1:~$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
ps0107@k8smaster1:~$ less $HOME/.kube/config
자동 완성 기능 설정
ps0107@k8smaster1:~$ source <(kubectl completion bash)
ps0107@k8smaster1:~$ echo "source <(kubectl completion bash)" >> ~/.bashrc
ps0107@k8smaster1:~$ source ~/.bashrc
calico 및 rbac 적용
ps0107@k8smaster1:~$ sudo cp /root/rbac-add.yaml .
ps0107@k8smaster1:~$ sudo cp /root/calico.yaml .
ps0107@k8smaster1:~$ kubectl apply -f rbac-add.yaml
ps0107@k8smaster1:~$ kubectl apply -f calico.yaml
# kubeadm-config.yaml file에 포함된 내용 확인 가능
ps0107@k8smaster1:~$ sudo kubeadm config print init-defaults
참조) 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