DevOps Kubernetes

Hướng dẫn cài đặt Cluster Kubernetes với Rancher

congdonglinux setup k8s with rancher 2

1. Đôi nét về Rancher RKE

Làm cách nào để sử dụng RKE để triển khai Kubernetes Cluster trên môi trường Production ?. Kubernetes đã có nhiều sức hút và hiện tại đang là một bộ điều phối tiêu chuẩn cho các giải pháp Container Platform. Nếu bạn muốn một công cụ tự động hóa quá trình triển khai các ứng dụng, dịch vụ cho Container thì Kubernetes là một lựa chọn phù hợp với bạn.

Hướng dẫn này sẽ giúp bạn cách để cài đặt Cluster Kubernetes cho môi trường Production. Chúng ta sẽ thiết lập một Cluster 5 Node với Rancher Kubernetes Engine viết tắt là RKE. Đồng thời cũng cài đặt Rancher Chart với Helm, một chương trình quản lý gói cài đặt cho K8s khá mạnh mẽ.

congdonglinux-setup-k8s-with-rancher

2. RKE là gì?

Rancher Kubernetes Engine (RKE) là một bản phân phối Kubernetes cực kỳ đơn giản, dễ dàng và nhanh chóng. Rancher là một nền tảng hỗ trợ xây dựng và quản lý  các Container Platform cho môi trường Production. Nó giúp chúng ta dễ dàng triển khai Kubernetes ở bất kỳ đâu, đáp ứng tốt các yêu của bộ phận IT, DevOps.

3.Chuẩn bị

Đầu tiên, chúng ta cần cài một số công cụ CLI hỗ trợ dùng để truy cập và quản lý Cluster Nodes.

3.1 – kubectl:

### Linux ###
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
kubectl version --client

### macOS ###
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl version --client

3.2 – rke

### Linux ###
curl -s https://api.github.com/repos/rancher/rke/releases/latest | grep download_url | grep amd64 | cut -d '"' -f 4 | wget -qi -
chmod +x rke_linux-amd64
sudo mv rke_linux-amd64 /usr/local/bin/rke
rke --version

### macOS ###
curl -s https://api.github.com/repos/rancher/rke/releases/latest | grep download_url | grep darwin-amd64 | cut -d '"' -f 4 | wget -qi -
chmod +x rke_darwin-amd64
sudo mv rke_darwin-amd64 /usr/local/bin/rke
rke --version

3.3 –  helm

### Helm 3 ###
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

4. Cài đặt Kubernetes với RKE

Chúng ta sẽ có 5 Nodes:

  • 3 Master Nodes – etcd và control plane ( 3 node dùng cho việc HA)
  • Worker nodes – Dùng để Scale các Wordload của chúng ta.

Tài nguyên máy chủ:

  • Master Nodes – 8GB  RAM và vcpus
  • Worker Nodes– 16GB  RAM và vpcus

Lưu ý: Nếu làm lab thì dùng một hoặc hai server cũng dùng được.

Hệ điều hành được RKE hỗ trợ

RKE chạy trên hầu hết mọi hệ điều hành Linux có cài đặt Docker như:

  • Red Hat Enterprise Linux
  • Oracle Enterprise Linux
  • CentOS Linux
  • Ubuntu
  • RancherOS

Bước 1: Cập nhật hệ thống Linux

Bước đầu tiên là cập nhật các máy chủ Linux dùng để xây dựng Cluster. Tuỳ vào OS mà chọn command phù hợp bên dưới.

### CentOS ###
sudo yum -y update
sudo reboot

### Ubuntu / Debian ###
sudo apt-get update
sudo apt-get upgrade
sudo reboot

Bước 2: Tạo rke user

Nếu bạn sử dụng hệ điều hành Red Hat Enterprise Linux, Oracle Enterprise Linux hoặc CentOS, bạn sẽ không thể sử dụng user Root để cài đặt. Vì vậy, chúng ta sẽ cần tạo một User mới, ví dụ “rke” dùng cho việc triển khai

Tạo User bằng lệnh sau:

Đăng nhập vào mỗi node của Cluster và tạo User.

sudo useradd -m rke
sudo passwd rke
sudo usermod -s /bin/bash rke

Bật quyền truy cập sudo mà không cần nhập password:

$ sudo vim /etc/sudoers.d/rke
rke  ALL=(ALL:ALL) NOPASSWD: ALL

Copy public key của SSH tới file ~/.ssh/authorized_keys của tất cả các node

for i in rke-master-01 rke-master-02 rke-master-03 rke-worker-01 rke-worker-02; do
  ssh-copy-id rke@$i
done

Xác nhận đăng nhập trên các Node:

$ ssh rke@rke-master-01
Warning: Permanently added 'rke-master-01,x.x.x.x' (ECDSA) to the list of known hosts.
[rke@rke-master-01 ~]$ sudo su - # No password prompt
Last login: Mon Jan 27 21:28:53 CET 2020 from y.y.y.y on pts/0
[root@rke-master-01 ~]# exit
[rke@rke-master-01 ~]$ exit
logout
Connection to rke-master-01 closed.

Bước 3: Bật các Module trên Kernel

Đăng nhập vào mỗi host và bật các Kernel module cần thiết để chạy Kubernetes.

for module in br_netfilter ip6_udp_tunnel ip_set ip_set_hash_ip ip_set_hash_net iptable_filter iptable_nat iptable_mangle iptable_raw nf_conntrack_netlink nf_conntrack nf_conntrack_ipv4   nf_defrag_ipv4 nf_nat nf_nat_ipv4 nf_nat_masquerade_ipv4 nfnetlink udp_tunnel veth vxlan x_tables xt_addrtype xt_conntrack xt_comment xt_mark xt_multiport xt_nat xt_recent xt_set  xt_statistic xt_tcpudp;
     do
       if ! lsmod | grep -q $module; then
         echo "module $module is not present";
         sudo modprobe $module
       fi;
done

Bước 4: Tắt swap và thay đổi sysctl.

Khuyến nghị của Kubernetes là vô hiệu hóa swap và thêm vào một số giá trị của sysctl.

Swap:

$ sudo vim /etc/fstab
# Add comment to swap line
$ sudo swapoff -a

Sysctl:

$ sudo tee -a /etc/sysctl.d/99-kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

$ sudo sysctl --system

Xác nhận lại việc tắt Swap

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           7.6G        180M        6.8G        8.5M        633M        7.2G
Swap:            0B          0B          0B

Bước 5: Cài đặt Docker

Kiểm tra lại danh sách Docker được Rancher hỗ trợ tại: https://github.com/rancher/install-docker

Bạn có thể cài đặt các phiên bản docker với scripts bên dưới đây:

Docker Version Install Script
20.10 curl https://releases.rancher.com/install-docker/20.10.sh | sudo sh
19.03 curl https://releases.rancher.com/install-docker/19.03.sh |sudo sh
18.09 curl https://releases.rancher.com/install-docker/18.09.sh |sudo sh
18.06 curl https://releases.rancher.com/install-docker/18.06.sh |sudo sh
17.03 curl https://releases.rancher.com/install-docker/17.03.sh |sudo sh

Hoặc bạn có thể làm theo hướng dẫn cài đặt docker hoặc sử dụng scripts cài đặt của Rancher để cài đặt Docker cho phù hợp.

Cài đặt bản mới nhất của Docker CE với scripts sau:

curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Tôi sẽ cài đặt phiên bản được hỗ trợ mới nhất bằng cách sử dụng scripts của Rancher:

curl https://releases.rancher.com/install-docker/20.10.sh | sudo bash -

Start và enable docker service:

sudo systemctl enable --now docker

Xác nhận lại version Docker:

$ sudo docker version --format '{{.Server.Version}}'
20.10.8

Thêm user rke vào Group của Docker

$ sudo usermod -aG docker rke
$ id rke
uid=1000(rke) gid=1000(rke) groups=1000(rke),994(docker)

Bước 6: Mở Port của tường lửa

Tham khảo tất cả các port tại trang chủ: requirements page

Firewalld TCP ports:

for i in 22 80 443 179 5473 6443 8472 2376 8472 2379-2380 9099 10250 10251 10252 10254 30000-32767; do
    sudo firewall-cmd --add-port=${i}/tcp --permanent
done
sudo firewall-cmd --reload

Firewalld UDP ports:

for i in 8285 8472 4789 30000-32767; do
   sudo firewall-cmd --add-port=${i}/udp --permanent
done

Bước 7: Cho phép SSH TCP Forwarding

Bạn cần bật chuyển tiếp TCP trên toàn hệ thống máy chủ SSH của mình.

Mở tệp cấu hình ssh tại /etc/ssh/sshd_config:

$ sudo vi /etc/ssh/sshd_config
AllowTcpForwarding yes

Khởi động lại dịch vụ ssh sau khi thực hiện thay đổi.

### CentOS ###
sudo systemctl restart sshd

### Ubuntu ###
sudo systemctl restart ssh

Bước 8: Tạo tệp cấu hình cụm RKE.

RKE sử dụng một file là “cluster.yml” để cấu hình và xác nhận Node nào với 

Tải về file cấu hình cluster.yml

https://gitlab.com/congdonglinux/setup-k8s-rke/-/raw/main/cluster.yml

# If you intened to deploy Kubernetes in an air-gapped environment,
# please consult the documentation on how to configure custom RKE images.
nodes:
- address: 192.168.0.100
  role:
  - controlplane
  - etcd
  user: ubuntu
- address: 192.168.0.101
  role:
  - controlplane
  - etcd
  user: ubuntu

- address: 192.168.0.111
  role:
- worker
  user: ubuntu
  - address: 192.168.0.112
  role:
  - worker
  user: ubuntu

services:
  etcd:
    snapshot: true
    retention: 24h
    creation: 6h
    backup_config:
      interval_hours: 12
      retention: 6
  kube-api:
    service_cluster_ip_range: 10.43.0.0/16
    service_node_port_range: 30000-32767
    pod_security_policy: false
  kube-controller:
    cluster_cidr: 10.42.0.0/16
    service_cluster_ip_range: 10.43.0.0/16
  kubelet:
    cluster_domain: cluster.local
    cluster_dns_server: 10.43.0.10
    fail_swap_on: false
    extra_args:
      max-pods: 150
network:
plugin: calico
authentication:
strategy: x509
authorization:
mode: rbac
ingress:
provider: "nginx"
options:
use-forwarded-headers: "true" 
dns:
provider: coredns 



Trong cấu hình của tôi, các Node Master chỉ có roles là etcdcontrolplane. Nhưng chúng ta có thể bổ sung thêm roles Worker nếu muốn như sau:

role: [controlplane, etcd, worker]

Bước 9: Triển khai Cluster Kubernetes với RKE

Lệnh này giả sử tệp cluster.yml nằm trong cùng thư mục với nơi bạn đang chạy lệnh. Nếu sử dụng một tên tệp khác, hãy chỉ định nó như dưới đây.

$ rke up --config ./cluster.yml

Đảm bảo thiết lập không hiển thị bất kỳ lỗi nào trong Output:

......
INFO[0181] [sync] Syncing nodes Labels and Taints       
INFO[0182] [sync] Successfully synced nodes Labels and Taints 
INFO[0182] [network] Setting up network plugin: canal   
INFO[0182] [addons] Saving ConfigMap for addon rke-network-plugin to Kubernetes 
INFO[0183] [addons] Successfully saved ConfigMap for addon rke-network-plugin to Kubernetes 
INFO[0183] [addons] Executing deploy job rke-network-plugin 
INFO[0189] [addons] Setting up coredns                  
INFO[0189] [addons] Saving ConfigMap for addon rke-coredns-addon to Kubernetes 
INFO[0189] [addons] Successfully saved ConfigMap for addon rke-coredns-addon to Kubernetes 
INFO[0189] [addons] Executing deploy job rke-coredns-addon 
INFO[0195] [addons] CoreDNS deployed successfully..     
INFO[0195] [dns] DNS provider coredns deployed successfully 
INFO[0195] [addons] Setting up Metrics Server           
INFO[0195] [addons] Saving ConfigMap for addon rke-metrics-addon to Kubernetes 
INFO[0196] [addons] Successfully saved ConfigMap for addon rke-metrics-addon to Kubernetes 
INFO[0196] [addons] Executing deploy job rke-metrics-addon 
INFO[0202] [addons] Metrics Server deployed successfully 
INFO[0202] [ingress] Setting up nginx ingress controller 
INFO[0202] [addons] Saving ConfigMap for addon rke-ingress-controller to Kubernetes 
INFO[0202] [addons] Successfully saved ConfigMap for addon rke-ingress-controller to Kubernetes 
INFO[0202] [addons] Executing deploy job rke-ingress-controller 
INFO[0208] [ingress] ingress controller nginx deployed successfully 
INFO[0208] [addons] Setting up user addons              
INFO[0208] [addons] no user addons defined              
INFO[0208] Finished building Kubernetes cluster successfully

Bước 10: Truy cập CLuster Kubernetes

Là một phần của quá trình tạo Kubernetes, tệp kubeconfig đã được tạo và ghi tại kube_config_cluster.yml.

Đặt biến cho KUBECONFIG

export KUBECONFIG=./kube_config_cluster.yml

Kiểm tra danh sách Nodes trong Cluster

$ kubectl get nodes        
NAME             STATUS   ROLES               AGE     VERSION
rke-master-01    Ready    controlplane,etcd   16m     v1.17.0
rke-master-02    Ready    controlplane,etcd   16m     v1.17.0
rke-master-03    Ready    controlplane,etcd   16m     v1.17.0
rke-worker-01    Ready    worker              6m33s   v1.17.0
rke-worker-02    Ready    worker              16m     v1.17.0

Bạn có thể sao chép tệp kube_config_cluster.yml này vào $HOME/.kube/config nếu bạn không có bất kỳ cụm kubernetes nào khác.

Kết bài

Như vậy, chúng ta vừa đi qua tất cả các bước để có thể cài đặt được Cluster Kuberntes trên môi trường Production. Chúc các bạn thành công.

        Nguồn:                                     Truy Cập Diễn Đàn Ngay

congdonglinux.com                            forum.congdonglinux.com

Mã Bài Viết: 897411

Đăng ký liền tay Nhận Ngay Bài Mới

Subscribe ngay

Cám ơn bạn đã đăng ký !

Lỗi đăng ký !

Add Comment

Click here to post a comment

Đăng ký liền tay
Nhận Ngay Bài Mới

Subscribe ngay

Cám ơn bạn đã đăng ký !

Lỗi đăng ký !