Kubernetes là gì? Cài đặt Kubernetes trên Ubuntu Server


Kubernetes là gì?

Kubernetes (còn được gọi là k8s) là một hệ thống điều phối container mã nguồn mở để tự động hóa việc triển khai, mở rộng và quản lý các ứng dụng. Ban đầu nó được thiết kế bởi Google và hiện nay đang được duy trì bởi tổ chức Cloud Native Computing Foundation.

Nó nhằm mục đích cung cấp một “nền tảng để tự động hóa việc triển khai, mở rộng và vận hành các container chứa ứng dụng trên các cụm máy chủ”. Nó hoạt động với một loạt các công cụ container, bao gồm Docker.

  • Thiết kế bởi Google
  • Phát triển bởi Cloud Native Computing Foundation
  • Lần đầu phát hành vào 7/6/2014
  • Phiên bản ổn định : 1.16
  • Repository: github.com/kubernetes/kubernetes
  • Viết bằng ngôn ngữ lập trình Go
  • Loại phần mềm: Cluster management software
  • License: Apache License 2.0
  • Website: kubernetes.io

Ưu điểm và các tính năng của Kubernetes

  • Endpoint slices: Theo dõi và mở rộng (scale) các node trên Kobernetes Cluster
  • Load balancing: Kubernetes cung cấp cho các Pod địa chỉ IP riêng và một DNS duy nhất cho một nhóm Pods. Vì vậy có thể cân bằng tải giữa chúng.
  • Automatic bin packing: Tự động đặt các container dựa trên yêu cầu tài nguyên của chúng và các ràng buộc khác, để tăng cường sử dụng và tiết kiệm nhiều tài nguyên hơn.
  • Storage orchestration: Tự động gắn hệ thống lưu trữ mà bạn chọn, cho dù từ bộ nhớ cục bộ (local), nhà cung cấp đám mây như GCP hoặc AWS hoặc hệ thống lưu trữ mạng như NFS, iSCSI, Gluster, Ceph, Cinder hoặc Flocker.
  • Self-healing: Khởi động lại các container bị dừng, thay thế và sắp xếp lại các container khi các node die, xóa bỏ container bị hỏng.
  • Automated rollouts and rollbacks
  • IPv4/IPv6 dual-stack: Phân bổ địa chỉ IPv4, IPv6 tới các Pods và Services
  • Batch execution: Ngoài các dịch vụ, Kubernetes có thể quản lý Batch, CI, thay thế các container bị dừng.
  • Horizontal scaling: Scale (mở rộng) ứng dụng của bạn lên hoặc xuống tùy theo mức độ sử dụng CPU

Các đối tượng trong Kubernetes

Pods

Một nhóm là một mức độ trừu tượng cao hơn nhóm các thành phần container. Một nhóm bao gồm một hoặc nhiều container được đảm bảo nằm cùng trên máy chủ và có thể chia sẻ tài nguyên.

Replica Sets

Replica Sets là 1 nhóm cho phép Kubernetes khai các Instance duy trì các instances đã được khai báo cho một Pod

Services

Kubernetes Services là một tập hợp các pods hoạt động cùng nhau, chẳng hạn như một lớp của ứng dụng nhiều tầng. Tập hợp các nhóm tạo thành một dịch vụ được xác định bởi một bộ chọn nhãn (Label Selector). Kubernetes cung cấp hai chế độ quản lý dịch vụ, sử dụng biến môi trường hoặc sử dụng Kubernetes DNS.

Volumes

Mặc định, các hệ thống tệp tin (File System) trong Kubernetes Container không bền. Điều này có nghĩa là việc khởi động lại pod sẽ xóa sạch mọi dữ liệu trên các container đó và do đó, hình thức lưu trữ này khá hạn chế sử dụng. Vì vậy, Kubernetes cung cấp một giải pháp khác là Volumes để lưu trữ vĩnh viễn dữ liệu trong suốt vòng đời của pod. Nó có thể được chia sẻ giữa các container với nhau trong cùng một Pod. Một Volume sẽ được mount vào container bởi một mount point được định nghĩa trong config của pod.

Namespaces

Kubernetes cung cấp phân vùng các tài nguyên mà nó quản lý thành các tập hợp không chồng lấp được gọi là Namespace. Chúng được thiết kế để sử dụng trong các môi trường có nhiều người dùng trải rộng trên nhiều nhóm hoặc dự án hoặc thậm chí tách các môi trường như phát triển (dev), thử nghiệm (test) và sản xuất (Production).

Hướng dẫn cài đặt Kubernetes trên Ubuntu Server

Tiền đề bài viết

Cài đặt docker.io

Đầu tiên chúng ta cài dặt docker.io

sudo apt install docker.io

Sau đó khởi động nó lên và cho nó boot cùng với hệ điều hành

sudo systemctl start docker
sudo systemctl enable docker

Cài đặt Kubernetes

Thêm Kubernetes signing key vào hệ thống

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add

Thêm repository

sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"

Cài đặt kubeadm

sudo apt install kubeadm

Kubernetes sẽ từ chối hoạt động nếu hệ thống của bạn đang sử dụng swap do đó chúng tôi cần phải tắt swap

sudo swapoff -a

Tạo single node cluster

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

Bạn sẽ nhận được thông báo như sau:

Chúng ta thực hiện command như hướng dẫn ở trên

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Sau đó triển khai 1 pod trên cluster

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Sử dụng kubectl get pods –all-namespaces để kiểm tra lại:

kubectl get pods --all-namespaces

Cài đặt Dashboard UI

Nếu bạn muốn có 1 trang quản lý dạng Web UI thay vì quản lý các Pod, container bằng giao diện dòng lệnh thì hãy thực hiện các command dưới đây.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

Khởi động trang quản lý của Kubernetes Dashboard UI

kubectl proxy --address='0.0.0.0' --accept-hosts='.*'

Giờ chúng ta truy cập tới đường dẫn http://<diachi_ip>:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

Có 2 hình thức login là Kubeconfig và Token

Trong bước này, chúng ta sẽ tạo sử dụng Token để đăng nhập.

Gõ lệnh bên dưới để get token

kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')

Copy token vào trang trang login => bấm [ Login ] để đăng nhập

Nguồn: vinasupport.com

 

 

             
SHARE

Bài viết liên quan

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web