Notice
Recent Posts
Recent Comments
Today
Total
03-29 01:50
Archives
관리 메뉴

Jeongchul Kim

Kubespray를 활용한 Kubernetes 클러스터 구축 본문

카테고리 없음

Kubespray를 활용한 Kubernetes 클러스터 구축

김 정출 2023. 5. 31. 13:28

Kubespray를 활용한 Kubernetes 클러스터 구축

설치하는 환경

  • Master VM, Worker VM 3
    • OS: Ubuntu 22.04
    • CPU: 4 core
    • Mem: 4096MB
    • N/W: Bridge

Kubespray로 Kuberenetes 구축 가이드

 

Master 노드에서 pip3 설치를 진행합니다.

sudo apt install python3-pip

 

ssh key 복사

ssh key 복사를 진행합니다. ansible을 기본으로 사용하고 있어 master에서 ssh-keygen 이후에 worker vm 3대로 copy를 진행하면 됩니다.

ssh-keygen

ssh-copy-id 172.16.177.128 # master

ssh-copy-id 172.16.177.129 # worker1

ssh-copy-id 172.16.177.130 # worker2

ssh-copy-id 172.16.177.131 # worker3

Kubespray 설치

kubespray 설치를 진행합니다.

https://github.com/kubernetes-sigs/kubespray

mkdir environment && cd environment

git clone https://github.com/kubernetes-sigs/kubespray

git checkout release-2.22

sudo pip3 install -r requirements.txt

cp -r inventory/sample inventory/cluster

declare -a IPS=(172.16.177.129 172.16.177.130 172.16.177.131) # 설치할 Worker node들의 IP를 작성합니다.

CONFIG_FILE=inventory/cluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}

생성된 config file을 확인해봅니다.

vi inventory/cluster/hosts.yaml

 

addon을 수정하여 필요한 것들을 true로 변경합니다.

vi inventory/cluster/group_vars/k8s_cluster/addons.yml

---

# Kubernetes dashboard

# RBAC required. see docs/getting-started.md for access details.

dashboard_enabled: true



# Helm deployment

helm_enabled: true



# Metrics Server deployment

metrics_server_enabled: true

metrics_server_container_port: 10250

metrics_server_kubelet_insecure_tls: true

metrics_server_metric_resolution: 15s

metrics_server_kubelet_preferred_address_types: "InternalIP,ExternalIP,Hostname"

metrics_server_host_network: true

metrics_server_replicas: 1



# Local volume provisioner deployment

local_volume_provisioner_enabled: true



# Nginx ingress controller deployment

ingress_nginx_enabled: true



# Cert manager deployment

cert_manager_enabled: true

Kubernetes 클러스터 설치 진행

ansible-playbook -i inventory/cluster/hosts.yaml --become --become-user=root --extra-vars ansible_sudo_pass=[SUDO_PASSWORD] cluster.yml

설치에 수십 분 정도 소요됩니다.

 

kube 설정 파일을 가져옵니다.

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

kubectl 명령어 자동 완성

echo "source <(kubectl completion zsh)" >> ~/.zshrc

Alias 설정

vi ~/.zshrc

alias wk='watch kubectl get'

alias wka='watch kubectl get all'

alias wkgp='watch kubectl get pod'

alias k='kubectl'

alias kg='kubectl get'

alias ke='kubectl edit'

alias kdl='kubectl delete'

alias kd='kubectl describe'

alias kde='kubectl delete'

alias kes='kubectl edit service'

alias ked='kubectl edit deployment'

alias kef='kubectl edit statefulset'

alias kgns='kubectl get namespace'

alias kga='kubectl get all'

alias kgp='kubectl get pod'

alias kgd='kubectl get deployment'

alias kgf='kubectl get statefulset'

alias kgs='kubectl get service'

alias kgns='kubectl get ns'

alias kdp='kubectl describe pod'

alias kds='kubectl describe svc'

alias kdd='kubectl describe deployment'

alias kdf='kubectl describe statefulset'

alias kdnd='kubectl describe node'

alias klf='kubectl logs --follow'

alias kgnd='kubectl get node'

alias ksd='kubectl scale deployment'

alias ksud='kubectl scale deployment --replicas=1'

alias ksdd='kubectl scale deployment --replicas=0'

alias ksf='kubectl scale statefulset'

alias ksuf='kubectl scale statefulset -�~@~Treplicas=1'

alias ksdf='kubectl scale statefulset -�~@~Treplicas=0'

alias krd='kubectl rollout restart deployment'

alias krf='kubectl rollout restart statefulset'




source ~/.zshrc

 

Kubernetes 클러스터의 노드 정보를 확인합니다.

kubectl get node -o wide

kubectl get pod -nkube-system

 

** Metrics 서버 이슈가 있는 경우 Crashloop back과 더불어 Restart되는 경우

  • kubelet이 10250포트를 이미 점유하고 있어 호스트 네트워크 상에 묶여 이미 바인딩된 포트라면서 시작 불가
kgd -nkube-system

 

ked -nkube-system metrics-server

metrics 서버의 포트를 10250에서 4443 변경합니다.

  • container.args에서 --secure-port=4443
  • containers.ports에서

 

Kubespray Kubernetes 업데이트

ansible-playbook -i inventory/cluster/hosts.yaml --become --become-user=root --extra-vars ansible_sudo_pass=[SUDO_PASSWORD] update-cluster.yml

Kubespray Kubernetes 삭제

kubespray를 통해 Kubernetes Cluster 삭제하는 법

ansible-playbook -i inventory/cluster/hosts.yaml --become --become-user=root --extra-vars ansible_sudo_pass=[SUDO_PASSWORD] reset.yml

 

Comments