Cách cài đặt và cấu hình Kubernetes và Docker trên Ubuntu 18.04 LTS

theanh

Administrator
Nhân viên
Kubernetes là một nền tảng nguồn mở để quản lý các ứng dụng được chứa trong container. Nó cho phép bạn quản lý, mở rộng quy mô và tự động triển khai các ứng dụng được chứa trong container của mình trong môi trường cụm. Kubernetes được phát triển bởi Google.

Với Kubernetes, bạn có thể sắp xếp các container trên nhiều máy chủ, mở rộng quy mô các ứng dụng được chứa trong container với tất cả các tài nguyên khi đang chạy và có một môi trường quản lý container tập trung.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn từng bước cách cài đặt và cấu hình Kubernetes trên Ubuntu 18.04. Chúng tôi sẽ sử dụng 1 máy chủ 'k8s-master' làm Kubernetes Host Master và 2 máy chủ làm Kubernetes workers, 'worker01' và 'worker02'.

Điều kiện tiên quyết​

  • 3 máy chủ Ubuntu10.0.15.10 k8s-master
  • 10.0.15.21 worker01
  • 10.0.15.22 worker02
[*] Quyền root

Những việc chúng tôi sẽ làm​

  1. Cài đặt KubeadmThiết lập máy chủ
  2. Cài đặt Docker
  3. Vô hiệu hóa SWAP
  4. Cài đặt các gói Kubeadm
[*] Khởi tạo cụm Kubernetes
[*] Thêm nút Worker vào Cụm Kubernetes
[*] Kiểm tra

Bước 1 - Cài đặt Kubeadm​

Trong bước đầu tiên này, chúng ta sẽ chuẩn bị 3 máy chủ đó để cài đặt Kubernetes, vì vậy hãy chạy tất cả các lệnh trên các nút chính và nút công nhân.

Chúng ta sẽ chuẩn bị tất cả các máy chủ để cài đặt Kubernetes bằng cách thay đổi cấu hình hiện có trên các máy chủ và cũng cài đặt một số gói, bao gồm docker và chính kubernetes.

Thiết lập máy chủ​

Chỉnh sửa tệp máy chủ trên tất cả các máy chủ bằng trình chỉnh sửa vim.
Mã:
sudo vim /etc/hosts
Dán cấu hình máy chủ bên dưới.
Mã:
10.0.15.10 k8s-master10.0.15.21 worker0110.0.15.22 worker02
Lưu và thoát.

Bây giờ hãy kiểm tra ping tất cả tên máy chủ của máy chủ.
Mã:
ping -c 3 k8s-master
ping -c 3 worker01
ping -c 3 worker02
Đảm bảo tất cả địa chỉ IP được phân giải thành tên máy chủ.


Cài đặt Docker​

Trong hướng dẫn này, chúng tôi sẽ cài đặt Docker từ kho lưu trữ Ubuntu.

Cài đặt Docker bằng lệnh apt bên dưới.
Mã:
sudo apt install docker.io -y
Sau khi cài đặt hoàn tất, hãy khởi động dịch vụ docker và cho phép nó khởi chạy mọi lúc khi khởi động hệ thống.
Mã:
sudo systemctl start docker
sudo systemctl enable docker
Quá trình cài đặt Docker đã hoàn tất.


Vô hiệu hóa SWAP​

Để thiết lập máy chủ Kubernetes Linux, chúng ta cần vô hiệu hóa SWAP.

Kiểm tra danh sách hoán đổi và vô hiệu hóa nó.
Mã:
sudo swapon -s
sudo swapoff -a
Để vô hiệu hóa SWAP vĩnh viễn, chúng ta cần chỉnh sửa tệp '/etc/fstab'.
Mã:
sudo vim /etc/fstab
Ghi chú về loại phân vùng SWAP.
Mã:
#/dev/mapper/hakase--labs--vg-swap_1 none swap sw 0 0


Lưu và thoát, sau đó khởi động lại hệ thống.
Mã:
sudo reboot

Cài đặt các gói Kubeadm​

Trong hướng dẫn này, chúng ta sẽ sử dụng các gói Kubeadm để thiết lập Kubernetes Cluster. Chúng ta sẽ cài đặt các gói Kubeadm từ kho lưu trữ Kubernetes chính thức.

Cài đặt apt-transport-https.
Mã:
sudo apt install -y apt-transport-https
Thêm Khóa Kubernetes.
Mã:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Và thêm Kubernetes Repository bằng cách tạo tệp repo.list mới trên thư mục '/etc/apt/sources.list.d'.
Mã:
cd /etc/apt/
sudo vim sources.list.d/kubernetes.list
dán kho lưu trữ kubernetes bên dưới.
Mã:
deb http://apt.kubernetes.io/ kubernetes-xenial main
Lưu ý:

Chúng tôi vẫn đang sử dụng kho lưu trữ Xenial Ubuntu 16.04 cho Cài đặt Kubeadm của mình.

Bây giờ hãy cập nhật kho lưu trữ và cài đặt các gói kubeadm bằng các lệnh apt bên dưới.
Mã:
sudo apt update
sudo apt install -y kubeadm kubelet kubectl
Chờ các gói kubeadm cài đặt.


Bước 2 - Khởi tạo cụm Kubernetes​

Trong bước này, chúng ta sẽ khởi tạo Kubernetes trên nút 'k8s-master'. Chỉ chạy tất cả các lệnh trong giai đoạn này trên máy chủ 'k8s-master'.

Khởi tạo cụm Kubernetes bằng lệnh kubeadm bên dưới.
Mã:
sudo kubeadm init --pod-network-cidr=10.244.10.0/16 --apiserver-advertise-address=10.0.15.10 --kubernetes-version "1.11.0"
Lưu ý:
  • --apiserver-advertise-address = xác định địa chỉ IP mà Kubernetes nên quảng cáo máy chủ API của mình trên đó.
  • --pod-network-cidr = chỉ định phạm vi địa chỉ IP cho mạng pod. Chúng tôi đang sử dụng mạng ảo 'flannel'. Nếu bạn muốn sử dụng mạng pod khác như weave-net hoặc calico, hãy thay đổi phạm vi địa chỉ IP.
Khi quá trình khởi tạo Kubernetes hoàn tất, bạn sẽ nhận được kết quả như hiển thị bên dưới.



Sao chép lệnh 'kubeadm join ... ... ...' vào trình soạn thảo văn bản của bạn. Lệnh sẽ được sử dụng để đăng ký các nút worker mới vào cụm kubernetes.

Bây giờ để sử dụng Kubernetes, chúng ta cần chạy một số lệnh như hiển thị trong kết quả.

Tạo thư mục cấu hình '.kube' mới và sao chép cấu hình 'admin.conf' từ thư mục '/etc/kubernetes'.
Mã:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Tiếp theo, triển khai mạng flannel vào cụm kubernetes bằng lệnh kubectl.
Mã:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Flannel mạng đã được triển khai tới cụm Kubernetes.



Chờ một phút rồi kiểm tra nút Kubernetes và các pod bằng các lệnh bên dưới để lấy các pod từ tất cả các không gian tên.
Mã:
kubectl get nodes
kubectl get pods --all-namespaces
Và bạn sẽ thấy nút 'k8s-master' đang chạy như một cụm 'master' với trạng thái 'ready' và tất cả các pod 'kube-system' cần thiết cho cụm đều đang hoạt động.



Khởi tạo và cấu hình cụm Kubernetes master đã hoàn tất.

Bước 3 - Thêm các nút Worker vào cụm Kubernetes​

Trong bước này, chúng ta sẽ thêm hai nút worker 'worker01' và 'worker02' đến Cụm Kubernetes.

Kết nối đến máy chủ 'worker01' và chạy lệnh kubeadm join mà bạn nhận được từ cụm khởi tạo.
Mã:
kubeadm join 10.0.15.10:6443 --token daync8.5dcgj6c6xc7l8hay --discovery-token-ca-cert-hash sha256:65a3e69531d323c335613dea1e498656236bba22e6cf3d5c54b21d744ef97dcd


Kết nối đến máy chủ 'worker02' và chạy lệnh kubeadm join mà bạn nhận được từ cụm khởi tạo.
Mã:
kubeadm join 10.0.15.10:6443 --token daync8.5dcgj6c6xc7l8hay --discovery-token-ca-cert-hash sha256:65a3e69531d323c335613dea1e498656236bba22e6cf3d5c54b21d744ef97dcd


Chờ vài phút rồi quay lại nút master 'k8s-master' và kiểm tra trạng thái nút.
Mã:
kubectl get nodes
Bạn sẽ thấy các nút worker 'worker01' và 'worker02' là một phần của Kubernetes Cluster.


Bước 4 - Kiểm tra​

Ở bước này, chúng tôi sẽ triển khai máy chủ web Nginx bên trong cụm. Chúng tôi sẽ triển khai máy chủ web Nginx bằng mẫu YAML.

Tạo một thư mục mới có tên 'nginx' và đi đến thư mục đó.
Mã:
mkdir -p nginx/
cd nginx/
Bây giờ hãy tạo tệp YAML triển khai Nginx 'nginx-deployment.yaml' bằng trình soạn thảo vim.
Mã:
sudo vim nginx-deployment.yaml
Dán cấu hình bên dưới.
Mã:
apiVersion: apps/v1kind: Deploymentmetadata: name: nginx-deployment labels: app: nginxspec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.0 ports: - containerPort: 80
Lưu và thoát.

Lưu ý:
  • Chúng tôi đang tạo một 'Triển khai' mới có tên là 'nginx-deployment'.
  • Thiết lập nhãn ứng dụng là 'nginx' với '3' bản sao.
  • 'Nginx-deployment' sẽ có các thùng chứa có tên là 'nginx', dựa trên hình ảnh docker 'nginx:1.14.0' và sẽ hiển thị cổng HTTP mặc định 80.
Bây giờ hãy tạo triển khai bằng cách chạy lệnh kubectl bên dưới.
Mã:
kubectl create -f nginx-deployment.yaml
Sau khi tạo một 'nginx-deployment' mới, hãy kiểm tra danh sách triển khai bên trong cụm.
Mã:
kubectl get deployments
kubectl describe implementation nginx-deployment


Bây giờ hãy kiểm tra Kubernetes Pods và bạn sẽ thấy pod 'nginx-deployment-xxx', hãy kiểm tra thông tin chi tiết của pod.
Mã:
kubectl get pods
kubectl describe pods nginx-deployment-6cb5f7bf4f-t5xfh
Bạn sẽ nhận được pod nginx-deployment với 3 bản sao trên các nút worker.



Tiếp theo, chúng ta cần tạo một dịch vụ mới cho 'nginx-deployment' của mình.

Tạo một tệp YAML mới có tên là 'nginx-service.yaml'.
Mã:
vim nginx-service.yaml
Dán cấu hình bên dưới.
Mã:
apiVersion: v1kind: Servicemetadata: name: nginx-service labels: run: nginx-servicespec: type: NodePort ports: - port: 80 protocol: TCP selector: app: nginx
Lưu và thoát.

Lưu ý:
  • Chúng tôi đang tạo một dịch vụ kubernetes mới có tên là 'nginx-service'.
  • Loại dịch vụ là 'NodePort' với cổng HTTP mặc định TargetPort là 80.
  • Dịch vụ này thuộc về ứng dụng có tên 'nginx' dựa trên triển khai 'nginx-deployment' của chúng tôi.
Tạo dịch vụ kubernetes bằng lệnh kubectl bên dưới.
Mã:
kubectl create -f nginx-service.yaml
Bây giờ hãy kiểm tra tất cả các dịch vụ có sẵn trên cụm và bạn sẽ nhận được 'nginx-service' trong danh sách, sau đó kiểm tra thông tin chi tiết của dịch vụ.
Mã:
kubectl get service
kubectl describe service nginx-service


Và bạn sẽ thấy NodePort 'nginx-service' đang chạy trên cổng '32649'.

Kiểm tra bằng lệnh curl cho tất cả các nút worker.

Trên worker01.
Mã:
curl worker01:32649


Bạn sẽ thấy trang mặc định của Nginx.

Trên worker02.
Mã:
curl worker02:32649


Cài đặt cụm Kubernetes và cấu hình trên Ubuntu 18.04 đã hoàn tất thành công.

Tham khảo​

 
Back
Bên trên