Cài Đặt Cluster Kubernetes Sử Dụng Rke Là Gì, Remote Keyless Entry System

Trong kiến trúc Microservices tân tiến, những ứng dụng được phân tán khắp mọi nơi, từ nhiều Data Center Private khác nhau cũng như từ những Cloud Infrastructure Public của nhiều nhà phân phối như Google, Amazon, Microsoft … Các công ty thời nay sử dụng phối hợp những hạ tầng khác nhau, từ hạ tầng của chính bản thân mình và hạ tầng của bên ngoài để nâng cao độ linh động, tùy biến, giảm sự phụ thuộc vào và hạ thấp rủi ro đáng tiếc khi phải sử dụng một hạ tầng duy nhất. Kubernetes ( viết tắt k8s ) là một nền tảng được cho phép quản trị những microservice rất hiệu suất cao, được rất nhiều những hãng tiến hành trên Public Cloud của mình. Việc sử dụng k8s trên Public Cloud có điểm rất tiện nghi ở tập trung chuyên sâu chính vào việc tiến hành ứng dụng, không cần chăm sóc nhiều đến những thành phần của k8s. Nhưng đó cũng chính là điểm bất lợi nếu k8s được tiến hành trên chính hạ tầng DC của tổ chức triển khai, khi người quản trị phải cần thêm kiến thức và kỹ năng quản trị k8s để làm chủ được mạng lưới hệ thống hạ tầng cho những ứng dụng Microservice của mình. Các kiến thức và kỹ năng quản trị chi tiết cụ thể k8s sẽ giúp người quản trị hạ tầng hiểu đúng chuẩn những thành phần của k8s hoạt động giải trí như thế nào, từ đó đưa ra những giải pháp phong cách thiết kế, thiết kế xây dựng k8s hiệu suất cao nhất cho những ứng dụng Microservice .Bạn đang xem : Cài Đặt cluster kubernetes sử dụng rke là gì, remote keyless entry systemMô hình hoạt động giải trí cơ bản của k8s sẽ gồm có 2 thành phần chính : đó là master node và worker node. Master node là thành phần điểu khiển, quản trị, phân phối ứng dụng cho những worker chạy còn worker node là thành phần tiếp đón việc chạy ứng dụng. Điểm cực kỳ mạnh của k8s đó chính là với số ít số lượng master node với thông số kỹ thuật cơ bản hoàn toàn có thể quản trị hàng nghìn số lượng worker node, tiếp đón việc tiến hành hàng chục nghìn ứng dụng microservice nhanh gọn, mềm mại và mượt mà .

Trong thiết kế k8s cho môi trường Production, tiêu chí sẵn sàng luôn là một trong những tiêu chí quan trọng nhất. Vì vậy số lượng master và số lượng worker node luôn phải là con số lớn hơn 1. Công thức để tính ra số lượng master khá đơn giản, số lượng luôn là số lẻ, vì các thuật toán bầu chọn cần có kết quả quá bán, nếu là số chẵn, ví dụ như 2 thì việc bầu chọn sẽ xảy ra trường hợp 50/50, tức là không quá bán, tức là không ra được quyết định. Như vậy số lượng master node nên là số 3, 5, 7… Với số lượng 3, 1 node master có thể bị down và cả cụm master chung vẫn có thể hoạt động được. Số lượng 5 là lý tưởng nhất, còn 7 thì là dư thừa không cần thiết. Trong thực tế triển khai thật, 03 master node là số lượng chuẩn, phù hợp với chi phí tài nguyên của tổ chức.

Để quản trị với K8s, việc đầu tiên chúng ta phải cài đặt được K8s lên. Có nhiều cách để làm, một trong những cách đơn giản để làm là sử dụng công cụ kubeadm. Công cụ này là production-ready, nghĩa là sử dụng trong quá trình cài đặt cho môi trường chạy sản phẩm thật. Dưới đây là mô hình và cách thức triển khai k8s cho môi trường Production nằm trên trung tâm dữ liệu riêng của một công ty.

Tóm tắt nội dung:

Mô hình triển khaiTạo máy chủ bằng TerraformCài đặt Master Node, Load BalancerCài đặt Worker NodeTesting1. Mô hình triển khai01 load balancer làm nhiều vụ load balance cho các máy chủ master của k8s. Trong bài này load balancer là nginx. Trong môi trường chạy thật load balancer có thể là F5,…03 máy chủ master (controller). 03 master để đảm bảo môi trường HA cho master03 máy chủ worker (node). 03 worker để ứng dụng có thể chạy phân tải
*
*
Mô hình triển khaiTạo sever bằng TerraformCài đặt Master Node, Load BalancerCài đặt Worker NodeTesting1. Mô hình triển khai01 load balancer làm nhiều vụ load balance cho những sever master của k8s. Trong bài này load balancer là nginx. Trong thiên nhiên và môi trường chạy thật load balancer hoàn toàn có thể là F5, … 03 sever master ( controller ). 03 master để bảo vệ môi trường tự nhiên HA cho master03 sever worker ( node ). 03 worker để ứng dụng hoàn toàn có thể chạy phân tảiTerraform có 3 bước chính để chạyterraform initterraform planterraform applyVậy là những bước tạo máy ảo đã xong. Giờ đến bước cài Kubernetes .2.2. Cài đặt K8s HACài đặt các gói liên quan docker, kubeadm, kubelet, kubectl2.2. Cài đặt K8s HACài đặt những gói tương quan docker, kubeadm, kubelet, kubectlTruy cập ssh vào 06 máy ảo master và node, bằng câu lệnh mẫu như saugcloud compute ssh master01và thiết lập tổng thể gói sau trên 06 máy{ sudo apt-get update và và apt-get install curl apt-transport-https ca-certificates curl software-properties-common – ycurl – fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add – sudo add-apt-repository ” deb https://download.docker.com/linux/ubuntu USD ( lsb_release – cs ) stable ” curl – s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add – cat deb https://apt.kubernetes.io/ kubernetes-xenial mainEOFsudo apt-get updatesudo apt-get install docker-ce kubelet kubeadm kubectl – y } Cài đặt và thông số kỹ thuật Load balancer bằng nginxVì có 03 máy master nên tất cả chúng ta cần một load balancer để phân tải vào 03 máy master này. Chúng ta sẽ sử dụng Nginx để làm load balancer trong bài viết này .Ssh vào lb01 :gcloud compute ssh lb01Cài đặt nginx{ sudo apt-get install – y nginxsudo systemctl enable nginx } Tiếp theo tạo file thông số kỹ thuật nginx{ sudo mkdir – p / etc / nginx / tcpconf.dsudo vi / etc / nginx / nginx.conf } Thêm dòng này vào cuối file nginx.confinclude / etc / nginx / tcpconf. d / * ; Giờ tất cả chúng ta lấy địa chỉ IP Private ( không cần sử dụng IP Public ) của 03 máy master, tất cả chúng ta hoàn toàn có thể sử dụng câu lệnh ở dưới, được chạy trên máy thao tác ( máy tính / desktop ) để lấy ra thông tin IP Private :gcloud compute instances list | grep masterChúng ta chạy lệnh này để thông số kỹ thuật load balancer của nginx cho 03 máy mastercat stream { upstream kubernetes { server 10.140.0.56 : 6443 ; server 10.140.0.52 : 6443 ; server 10.140.0.54 : 6443 ; } server { listen 6443 ; listen 443 ; proxy_pass kubernetes ; } } EOFLoad lại file thông số kỹ thuật của nginxsudo nginx – s reloadThử kiểm tra load balancer đã hoạt động giải trí tốt chưa bằng câu lệnhnc – v 10.140.0.59 443 trong đó 10.140.0.59 là địa chỉ IP Private của Load Balancer .Xem thêm : Cách Sửa Lỗi Mci Error Khi Chèn File Nhạc Trong Powerpoint 2003, 2007, 2010Nếu tất cả chúng ta thấy output là Succeed tức là đã thành công xuất sắc, load balancer nginx đã forward được request vào những máy master .2.3. Cấu hình các master nodeChọn một master node đầu tiên để khởi tạo2.3. Cấu hình những master nodeChọn một master node tiên phong để khởi tạoChúng ta chọn luôn master node có tên là master01 để khởi tạo cụm master node .Câu lệnh như sau :sudo kubeadm init — control-plane-endpoint “ 10.140.0.59 : 6443 ” — upload-certsTrong đó 10.140.0.59 là IP Private của Load Balancer Nginx .

Output sẽ dạng như sau:

… mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/configYou should now deploy a pod network to the cluster.Run “kubectl apply -f .yaml” with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/You can now join any number of the control-plane node running the following command on each as root:kubeadm join 10.140.0.59:6443 –token 7kay49.506yr6xrnbyxxxxx \ –discovery-token-ca-cert-hash sha256:96a61d3463af4a31d4f97681f43dcf85adb0b73f889a01c8fc4a831bcedxxxxx \ –control-plane –certificate-key 155faf6ee07c34310b27f7a62d708731e5e5072a176e3fc6169cf14xxxxxxPlease note that the certificate-key gives access to cluster sensitive data, keep it secret!As a safeguard, uploaded-certs will be deleted in two hours; If necessary, you can use”kubeadm init phase upload-certs –upload-certs” to reload certs afterward.Then you can join any number of worker nodes by running the following on each as root:kubeadm join 10.140.0.59:6443 –token 7kay49.506yr6xrnbyjgku3 \ –discovery-token-ca-cert-hash sha256:96a61d3463af4a31d4f97681f43dcf85adb0b73f889a01c8fc4a831bxxxxxNote: Lưu thông tin thật kỹ để sử dụng join các master và worker node vào cụm cluster

Như vậy tức bước khởi tạo master node tiên phong đã thành công xuất sắc .Giờ thông số kỹ thuật để thao tác được với kubectl. Chúng ta chạy kubectl ngay trên master01. Câu lệnh như sau :mkdir – p USD HOME /. kubesudo cp – i / etc / kubernetes / admin.conf USD HOME /. kube / configsudo chown USD ( id – u ) : USD ( id – g ) USD HOME /. kube / configCài đặt network cho k8sChạy lệnh này trên máy master01kubectl apply – f “ https://cloud.weave.works/k8s/net?k8s-version=$ ( kubectl version | base64 | tr – d ‘ \ n ’ ) ” Outputserviceaccount / weave-net created clusterrole.rbac.authorization.k8s.io/weave-net created clusterrolebinding.rbac.authorization.k8s.io/weave-net created role.rbac.authorization.k8s.io/weave-net created rolebinding.rbac.authorization.k8s.io/weave-net created daemonset.apps/weave-net createdKiểm tra lại xem đã thực sự chạy chưa, tất cả chúng ta sử dụng câu lệnhkubectl get pod – n kube-systemNếu output như ở dưới thì quy trình setup network và master đã chạy tốt .NAME READY STATUS RESTARTS AGEcoredns-6955765f44-4n2ms 1/1 Running 0 6 m20scoredns – 6955765 f44 – 5 pd8r 1/1 Running 0 6 m20setcd – master01 1/1 Running 0 6 m26skube – apiserver-master01 1/1 Running 0 6 m26skube – controller-manager-master01 1/1 Running 0 6 m26skube – proxy-k59hx 1/1 Running 0 6 m20skube – scheduler-master01 1/1 Running 0 6 m26sweave – net-lh6hb 2/2 Running 0 39 sCài đặt 02 master node còn lạiSsh vào từng máy master còn lại để chạy câu lệnh ở dưới :sudo kubeadm join 10.140.0.59 : 6443 — token 7 kay49. 506 yr6xrnbyxxxxx \ — discovery-token-ca-cert-hash sha256 : 96 a61d3463af4a31d4f97681f43dcf85adb0b73f889a01c8fc4a831bcedxxxxx \ — control-plane — certificate-key 155 faf6ee07c34310b27f7a62d708731e5e5072a176e3fc6169cf14040xxxxxSau khi chạy xong trên 02 master node rồi, quay lại master01 để kiểm tra xem master đã lên chưamaster01 : ~ $ kubectl get nodeNAME STATUS ROLES AGE VERSIONmaster01 Ready master 13 m v1. 17.0 master02 Ready master 114 s v1. 17.0 master03 Ready master 57 s v1. 17.0 Như vậy là những master node đều đã chạy thành công xuất sắc .2.4. Cấu hình các worker node2.4. Cấu hình những worker node

Cấu hình worker node bằng kubeadm thật sự đơn giản. Chúng ta chỉ cần thực hiện câu lệnh ở dưới đây trên từng máy node01, node02, node03 là xong

sudo kubeadm join 10.140.0.59 : 6443 — token 7 kay49. 506 yr6xrnbyxxxxx \ — discovery-token-ca-cert-hash sha256 : 96 a61d3463af4a31d4f97681f43dcf85adb0b73f889a01c8fc4a831bcedxxxxxOutput thành công xuất sắc sẽ trông như sau :

master01:~$ kubectl get nodesNAME STATUS ROLES AGE VERSIONmaster01 Ready master 21m v1.17.0master02 Ready master 9m23s v1.17.0master03 Ready master 8m26s v1.17.0node01 Ready 88s v1.17.0node02 Ready 87s v1.17.0node03 Ready 88s v1.17.0Các trạng thái ghi là Ready, tức là đã thành công. Giờ còn bước cuối là kiểm thử xem chúng ta có triển khai được ứng dụng vào cụm k8s hay không.

3. Test3. Test

Ở trên máy master01, chúng ta chạy các câu lệnh sau:

Test DeploymentTest Deploymentkubectl create deployment nginx — image = nginxCheck lạikubectl get pods – l app = nginxOutputNAME READY STATUS RESTARTS AGEnginx-554b9c67f9-vt5rn 1/1 Running 0 10 sTest Port ForwadingPOD_NAME = $ ( kubectl get pods – l app = nginx – o jsonpath = ” {. items < 0 >. metadata.name } ” ) kubectl port-forward $ POD_NAME 8080 : 80 và Output

Forwarding from 127.0.0.1:8080 -> 80 Forwarding from :8080 -> 80Tạo request bằng curl

curl — head http://127.0.0.1:8080OutputHTTP / 1.1 200 OKServer : nginx / 1.17.3 Date : Sat, 14 Sep 2019 21:10:11 GMTContent-Type : text / htmlContent-Length : 612L ast – Modified : Tue, 13 Aug 2019 08:50:00 GMTConnection : keep-aliveETag : ” 5 d5279b8 – 264 ” Accept-Ranges : bytesTest Logskubectl logs $ POD_NAMEOutput

127.0.0.1 – – <14/Sep/2019:21:10:11 +0000> “HEAD / HTTP/1.1” 200 0 “-” “curl/7.52.1” “-“Test Execkubectl exec -ti $POD_NAME — nginx -vOutput

nginx version : nginx / 1.17.3 Test Serviceskubectl expose deployment nginx — port 80 — type NodePortXem giá trị của Node Port bằng lệnhNODE_PORT = $ ( kubectl get svc nginx \ — output = jsonpath = ‘ { range. spec.ports < 0 > } {. nodePort } ‘ ) EXTERNAL_IP = $ { IP của sontn-node01 } curl – I http://$ { EXTERNAL_IP } : USD { NODE_PORT } Output

HTTP/1.1 200 OKServer: nginx/1.17.3Date: Sat, 14 Sep 2019 21:12:35 GMTContent-Type: text/htmlContent-Length: 612Last-Modified: Tue, 13 Aug 2019 08:50:00 GMTConnection: keep-aliveETag: “5d5279b8-264″Accept-Ranges: bytesNhư vậy chúng ta đã cài đặt và triển khai được ứng dụng vào cụm kubernetes HA bằng công cụ kubeadm cho môi trường Production. Qua việc triển khai, chúng ta đã hiểu và nắm bắt được thành phần cơ bản và quan trọng nhất của k8s, đó chính là master node và worker. Giờ là lúc các bạn có thể tự tin deploy, quản trị hàng nghìn ứng dụng của mình trên kubernetes được rồi đấy. Nếu các bạn thấy bài viết hữu ích, xin mời các bạn Like và Share bài viết nhé. Cảm ơn các bạn nhiều!

ĐÁNH GIÁ post
Bài viết liên quan

Tư vấn miễn phí (24/7) 094 179 2255