Triển Khai Và Cấu Hình Kubernetes 1.20

Giới Thiệu

Kubernetes (K8S) đã trở thành tiêu chuẩn trong lĩnh vực quản lý container, hỗ trợ doanh nghiệp triển khai ứng dụng linh hoạt và có tính sẵn sàng cao. Bài viết này sẽ giúp bạn hiểu sâu về kiến trúc và đặc điểm của K8S, đồng thời cung cấp hướng dẫn chi tiết để triển khai phiên bản 1.20.

1. Hiểu Biết Cơ Bản Về Cloud-Native Và K8S

Cloud-Native Là Gì?

Cloud-native tập trung vào việc xây dựng các ứng dụng có khả năng mở rộng trên môi trường đám mây. Các công nghệ chủ chốt bao gồm containerization (Docker/containerd), microservices, service mesh (Istio), DevOps và serverless. Đặc trưng chính là tuân thủ nguyên tắc 12-factor, sử dụng kiến trúc microservices, và tối ưu hóa sự tự phục hồi của hệ thống.

Tại Sao Chọn K8S?

K8S giải quyết các vấn đề liên quan đến tự động hóa vận hành, tăng cường độ sẵn sàng và sử dụng tài nguyên hiệu quả hơn. Nó cũng cung cấp các khả năng như discovery dịch vụ, cân bằng tải và quản lý mật mã.

Cấu Trúc Lõi Của K8S

K8S sử dụng kiến trúc master-node với các thành phần phân chia nhiệm vụ rõ ràng. Từ phiên bản 1.24, Docker không còn được tích hợp mặc định mà thay vào đó là các runtime tương thích CRI như containerd.

2. Hướng Dẫn Triển Khai K8S 1.20 Cluster

2.1 Quy Hoạch Môi Trường Cluster

Vai Trò NodeCấu Hình Máy ChủĐịa Chỉ IPPhần Mềm Cần Thiết
Master2C/4G192.168.10.19Docker, kubeadm, kubelet, kubectl, flannel
Node012C/2G192.168.10.20Docker, kubeadm, kubelet, kubectl, flannel
Node022C/2G192.168.10.21Docker, kubeadm, kubelet, kubectl, flannel
Harbor2C/2G192.168.10.13Docker, docker-compose, harbor-offline-v1.2.2

2.2 Chuẩn Bị Môi Trường

# Tắt tường lửa và SELinux
systemctl stop firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config

# Tải các module ip_vs
for mod in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs | grep -o "^[^.]*"); do 
  /sbin/modinfo -F filename $mod >/dev/null 2>&1 && /sbin/modprobe $mod;
done

2.3 Cài Đặt Docker

# Thêm repo Docker từ Alibaba
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io

# Cấu hình daemon.json
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://alimirror.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
</pre>

2.4 Cài Đặt Kubeadm, Kubelet, Kubectl

# Thêm repo Kubernetes
cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
EOF

# Cài đặt gói
yum install -y kubelet-1.20.11 kubeadm-1.20.11 kubectl-1.20.11
</pre>

2.5 Triển Khai Master Node

# Khởi tạo cluster
kubeadm init --apiserver-advertise-address=192.168.10.19 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.20.11 --service-cidr=10.96.0.0/16 --pod-network-cidr=10.244.0.0/16

2.6 Triển Khai Flannel

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/main/Documentation/kube-flannel.yml

2.7 Kết Nối Node Vào Cluster

# Trên mỗi node thực hiện lệnh:
kubeadm join 192.168.10.19:6443 --token abcdef.abcdef1234567890 --discovery-token-ca-cert-hash sha256:abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890

2.8 Triển Khai Dashboard

# Sửa file recommended.yaml
vim /opt/k8s/recommended.yaml
# Cập nhật Service type thành NodePort
kubectl apply -f recommended.yaml

2.9 Triển Khai Harbor

# Cài đặt Harbor
cd /opt/harbor/
./install.sh

Thẻ: Kubernetes containerd flannel dashboard harbor

Đăng vào ngày 31 tháng 7 lúc 16:00