Hướng Dẫn Cài đặt Cluster Kubernetes Với RKE Trên CentOS 7
Có thể bạn quan tâm
Giới thiệu
Rancher Kubernetes Engine (RKE) là một công cụ dùng để triển khai môi trường Kubernetes trên máy chủ vật lý hoặc máy chủ ảo hóa. RKE giúp đơn giản hóa việc cài đặt Kubernetes trên bất kì hệ điều hành và nền tảng nào bạn đang chạy. RKE còn nhận được chứng nhận từ tổ chức nổi tiếng CNCF.
Trong bài viết này chúng ta sẽ sử dụng RKE sẽ cài đặt cluster Kubernetes trên các máy chủ chạy hệ điều hành CentOS 7.
Việc cài đặt sẽ được thực hiện trên 3 máy chủ có IP lần lượt là:
10.0.0.2
10.0.0.3
10.0.0.4

Chuẩn bị
Các máy chủ cần được thông firewall với nhau với các port sau :
Kết quả22/TCP Port SSH 6443/TCP Port Kube-API 2376/TCP Port Docker daemon TLS 2379/TCP Port ETCD client 2380/TCP Port ETCD peer 8472/UDP Canal/Flannel VXLAN overlay networking 9099/TCP Canal/Flannel livenessProbe/readinessProbe 10250/TCP Port kubelet 443/TCP Port Rancher agent 10254 Port Ingress controller livenessProbe/readinessProbe 30000-32767 NodePort port range defaultChúng ta chạy update toàn bộ server bằng trước khi cài Docker
bash (root)yum update _Cài đặt Docker
Chúng ta thực hiện cài đặt Docker lần lượt trên cả 3 máy chủ như sau:
Cài đặt pakage yum-utils
bash (root)yum install -y yum-utils _Tiến hành download và add repository docker-ce
bash (root)yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo _Tiến hành cài đặt Docker
bash (root)yum install docker-ce docker-ce-cli containerd.io _Sau khi cài đặt xong chúng ta start Docker:
bash (root)systemctl start docker _Cho Docker khởi động cùng hệ điều hành.
bash (root)systemctl enable docker _Kiểm tra trạng thái của Docker
bash (root)systemctl status docker _ Kết quả● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2021-11-05 15:49:31 UTC; 4s ago Docs: https://docs.docker.com Main PID: 2332 (dockerd) Tasks: 7 Memory: 75.8M CGroup: /system.slice/docker.service └─2332 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/co... Hint: Some lines were ellipsized, use -l to show in full.Sau khi cài đặt xong chúng ta kiểm tra phiên bản của Docker:
bash (root)docker version _ Kết quảClient: Docker Engine - Community Version: 20.10.10 API version: 1.41 Go version: go1.16.9 Git commit: b485636 Built: Mon Oct 25 07:44:50 2021 OS/Arch: linux/amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.10 API version: 1.41 (minimum version 1.12) Go version: go1.16.9 Git commit: e2f740d Built: Mon Oct 25 07:43:13 2021 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.4.11 GitCommit: 5b46e404f6b9f661a205e28d59c982d3634148f8 runc: Version: 1.0.2 GitCommit: v1.0.2-0-g52b36a2 docker-init: Version: 0.19.0 GitCommit: de40ad0Tạo user với tên userdeploy và thêm vào group với tên docker để phục vụ cho việc cài đặt cluster của RKE.
Tiến hành tạo user userdeploy
bash (root)adduser userdeploy _Tiến hành thêm user userdeploy vào group với tên docker
bash (root)usermod -aG docker userdeploy _Lưu ý quan trọng : Bạn có thể SSH tới 3 máy chủ trên với user là userdeploy để có thể chạy công cụ RKE deploy được hướng dẫn ở phần bên dưới .
Cài đặt RKE
Chúng ta sẽ thực hiện cài đặt rke tại máy tính cá nhân của bạn . Từ máy tính của bạn có thể truy cập tới các bản release của RKE để có thể download binary tại link https://github.com/rancher/rke/releases
Copy binary vừa download được và chỉnh sửa tên của nó thành rke
Với macOS
bash (non-root)mv rke_darwin-amd64 rke && chmod +x rke _Với các distro Linux
bash (non-root)mv rke_linux-amd64 rke && chmod +x rke _Với Windows PowerShell
bash (non-root)mv rke_windows-amd64.exe rke.exe _Sau khi cài đặt thành công chúng ta có thể kiểm tra version của rke:
bash (non-root)./rke version _ Kết quảINFO[0000] Running RKE version: v1.3.2Cài đặt công cụ kubectl
Chúng ta sẽ thực hiện cài đặt kubectl tại máy tính cá nhân của bạn .
Để có thể access tới cluster Kubernetes chúng ta cần một công cụ đó là kubectl
Cho Linux distro
bash (non-root)curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" _Cho MacOS
bash (non-root)curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl" _Cho Windows
bash (non-root)curl -LO "https://dl.k8s.io/release/v1.22.0/bin/windows/amd64/kubectl.exe"" _Sau khi cài đặt xong chúng ta có thể kiểm tra version của kubectl bằng cách
bash (non-root)kubectl version _ Kết quảClient Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.6", GitCommit:"dff82dc0de47299ab66c83c626e08b245ab19037", GitTreeState:"clean", BuildDate:"2020-07-15T23:30:39Z", GoVersion:"go1.14.4", Compiler:"gc", Platform:"darwin/amd64"}Cài đặt cluster Kubernetes
Chúng ta sẽ thực hiện cách thao tác sau tại máy tính cá nhân của bạn.
Đầu tiên, bạn cần tạo 1 file với tên cluster-kubernetes.yml có nội dung như sau:
Trong đó :
address : Là địa chỉ IP public hoặc nếu không có IP public thì sẽ nhập luôn IP private của các nodes .
internal_address : Là địa chỉ IP private của nodes
user : Là user mà rke sẽ ssh tới để pull các images cũng như up các services của Kuberneste .
ssh_key_path : Là đường dẫn của private key của user đã được define ở trên .
role : Là chỉ định role của node trong Kubernetes mình trong bài này chúng ta sẽ sử dụng chạy cả master và worker cho mỗi node.
cluster-kubernetes.ymlnodes: - address: 10.0.0.2 internal_address: 10.0.0.2 user: userdeploy ssh_key_path: ~/.ssh/id_ed25519 role: [controlplane, worker, etcd] - address: 10.0.0.3 internal_address: 10.0.0.3 user: userdeploy ssh_key_path: ~/.ssh/id_ed25519 role: [controlplane, worker, etcd] - address: 10.0.0.4 internal_address: 10.0.0.4 user: userdeploy ssh_key_path: ~/.ssh/id_ed25519 role: [controlplane, worker, etcd]Sau khi đã tạo xong chúng ta thực thi rke để tạo 1 cụm cluster Kubernetes:
bash (root)./rke up --config cluster-kubernetes.yml _Đợi một lát để rke tiến hành pull các images và up các container . Bạn sẽ nhìn thấy kết quả lệnh chạy cài đặt như sau:
Kết quảINFO[0000] Running RKE version: v1.3.2 INFO[0000] Initiating Kubernetes cluster INFO[0000] [dialer] Setup tunnel for host [10.0.0.4] INFO[0000] [dialer] Setup tunnel for host [10.0.0.2] INFO[0000] [dialer] Setup tunnel for host [10.0.0.3] INFO[0000] Checking if container [cluster-state-deployer] is running on host [10.0.0.2], try #1 INFO[0000] Pulling image [rancher/rke-tools:v0.1.78] on host [10.0.0.2], try #1Sau khi đợi khoảng 10 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:
Kết quảINFO[0349] [addons] Executing deploy job rke-ingress-controller INFO[0359] [ingress] removing default backend service and deployment if they exist INFO[0360] [ingress] ingress controller nginx deployed successfully INFO[0360] [addons] Setting up user addons INFO[0360] [addons] no user addons defined INFO[0360] Finished building Kubernetes cluster successfullySau khi đã hoàn tất sẽ có 1 file kubeconfig được tạo ra dùng để access tới hệ thống Kubernetes là kube_config_cluster-kubernetes.yml.
Thực hiện lệnh export sau:
bash (root)export KUBECONFIG=kube_config_cluster-kubernetes.yml _Kiểm tra danh sách các node bằng lệnh:
bash (root)kubectl get nodes _Kết quả chúng ta thấy 3 node đang ở trạng thái sẵn sàng.
Kết quảNAME STATUS ROLES AGE VERSION 10.0.0.2 Ready controlplane,etcd,worker 5m16s v1.21.6 10.0.0.3 Ready controlplane,etcd,worker 5m16s v1.21.6 10.0.0.4 Ready controlplane,etcd,worker 5m16s v1.21.6Chúng ta kết nối tới máy chủ và kiểm tra các container đang chạy bằng .
bash (root)docker ps _Kết quả chúng ta thấy các container đã chạy
Kết quảCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 14bcc17abbc3 rancher/hyperkube:v1.21.6-rancher1 "/opt/rke-tools/entr…" 14 hours ago Up 30 seconds kube-proxy 7d6cc286aa2a rancher/hyperkube:v1.21.6-rancher1 "/opt/rke-tools/entr…" 14 hours ago Up 30 seconds kubelet c62464f1e272 rancher/hyperkube:v1.21.6-rancher1 "/opt/rke-tools/entr…" 14 hours ago Up 30 seconds kube-scheduler e9746698de69 rancher/hyperkube:v1.21.6-rancher1 "/opt/rke-tools/entr…" 14 hours ago Up 30 seconds kube-controller-manager 9ae338b99b34 rancher/hyperkube:v1.21.6-rancher1 "/opt/rke-tools/entr…" 14 hours ago Up 5 seconds kube-apiserver 9f62bbc38211 rancher/rke-tools:v0.1.78 "/docker-entrypoint.…" 14 hours ago Up 30 seconds etcd-rolling-snapshots 573d0848cdb7 rancher/mirrored-coreos-etcd:v3.4.16-rancher1 "/usr/local/bin/etcd…" 14 hours ago Up 30 seconds etcdCác option trong cluster-kubernetes.yml
Dưới đây là một số option trong manifest cluster-kubernetes.yml:
- Bastion host : Sử dụng trong trường hợp bạn không thể SSH trực tiếp tới các máy chủ mà phải thông qua một Bastion host .
Network: Mặc định RKE sẽ cài đặt network plug-in Canal . Nếu bạn muốn tuỳ chỉnh có thể sử dụng các option dưới đây .
- Canal
- Flannel
- Calico
- Backup ETCD : Mặc định khi cài đặt sẽ không có backup ETCD vì thế nếu bạn muốn backup thì phải thêm cấu trúc YAML bên dưới và files backup sẽ nằm mặc định tại /opt/rke/etcd-snapshots .
- Enable nginx controller : Mặc định khi cài đặt sẽ không có ingress-controller nếu cần bạn có thể add thêm cấu trúc YAML bên dưới .
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 trong thời gian rất ngắn chỉ khoảng 10 phút . Để tối ưu thời gian cho việc cài đặt các bạn có thể sử dụng Ansible để provisioning cho các bước Chuẩn bị và Cài đặt Docker
Chúc các bạn thành công!
Từ khóa » Cài đặt K8s
-
Cài đặt Và Cấu Hình Kubectl | Kubernetes
-
Giới Thiệu Và Cài đặt Kubernetes Cluster
-
Phần 3: Hướng Dẫn Cài đặt Kubernetes - Viblo
-
Kubernetes – Phần 3 – Cài đặt Kubernetes - HỌC CHỦ ĐỘNG
-
Cài đặt Kubernetes Cluster Với Kubeadm - Technology Diver
-
Bài 01. Cài đặt Kubernetes Cluster
-
Kubernetes Là Gì? Cài đặt Kubernetes Trên Ubuntu Server
-
Hướng Dẫn Cài đặt Kubernetes Trên CentOS 7 Tự động Hoá Với Ansible
-
Cài đặt Kubernetes Cluster Image Cài đặt Kubernetes ...
-
K01 - Giới Thiệu Và Cài đặt Kubernetes Cluster - YouTube
-
[#Kubernetes] Hướng Dẫn Cài Đặt Kubernetes Cluster Chi Tiết
-
Phần 2: Cài đặt Kubernetes Xây Dựng Cluster Và Build App Bằng File ...
-
Cài đặt K8s Cluster Trên Ubuntu 16.04 Sử Dụng Công Cụ Kubeadm
-
Cách Cài đặt Kubernetes Cluster Trên CentOS 7 đơn Giản Nhất