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ẽ.
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)
- 2 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à 4 vcpus
- Worker Nodes– 16GB RAM và 8 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à etcd và controlplane. 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