Cài đặt Kubernetes Cluster với kubeadm

147

Cài đặt Kubernetes Cluster với kubeadmCuongquach.com | Bạn sẽ bắt đầu thực hành việc cài đặt một Kubernetes Cluster với công cụ chính chủ kubeadm. Thay vì phải cài đặt các thành phần hệ thống từng phần từng phần, thì kubeadm sẽ giúp bạn làm việc đó bằng cách tự download và cài đặt các thành phần quan trọng cho hệ thống Kubernetes Cluster. Từ đó bạn dễ dàng tạo ra một Kubernetes Cluster để thực hành lab, development,… hoặc nếu custom đầy đủ bạn vẫn có thể chạy Production cho Kubernetes Cluster từ kubeadm đấy.

cai-dat-kubernetes-cluster-kubeadm

Các thông tin cơ bản

Các hệ điều hành hỗ trợ tốt cho chương trình Kubeadm :

  • Ubuntu 18.04+
  • Debian 9+
  • CentOS 7
  • Red Hat Enterprise Linux (RHEL) 7
  • Fedora 25+
  • HypriotOS v1.0.1+
  • Container Linux (tested with 1800.6.0)

Tài nguyên tối thiểu cho máy chủ :

  • CPU : 2
  • RAM : 2 GB

Mình sẽ lab cài đặt Kubernetes Cluster trên OS Ubuntu 18.04 .

Mô hình Kubernetes Cluster (1 Master Node và 2 Worker Node)

Chúng ta sẽ lab với 3 máy chủ :

  • Control-plane Node : ip 171.31.31.24
  • Worker Node 1 : ip 172.31.31.166
  • Worker Node 2 : 172.31.31.164

1. Kiểm tra các cấu hình cần thiết trên các Kubernetes Node

Trên cả 3 Node như 1 Master Node (control-plane node) và 2 Worker Node, bạn cần kiểm tra và cấu hình các phần sau :

– Đảm bảo MAC Address của card mạng giữa các máy chủ node là độc lập và duy nhất. Điều này dễ xảy ra MAC Address trùng lặp khi bạn sử dụng VM được clone ra.

– Đảm bảo giá trị product_uuid giữa các máy chủ node là độc lập và duy nhất.

– Tắt phân vùng swap đi nếu có sử dụng.

– Nếu có cấu hình phân vùng swap trong /etc/fstab thì comment config đó đi, để khỏi load phân vùng swap khi hệ thống khởi động.

– Đặt tên hostname riêng biệt cho từng máy chủ.

– Cấu hình địa chỉ IP Private của từng máy chủ node trong file /etc/hosts .

– Cấu hình iptables tương tác với traffic ‘bridge‘. Và đảm bảo module ‘br_netfilter‘ đã được load mặc định trên máy chủ Ubuntu 18.04/18.04

– Nếu chưa có module br_netfilter thì cấu hình để máy chủ load module br_netfilter .

– Nếu có dịch vụ tường lửa thì cần mở các port sau, còn không thì mình khuyến cáo có thể tắt tường lửa vào thời điểm lab Kubernetes Cluster.

open-port-kubernetes-cluster-nodes– Khởi động lại máy chủ để load các cấu hình trên.

2. Cài đặt Docker trên Ubuntu – Kubernetes Node

Như ta biết thì Kubernetes thường lựa chọn chạy nền tảng container runtime là Docker (các container runtime khác như Docker, containerd hoặc CRI-O). vì vậy ta cần cài đặt Docker trên toàn bộ Kubernetes Node . Tham khảo : Cài đặt Docker trên Ubuntu 18.04

– Kiểm tra phiên bản Ubuntu nào.

Update thông tin local database của repo trước, cũng như cài một số chương trình hỗ trợ.

Thêm thông tin Docker GPG Key chính chủ vào hệ thống.

Giờ ta thêm thông tin Docker Repository.

Tiến hành cài đặt Docker trên Ubuntu 18.04

Cấu hình vài setting cơ bản cho dịch vụ Docker.

Khởi động dịch vụ Docker và cấu hình để Docker luôn khởi động cùng máy chủ.

Kiểm tra trạng thái dịch vụ Docker trên Ubuntu 18.04 nào.

3. Cài đặt kubeadm, kubelet and kubectl

Cài đặt các chương trình hỗ trợ cơ bản.

Thêm GPG Key của Kubernetes chính chủ vào hệ thống, để có thể xác thực các package sẽ được download.

Thêm thông tin repository của Kubernetes vào Ubuntu 18.04. Hiện tại thì package trên repository của Kubernetes mới hỗ trợ xenial (18.04) , nhưng vẫn hoạt động tốt trên 18.04 . Nên đến khi Kubernetes hỗ trợ 18.04 package thì bạn có thể chỉ định xenial ở trong phần cấu hình repository deb này. (Bạn có thể kiểm tra ở đây: https://packages.cloud.google.com/apt/dists)

Bạn sẽ cài đặt 3 chương trình sau :

  • kubeadm: chương trình lệnh dùng để khởi tạo cluster.
  • kubelet: thành phần ứng dụng sẽ chạy trên toàn bộ các máy chủ Kubernetes Node trong cụm Cluster, thực hiện các hoạt động như : khởi chạy pod, container,…
  • kubectl: chương trình lệnh tương tác với Kubernetes Cluster

4. Khởi tạo Kubernetes Cluster

+ Master Node (control-plane node)

Trên máy chủ Master Node (control-plane node) mà bạn lựa chọn, chúng ta sẽ tiến hành boostrap khởi tạo Kubernetes Cluster . Các worker node còn lại sẽ tham gia vào cụm Kubernetes Cluster.

Trong đó:

  • 172.31.31.42 : là IP của node cuongquach-k8s-master.
  • --apiserver-advertise-address: là địa chỉ của node cuongquach-k8s-master, địa chỉ này cần truyền thông được với các node còn lại trong cụm cluster. Trong ví dụ này node cuongquach-k8s-master có địa chỉ là: 172.31.31.42.
  • --pod-network-cidr: là dải địa chỉ mạng phụ thuộc mà công nghệ network sẽ sử dụng để các Pod giao tiếp với nhau trong Kubernetes Cluster, trong hướng dẫn này ta sử dụng Calcio.

Giờ bạn cấu hình file config để chương trình kubectl có thể tương tác Kubernetes API ở user non-root hoặc user root tuỳ ý bạn. Mình sẽ tạo trên Master Node (control-plane node) thông tin file config admin kube đã được generate từ quá trình boostrap cluster. Ở đây mình chỉ định cho user root .

Nếu bạn không muốn tạo file config như vậy, bạn có thể chỉ định file config từ biến môi trường. Từ đó chương trình lệnh kubectl , sẽ tự đi load file config bạn chỉ định.

Hiển thị thông tin các Pod và các Node từ chương trình lệnh kubectl thử nào.

5. Cài đặt Pod network add-on

Pod-network hay Container Network Interface (CNI) là nói về phương tiện để các Pod có thể giao tiếp với nhau trong hệ thống Kubernetes Cluster.

  • Cluster DNS (CoreDNS) sẽ không khởi động được nếu network add-on chưa được cài đặt.
  • Lớp mạng được dùng để khai báo cho Pod network không được trùng với lớp mạng của hệ thống máy chủ.
  • Bạn chỉ có thể cài đặt một Pod Network trên một Kubernetes Cluster.

Vậy giờ ta có thể lựa chọn các Pod Network Add-on đang phổ biến như (Tham khảo) :

  • Weave
  • Flannel
  • Calcio

Trong bài viết này, mình sẽ sử dụng Pod Network Add-on đơn giản và cũng khá mạnh mẽ là : Calcio

Calico is a networking and network policy provider. Calico supports a flexible set of networking options so you can choose the most efficient option for your situation, including non-overlay and overlay networks, with or without BGP. Calico uses the same engine to enforce network policy for hosts, pods, and (if using Istio & Envoy) applications at the service mesh layer. Calico works on several architectures, including amd64, arm64, and ppc64le.

Calcio sẽ tự động tìm thấy range địa chỉ IP dùng cho Pod thông qua giá trị mà bạn đã cấu hình ở flag arg –pod-network-cidr.

Một khi Pod network được cài đặt, bạn có thể kiểm tra xem nó hoạt động hay chưa bằng cách kiểm tra cách kiểm tra các Pod CoreDNS đã chuyển trạng thái RUNNING hay chưa ? Nếu chưa chạy RUNNING thì hoạt động cài đặt Pod Network của bạn đã thất bại.

Khi mà CoreDNS đã chạy, bạn có thể tiếp tục quá trình cấu hình các Worker Node tham gia vào Kubernetes Cluster.

6. Cấu hình Worker Node tham gia Kubernetes Cluster

Nhiệm vụ kế tiếp của chúng ta rất là đơn giản, bạn sẽ thao tác trên các máy chủ Worker Node để cấu hình chúng tham gia vào cụm Kubernetes Cluster.

Bạn sẽ thực hiện việc kết nối các Worker Node (2 máy chủ Worker Node) vào cụm Kubernetes Cluster, bằng cách cấu hình Worker Node kết nối địa chỉ IP của Master Node để yêu cầu việc tham gia Kubernetes Cluster.

Cú pháp:

Cái token thì bạn lấy từ output của quá trình bootstrap Kubernetes Cluster. Nếu bạn quên lưu hoặc lỡ tắt terminal màn hình chạy trên Master Node, thì có thể thực hiện việc lấy lại thông tin token đó trên Master Node (control-plane node) như sau.

Về phần token, thì token có thời hạn 24h , nếu sau 24h bạn cần tạo mới token trên Control-plane Node.

Nếu bạn không tìm thấy giá trị “–discovery-token-ca-cert-hash” , thì bạn có thể chạy lệnh sau trên Control-plane Node để lấy thông tin CA Cert Hash

Làm mấy cái trên dài dòng quá, có cách nào ngắn gọn giúp in ra terminal cú pháp lệnh giúp cấu hình Worker Node tham gia vào Kubernetes Cluster không ? Có đấy bạn , đây này :

Giờ chạy lệnh sau trên cả 2 Worker Node để cấu hình Worker Node tham gia vào Kubernetes Cluster nhé.

Giờ bạn quay lại con Master Node , để chạy lệnh kubectl nhằm kiểm tra xem hệ thống Kubernetes Cluster đã nhận được 2 máy chủ Worker Node vào cụm cluster chưa nhé.

Vậy là bạn đã cài đặt thành công một hệ thống Kubernetes Cluster với mô hình đơn giản gồm 1 Control-plane Node2 Worker Node.

Đây là bước khởi đầu để bạn có thể tiếp tục hành trình khám phá về công nghệ nền tảng Kubernetes đấy.

Nguồn: https://cuongquach.com/

LEAVE A REPLY

Please enter your comment!
Please enter your name here