Tập tành SET UP CLUSTER K8S KUBESPRAY
9th Feb 2023Overview
Kubernetes hay K8S đang ngày càng một phổ biến. Dạo gần đây thì mình cũng bắt đầu vừa học vừa làm Kubernetes. Vừa note lại để sau có quên thì xem lại cũng như vừa để chia sẻ cái hay cái mới mình học được với mọi người thì trong blog này mình sẽ chia sẻ cách để các bạn có thể set up một cluster K8S bằng Kubespray. Bài viết này
Getting Started
Kubernetes
Kubernetes là một mã nguồn mở của Google và được dùng để quản lý các ứng dụng, service giúp bạn thuận tiện trong việc cấu hình cũng như triển khai tự động. Các bạn có thể xem thêm tại https://kubernetes.io/
Kubespray
Là một công cụ giúp bạn set up một cluster K8S. Mã nguồn tại https://github.com/kubernetes-sigs/kubespray. Và để chuẩn bị cho việc set up cluster các bạn hãy clone kubespray về cho mình
$ git clone https://github.com/kubernetes-sigs/kubespray.git && cd kubespray
Python
Ở đây python3 là một tài nguyên cần thiết trong việc bạn set up cluster K8S. Vì vậy trước khi bắt đầu hãy chắc chắn máy của bạn đã có python3 và pip3 nhé.
Server
Trong phạm vi bài viết mình xây dựng cluster K8S gồm có 3 master node vậy mình cần 3 con host cho 3 node. Bạn nào không có host thì có thể dựng 3 con máy ảo lên tạm nhé. Sau khi đã chuẩn bị 3 máy cho 3 node thì bạn hãy copy ssh public key của mình bỏ vào ~/.ssh/authorized_keys ở 3 host nhé.
Solution
Các đầu việc của chúng ta gồm có
- Cài đặt các dependencies
- Set up inventory folder
- update ansible host
- update params cho cụm K8S
- Chạy command để set up cluster K8S
1. Cài đặt dependencies
$ sudo pip3 install -r requirements.txt
2. Set up inventory folder
$ cp -rfp inventory/sample inventory/mycluster
$ declare -a IPS=(10.10.1.3 10.10.1.4 10.10.1.5)
$ CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
Sau khi thực hiện xong 3 command trên thì bạn sẽ có 1 file hosts.yaml (inventory/mycluster/hosts.yaml). bây giờ chúng ta sẽ điều chỉnh cho phù hợp.
Bạn sẽ điều chỉnh lại các values trong group_vars/k8s-cluster và group_vars/all tuỳ theo mong muốn của mình. Còn nếu không thì có thể bỏ qua
# inventory/mycluster/hosts.yaml
all:
hosts:
node1:
ansible_host: ${USER_HOST_01}@${PUBLIC_IP_HOST_01}
ip: ${PRIVATE_IP_HOST_01}
node2:
ansible_host: ${USER_HOST_02}@${PUBLIC_IP_HOST_02}
ip: ${PRIVATE_IP_HOST_02}
node3:
ansible_host: ${USER_HOST_03}@${PUBLIC_IP_HOST_03}
ip: ${PRIVATE_IP_HOST_03}
children:
kube-master:
hosts:
node1:
node2:
node3:
kube-node:
hosts:
node1:
node2:
node3:
etcd:
hosts:
node1:
node2:
node3:
k8s-cluster:
children:
kube-master:
kube-node:
calico-rr:
hosts: {}
3. Chạy command set up K8S
$ ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml
Sau khi cài đặt k8s cluster thì bạn hãy vào server 01 và kéo file /etc/kubernetes/admin.conf về local tại ~/.kube/config và set up lại local /etc/hosts
apiVersion: v1
clusters:
- cluster:
certificate-authority-data:
server: https://${PRIVATE_IP_HOST_01}:6443
name: cluster.local
contexts:
- context:
cluster: cluster.local
user: kubernetes-admin
name: [email protected]
current-context: [email protected]
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data:
client-key-data:
thay thế ${PRIVATE_IP_HOST_01} thành kubernetes.default.svc.cluster.local
$ sudo echo ${PUBLIC_IP_HOST_01} >> /etc/hosts
bây giờ bạn có thể kiểm tra thành quả của mình
$ kubectl cluster-info
$ kubectl get nodes
Summary
Trong bài viết này mình đã chia sẻ với các bạn về cách để set up một cluster k8s với 3 nodes. Hẹn gặp lại các bạn trong các bài viết tiếp theo về series Kubernetes.
- 72 views
Add new comment