Chào mọi người, lại là mình đây. Hôm nay chúng ta cùng tìm hiểu một vài khái niệm về Kubernetes và cách khởi tạo một Kubernetes cluster hoàn chỉnh ở local với VirtualBox, Vagrant và Kubectl (go)
Tổng quan
Contents
Kubernetes là gì
Kubernetes (hoặc k8s) là một nền tảng mã nguồn mở, sử dụng để tự động hoá việc quản lý, scaling và triển khai ứng dụng dưới dạng container hay còn gọi là Container orchestration engine. Kubernetes giúp chúng ta loại bỏ rất nhiều các quy trình thủ công liên quan đến việc triển khai và mở rộng các containerized applications.
Đang xem: Kubernetes là gì
Kubernetes có thể gọi tắt là k8s – tức là bắt đầu bằng chữ “k”, giữa là 8 ký tự và cuối là chữ “s”

Nodes
Kubernetes nodes là các máy ảo hay máy vật lý chạy kubernetes. Các node này cần chạy Kubernetes và docker, và mỗi máy này là một docker host.
Node là đơn vị nhỏ nhất của phần cứng máy tính trong Kubernetes. Nó là đại diện của một máy duy nhất trong Kubernetes cluster. Trong hầu hết các hệ thống Kubernetes, một node có thể sẽ là một máy vật lý thật sự hoặc máy ảo của một cloud platform như Google Cloud Platform hay AWS, hoặc đơn giản là một máy ảo được tạo bởi VirtualBox trên một máy đơn.
Chúng ta có thể đơn giản xem mỗi node như một tập hợp tài nguyên CPU và RAM có thể được sử dụng. Bằng cách này, bất kỳ máy nào cũng có thể thay thế bất kỳ máy nào khác trong Kubernetes cluster.
Pods
Khi một ứng dụng được đóng gói thì ứng dụng đó sẽ có thể chạy trên một container độc lập, tuy chúng ta có thể chạy container độc lập như cách khởi chạy một ứng dụng monolythic, nhưng Kubernetes sẽ không chạy theo cách như vậy, Kubernetes sử dụng khái niệm pod để nhóm các container lại với nhau. Một pod là một nhóm các container, các container này sẽ dùng chung tài nguyên và network, các container trong một pod có thể duy trì giao tiếp với nhau như trên một máy chủ nhưng vẫn giữ được sự độc lập cần thiết.
Với Kubernetes, đơn vị khi scale ứng dụng sẽ là scale các pods, vì vậy nên các pods thường là nhóm các containers có cùng mục đích sử dụng, ví dụ như một pod tập hợp 4 container chạy nginx + backend, và một pod tập hợp 2 container chạy frontend + nginx .v.v.
Một vài setup cần thiết
Ở phạm vi bài viết này mình sẽ demo cách khởi tạo một Kubernetes cluster trên một máy vật lý duy nhất, sử dụng các máy ảo chạy trên VirtualBox. Các cài đặt là trên hđh Ubuntu 16.04
Cài VirtualBox
Công cụ để quản lý máy ảo khá quen thuộc, hỗ trợ nhiều hệ điều hành phổ biến như Windows, Ubuntu, MacOs ..v.v
sudo apt-get updatesudo apt-get upgradewget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -sudo add-apt-repository “deb http://download.virtualbox.org/virtualbox/debian xenial contrib”sudo apt-get updatesudo apt-get install virtualbox
Cài Minikube
Một Kubernetes cluster có thể được xây dựng trên các máy tính vật lý hoặc các máy ảo. Để bắt đầu việc phát triển cho Kubernetes, bạn có thể sử dụng Minikube. Minikube là một bộ cài đặt Kubernetes bằng cách tạo ra một máy ảo trên máy tính của bạn và triển khai một cluster đơn giản bên trong máy ảo đó chỉ bao gồm một Node
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikubesudo mkdir -p /usr/local/bin/sudo install minikube /usr/local/bin/Hãy cài đặt minikube để sử dụng cho việc switch context cuối bài viết nhé

Khởi tạo cluster
Để khởi tạo cluster hoàn chỉnh chúng ta cần ssh vào các máy ảo và khởi tạo qua kubeadm
Ở máy master, lúc ssh hãy nhập mật khẩu ở file config vagrant mà lúc nãy chúng ta cấu hình nhé, ở đây pasword mình để là 123
Khởi tạo node ở máy master của cluster
ssh

Vì vậy hãy chạy tiếp các lệnh sau trên máy master:
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configCũng như cần cài đặt một plugin mạng, hãy mở đường link để lựa chọn một addon
You should now deploy a pod network to the cluster.Run “kubectl apply -f
kubectl apply -f https://docs.projectcalico.org/v3.10/manifests/calico.yamlSau các bước trên thì chúng ta đã khởi tạo thành công một cluster, tuy nhiên cluster này mới chỉ có một node là master mà thôi
<
Xem thêm: Streamer Game Là Gì ? Cách Kiếm Tiền Từ Nghề Streamer Nghề Streamer Là Gì
<
Ở máy master:
<
ssh
<
Sử dụng kubectl với ngữ cảnh context
Sử dụng các context trong kubectl
Sau demo trên thì chúng ta đã khởi một cluster hoàn chỉnh, chúng ta có thể tạo thêm một cluster với minikube
Đây là công cụ tạo một cluster ở local, bây giờ mình sẽ start minikube để tạo thêm một cluster, và chúng ta có thể switch giữa minikube và
minikube startCác cấu hình cho trình điểu khiển kubectl được đọc ở $HOME/.kube/config.
Để chuyển đổi context, chúng ta có thể thay đổi biến môi trường KUBECONFIG để chuyển đổi ngữ cảnh sử dụng khác.
Giả sử chúng ta có cấu hình của một cluster cluster1 ở file /home/chicken/.kube/config-cluster1, ở cửa sổ cmd thì export biến môi trường này để đổi cấu hình cho kubectlexport KUBECONFIG=/home/chicken/.kube/config-cluster1
Ở máy localhost hãy kiểm tra ngữ cảnh của kubectl đang như nào nhé
Bây giờ chúng ta hãy thêm một ngữ cảnh để kubectl có thể đổi qua cluster mà chúng ta khởi tạo hồi nãy nhé:
Copy cấu hình cluster ở node master về localhost, nhớ đổi đường dẫn phù hợp nhé

)
scp
Xem thêm: Hướng Dẫn Cách Chơi Bright Mùa 17, Hướng Dẫn Chơi Bright
Như vậy mình vừa trình bày các khái niệm cơ bản về Kubernetes và cách khởi tạo một Kubernetes cluster hoàn chỉnh. Hy vọng bài viết sẽ có ích cho những ai đang tìm hiểu về k8sCảm ơn mọi người đã theo dõi bài viết!