■ k8s (Kubernetes) 란?
https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/
쿠버네티스란 무엇인가?
쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼으로, 선언적 구성과 자동화를 모두 지원한다. 쿠버네티스는 크고 빠르게 성장하
kubernetes.io
· 컨테이너 오케스트레이션 시스템 종류 중 하나
· 어플리케이션 동작이 목적
· 격리된 환경에서 동작할 경우 안전성 확보
· 리눅스 프로세스 자원을 격리 사용 (cgroup / chroot) => Isolate 기능 제공 (컨테이너)
장점 (제공하는 기능) | 단점 (지원하지 않는 기능) |
컨테이너 플랫폼 (오케스트레이션) MSA (Micro Service Arcitecture) 플랫폼 이식성 높은 플랫폼 |
CI/CD 파이프라인 로깅 모니터링 알람 |
■ k8s Install
□ k8s 설치 도구
minikube, kops, kubeadm, kubespray
minikube | 간단한 테스트 환경 구성에 사용 |
kops | Cloud 환경에서 k8s 구성시 사용하는 도구 |
kubeadm | k8s 설치(배포)에 사용하는 명령어 도구 |
kubespray | kubeadm과 ansible을 이용한 배포 도구 물리적인 시스템, 가상 머신, 클라우드 |
vagrant : 특정 하이퍼바이저 기반의 가상머신 배포를 자동화 해주는 도구
□ Kubespray 배포시 사전 설정 !
1) Key 기반 인증 구성
2) sudo 권한 설정
3) ansible v2.9 + python-netaddr
4) Jinja v2.11 +
5) 인터넷 연결
6) 방화벽 비활성화
7) CPU : 1 core 이상
8) RAM : 2G 이상 ( 노드는 1G 이상 )
1. 가상머신 생성 (VirtualBox)
- Vagrant를 이용해서 배포 진행
https://twodeveloper.tistory.com/67
[Vagrant] Vagrant Install
■ Vagrant 란? https://www.lesstif.com/laravelprog/vagrant-24445417.html Vagrant 란 하이퍼바이저를 설치하는 실제 운영체제(윈도, OS X, 리눅스 등)를 호스트(Host) OS 라 하고 하이퍼바이저 위에 만든 가상..
twodeveloper.tistory.com
Vagrant.configure("2") do |config|
config.vm.define "controll-plane" do |config|
config.vm.box = "ubuntu/bionic64"
config.vm.provider "virtualbox" do |vb|
vb.name = "controll-plane"
vb.memory = "2048"
vb.cpus = 2
end
config.vm.hostname = "controll-plane.example.com"
config.vm.network "private_network", ip: "192.168.56.11"
end
config.vm.define "node1" do |config|
config.vm.box = "ubuntu/bionic64"
config.vm.provider "virtualbox" do |vb|
vb.name = "node1"
vb.memory = "1024"
vb.cpus = 1
end
config.vm.hostname = "node1.example.com"
config.vm.network "private_network", ip: "192.168.56.21"
end
config.vm.define "node2" do |config|
config.vm.box = "ubuntu/bionic64"
config.vm.provider "virtualbox" do |vb|
vb.name = "node2"
vb.memory = "1024"
vb.cpus = 1
end
config.vm.hostname = "node2.example.com"
config.vm.network "private_network", ip: "192.168.56.22"
end
config.vm.define "node3" do |config|
config.vm.box = "ubuntu/bionic64"
config.vm.provider "virtualbox" do |vb|
vb.name = "node3"
vb.memory = "1024"
vb.cpus = 1
end
config.vm.hostname = "node3.example.com"
config.vm.network "private_network", ip: "192.168.56.23"
end
config.hostmanager.enabled = true
config.hostmanager.manage_guest = true
config.vm.provision "shell", inline: <<-SHELL
sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/g' /etc/ssh/sshd_config
sed -i 's/archive.ubuntu.com/ftp.daum.net/g' /etc/apt/source.list
sed -i 's/security.ubuntu.com/ftp.daum.net/g' /etc/apt/source.list
systemctl restart sshd
SHELL
end
2. Key 기반 인증 설정 (모든 노드에 배포)
$ ssh-keygen
$ ssh-copy-id node1
$ ssh-copy-id node2
$ ssh-copy-id node3
$ ssh-copy-id localhost
☞ control-plane에서 실행
3. Git Install
$ sudo apt-get update
$ sudo apt install -y git
4. python3-pip Install
$ sudo apt install -y python3 python3-pip
$ pip3 --version
5. kubespray git clone
https://github.com/kubernetes-sigs/kubespray
GitHub - kubernetes-sigs/kubespray: Deploy a Production Ready Kubernetes Cluster
Deploy a Production Ready Kubernetes Cluster. Contribute to kubernetes-sigs/kubespray development by creating an account on GitHub.
github.com
$ git clone -b release-2.16 --single-branch https://github.com/kubernetes-sigs/kubespray.git
※ latest가 아닌 release-2.16 버전 이용 (안정적임)
6. pip3 로 require.txt 파일에 있는 패키지 설치
$ cd kubespray
$ sudo pip3 install -r requirements.txt
7. mycluster 복사
$ cp -rfp inventory/sample/ inventory/mycluster
8. inventory.ini 수정
$ vim inventory/mycluster/inventory.ini
---
[all]
node1 ansible_host=192.168.56.21 ip=192.168.56.21
node2 ansible_host=192.168.56.22 ip=192.168.56.22
node3 ansible_host=192.168.56.23 ip=192.168.56.23
controll-plane ansible_host=192.168.56.11 ip=192.168.56.11
[all:vars]
ansible_python_interpreter=/usr/bin/python3
[kube_control_plane]
controll-plane
[etcd]
controll-plane
[kube_node]
node1
node2
node3
[calico_rr]
[k8s_cluster:children]
kube_control_plane
kube_node
calico_rr
9. addons.yml 설정
vim group_vars/k8s_cluster/addons.yml
---
metallb_enabled: true
metallb_speaker_enabled: true
metallb_ip_range:
- "192.168.56.50-192.168.56.99"
metallb_protocol: "layer2"
---
10. k8s-cluster.yml 설정
$ vim group_vars/k8s_cluster/k8s-cluster.yml
---
kube_proxy_strict_arp: true
---
11. ansible 실행
$ ansible-playbook -i inventory/mycluster/inventory.ini cluster.yml -b
※ 설치 과정이 오래 걸림
12. vagrant 사용자로 kubectl 실행 권한 부여
$ mkdir ~/.kube
$ sudo cp /etc/kubernetes/admin.conf ~/.kube/config
$ sudo chown $USER:$USER ~/.kube/config
'DevOps > Kubernetes' 카테고리의 다른 글
[kubernetes] Argo CD Install (0) | 2021.12.22 |
---|---|
[kubernetes] Helm으로 Jenkins Deploy (1) | 2021.11.12 |
[kubernetes] EKS Cluster 내부에 AWS RDS 구축 (0) | 2021.11.10 |
[Kubernetes] AWS ALB Controller (0) | 2021.11.10 |
[kubernetes] EKS Install (0) | 2021.10.27 |