Hướng dẫn cài đặt Kubernetes trên CentOS 7 tự động hoá với Ansible
Giới Thiệu
Ansible là một công cụ mã nguồn mở giúp bạn có thể tự động hoá các tác vụ trên nhiều máy chủ cùng một lúc thông qua giao thức SSH. Với việc sử dụng cấu trúc YAML cực kỳ đơn giản, Ansible ra mắt vào năm 2012 dần trở thành công cụ phổ biến bậc nhất trong giới SysOps/DevOps/SRE.
Trong bài viết này chúng ta sẽ thực hiện cài đặt Ansible và thao tác tự động hoá cài đặt Kubernetes cluster trên máy chủ CentOS 7.
10.0.0.2 # node1
10.0.0.3 # node2
10.0.0.4 # node3
Chuẩn bị
Các máy chủ thao tác cần được thêm public key từ máy tính cá nhân của bạn tới máy chủ và user này có thể thực thi được quyền
root
Thao tác trên các server
cần cài đặt Kubernetes:
Tạo user với tên userdeploy
Tiến hành tạo user userdeploy
Tiến hành thêm user userdeploy
có quyền thực thi quyền root
Tiến hành thêm user userdeploy
trong file /etc/sudoers/
có thể thực thi quyền root
Cài đặt pip3 trên máy trạm
:
Với MacOS
Đã có sẵn package pip3 trên hệ điều hành .
Với Ubuntu
Với Centos
Cài đặt Ansible
Đối với phần cài đặt này chúng ta sẽ cài đặt có thể là máy chủ hoặc máy tính cá nhân đề được.
Với CentOS
Cài đặt repo epel
Cài đặt Ansible
Kiểm tra version của Ansible
Với Ubuntu
Cài đặt các phần mềm thuộc tính cần thiết
Thêm repo ansible
Cài đặt Ansible
Kiểm tra version của Ansible
Với MacOS
Cài đặt ansible
Kiểm tra version của Ansible
Cấu trúc thư mục trong Ansible
Với Ansible chúng ta cần biết một số định nghĩa cơ bản sau :
- group_vars
: Chứa các biến được quy định bởi một group. Ví dụ ở đây chúng ta sẽ có một group các máy chủ chạy proxy nginx vậy chúng ta có thể define các biến chạy cho máy chủ này như NGINX_VERSION , WORKER_CONNECTION...
host_vars
: Giống như group_vars nhưng ở phần này chúng ta sẽ chỉ định chính xác server nào sẽ có những biến nào.inventories
: Là nơi mà bạn có thể khai báo các thông tin của máy chủ mà mình muốn triển khai . Ví dụ : IP , PORT_SSH , USER_SSH ...playbooks
: Là nơi bạn có thể khai báo các file YAML để có thể gọi tới các roles theo chỉnh định.roles
: Là một tập các playbook chứa các files YAML để thực thi cài đặt , cấu hình cũng như thao tác với servers.
Tiếp theo ta sẽ đi sâu hơn về các cấu trúc của một role roles này chúng ta sẽ có các định nghĩa mới bao gồm:
defaults
: Là nơi chứa các variables cục bộ trong roles này.files
: Là nơi chứa các files chúng ta cần sync lên hệ thống cần deploy trong role.handlers
: Là nơi chứa các thao tác xử lý các thao tác trên hệ thống như: reload, restart, start...meta
: Là nơi chứa các dependencies liên quan tới role.templates
: Là nơi chứa các files config mẫu theo qui định best practices thường các files sẽ được lưu theo đuôi là .j2vars
: Là nơi chứa các variables cục bộ trong roles này. Nó được ưu tiên hơndefaults
nếu như tìm không thấy ởvars
nó sẽ tìm đếndefaults
Thông tin thêm: Bạn truy cập vào https://docs.ansible.com/ansible/2.8/user_guide/playbooks_best_practices.html để xem thêm chi tiết các thành phần.
Cài đặt Kubernetes cluster sử dụng Ansible
Đầu tiên ta sẽ clone Kubespray về trên máy trạm
:
Chúng ta cài đặt các dependencies có liên quan
Chúng ta copy file inventory mẫu thành một file inventory mới
Chúng ta sử dụng script có sẵn để update các server mình muốn cài đặt cluster Kubernetes.
Chúng ta kiểm tra lại các files chúng ta đã config.
Sau đó chúng ta tiến hành chạy playbook để tạo cluster Kubernetes
Sau khi đợi khoảng 25-30 phút thì chúng ta được kết quả thông báo quá trình cài đặt cluster Kubernetes đã thành công:
Sau đó ta tiến hành ssh vào máy chủ có IP 10.0.0.2
cài đặt kubectl.
Sau đó ta tiến hành export file KUBECONFIG .
Chúng ta kiểm tra các nodes của cluster .
Chúng ta kiểm tra các pods đang chạy trên cluster.
Tổng kết
Bên trên là toàn bộ hướng dẫn cài đặt thành công một cluster Kubernetes 3 nodes sử dụng Kubespray.
Thông tin chi tiết bạn có thể đọc tại repository Github chính thức của Kubespray: https://github.com/kubernetes-sigs/kubespray
Chúc các bạn thành công!
Tính năng đang được phát triển