- vừa được xem lúc

[K8S] - Phần 2: Cài đặt một cụm cluster Kubernetes bằng RKE.

0 0 27

Người đăng: Hưng Nguyễn Viết

Theo Viblo Asia

Recap

Trong phần trước tớ đã giới thiệu cho các bạn về kiến trúc cũng như các thành phần cơ bản của một cụm K8S, hôm nay chúng ta sẽ bắt đầu setup một cụm cluster nhé.

Prepare.

Ở đây mình dùng máy host chạy ubuntu và tạo các máy ảo, các bạn có thể dùng vmware, vitualbox, multipass... để tạo các máy ảo này và cài trên đó docker,

ở đây để thuận tiện mình sẽ setup nhanh các node bằng multipass với các command như sau.

(Để chi tiết về cách sử dụng multipass mời bạn ghé thăm series linux, bài viết về multipass để biết cách sử dụng cơ bản nhé.)

Các bạn cần chạy multipass networks để chỉ định đúng network của mình tạo cho các máy ảo nhé,

➜ ~ multipass networks
Name Type Description
br-enp4s0 bridge Network bridge
br-enx00e04c867 bridge Network bridge with enx00e04c867ae3
docker0 bridge Network bridge
docker_gwbridge bridge Network bridge
enp4s0 ethernet Ethernet device
enx00e04c867ae3 ethernet Ethernet device
mpbr0 bridge Network bridge for Multipass
  1. Master Node: Ram: 4GB, CPU: 2, Disk: 40GB
  2. Worker Node: Ram: 4GB, CPU: 2, Disk: 40GB
multipass launch docker --n master --network br-enp4s0
multipass launch docker --n worker --network br-enp4s0

Thêm user ssh youngcoder (Chúng ta sẽ cài đặt cụm cluster k8s thông qua user này.):

multipass shell master ## command ssh vào root, khi dùng comman này chúng ta sẽ vào tài khoản mặc định là ubuntu
sudo -i
adduser youngcoder ## ở phần này các bạn sẽ điền các thông tin của các bạn muốn tạo user vào nhé
adduser youngcoder sudo
adduser youngcoder docker ## mặc định với image docker của multipass, chúng ta sẽ có sẵn docker, việc này khá thuận tiện cho việc lab

Chuyển sang tài khoản mới tạo: su youngcoder tạo ssh key:

mkdir .ssh
cd .ssh
vi authorized_keys
=> copy public key của bạn vào file này.

chỉnh sửa các thông tin trong file: vi /etc/ssh/sshd_config

PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2

Để xem các thông tin node các bạn dùng lệnh, multipass info master (hoặc ip a nếu ở trong )

master: 10.235.223.148

worker: 10.235.223.11

RKE:

Ở đây mình sử dụng rke version: v1.3.13-rc4 (Các bạn cũng có thể sử dụng các version khác tại đây: https://github.com/rancher/rke/releases/tag/v1.3.13-rc4)

mv rke_linux-amd64 rke
chmod +x rke
rke --version

Install

Sau khi bước chuẩn bị hoàn thành, các bạn đổi tên file rke file trên thành rke và kiểm tra version của rancher đã đúng chưa nhé.

Các setup của mình như sau.

➜ rancher ./rke config --name cluster.yml
WARN[0000] This is not an officially supported version (v1.3.13-rc4) of RKE. Please download the latest official release at https://github.com/rancher/rke/releases [+] Cluster Level SSH Private Key Path [~/.ssh/id_rsa]: /home/youngcoder/.ssh/key
[+] Number of Hosts [1]: 2
[+] SSH Address of host (1) [none]: 10.235.223.148
[+] SSH Port of host (1) [22]: [+] SSH Private Key Path of host (10.235.223.148) [none]: /home/youngcoder/.ssh/key
[+] SSH User of host (10.235.223.148) [ubuntu]: youngcoder
[+] Is host (10.235.223.148) a Control Plane host (y/n)? [y]: y
[+] Is host (10.235.223.148) a Worker host (y/n)? [n]: y
[+] Is host (10.235.223.148) an etcd host (y/n)? [n]: y
[+] Override Hostname of host (10.235.223.148) [none]: [+] Internal IP of host (10.235.223.148) [none]: [+] Docker socket path on host (10.235.223.148) [/var/run/docker.sock]: [+] SSH Address of host (2) [none]: 10.235.223.11
[+] SSH Port of host (2) [22]: [+] SSH Private Key Path of host (10.235.223.11) [none]: /home/youngcoder/.ssh/key
[+] SSH User of host (10.235.223.11) [ubuntu]: youngcoder
[+] Is host (10.235.223.11) a Control Plane host (y/n)? [y]: n
[+] Is host (10.235.223.11) a Worker host (y/n)? [n]: y
[+] Is host (10.235.223.11) an etcd host (y/n)? [n]: n
[+] Override Hostname of host (10.235.223.11) [none]: [+] Internal IP of host (10.235.223.11) [none]: [+] Docker socket path on host (10.235.223.11) [/var/run/docker.sock]: [+] Network Plugin Type (flannel, calico, weave, canal, aci) [canal]: calico
[+] Authentication Strategy [x509]: [+] Authorization Mode (rbac, none) [rbac]: [+] Kubernetes Docker image [rancher/hyperkube:v1.23.8-rancher1]: [+] Cluster domain [cluster.local]: [+] Service Cluster IP Range [10.43.0.0/16]: [+] Enable PodSecurityPolicy [n]: [+] Cluster Network CIDR [10.42.0.0/16]: [+] Cluster DNS Service IP [10.43.0.10]: [+] Add addon manifest URLs or YAML files [no]:

khi tạo xong các lệnh này các bạn sẽ nhận đk 1 file cluster.yml chứa toàn bộ config mà chúng ta setup ở phía trên.

Nhiều bạn thắc mắc là khi chúng ta tạo với số lượng note lớn thì việc nhập tay từng node sẽ ko khả thi => đúng vậy, khi đó chúng ta hoàn toàn có thể triển khai một file cluster.yml dựa theo template sẵn có.

Việc còn lại rất đơn giản, bạn chỉ cần chạy ./rke up thôi.

Quá trình cài đặt cụm cluster sẽ diễn ra một cách hoàn toàn tự động, lúc này bạn hãy dành chút thời gian like, cmt và share bài viết này để tớ có thêm chút động lực cho những phần tiếp theo nhé ^.^

Quá trình setup hoàn thành, bạn sẽ nhậ được thông báo INFO[0229] Finished building Kubernetes cluster successfully và một file kube_config_cluster.yml để connect tới cụm cluster của mình.

Connect

Để connect tới cụm K8S vừa cài đặt, chúng ta dùng kubectl, các bạn tìm kiếm phiên bản phù hợp với hệ điều hành của mình nhé (bạn cũng có thể cài đặt kubectl trên master node).

Mình dùng ubuntu nên sẽ setup như sau.

curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl

sau đó các bạn copy toàn bộ file kube_config_cluster.yml vào file .kube/config

Kiểm tra version : kubectl version

➜ ~ kubectl version Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.4", GitCommit:"b695d79d4f967c403a96986f1750a35eb75e75f1", GitTreeState:"clean", BuildDate:"2021-11-17T15:48:33Z", GoVersion:"go1.16.10", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.8", GitCommit:"a12b886b1da059e0190c54d09c5eab5219dd7acf", GitTreeState:"clean", BuildDate:"2022-06-16T05:51:36Z", GoVersion:"go1.17.11", Compiler:"gc", Platform:"linux/amd64"}
➜ rancher kubectl get ns NAME STATUS AGE
default Active 16m
ingress-nginx Active 15m
kube-node-lease Active 16m
kube-public Active 16m
kube-system Active 16m 

Summary

Vậy là mình đã hướng dẫn các bạn tạo 1 cụm cluster cơ bản, nếu có bất kỳ vấn đề gì, các bạn hãy cmt tớ sẽ hỗ trợ các bạn nhé.

Trong bài tiếp theo tớ sẽ hướng dẫn các bạn setup một application cơ bản và loadbalance các application này.

Hẹn gặp lại các bạn ở bài viết tiếp theo.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 374

- vừa được xem lúc

Phần 1: Giới thiệu về Kubernetes

Kubernetes là gì. Trang chủ: https://kubernetes.io/. Ai cần Kubernetes.

0 0 80

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 1- Lịch sử)

1. Vì sao nên sử dụng. . .

0 0 89

- vừa được xem lúc

Docker - những kiến thức cơ bản phần 1

Giới thiệu. Nếu bạn đang làm ở một công ty công nghệ thông tin, chắc rằng bạn đã được nghe nói về Docker.

0 0 65

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 2 - Dockerfile)

1. Mở đầu.

0 0 53

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 3: Docker-compose)

1. Mở đầu. . .

0 0 106