Cụm Kubernetes trên VNPT Cloud hỗ trợ hai chế độ kết nối:

  1. Public Cluster – Truy cập trực tiếp qua Internet
  2. Private Cluster – Truy cập qua mạng nội bộ (VPC/VLAN)

Cụm VNPT Kubernetes Private không công khai địa chỉ IP và chỉ cho phép truy cập từ nội bộ mạng (VPC/VLAN) tương ứng. Để có thể kết nối và thao tác với cụm, bạn cần triển khai một máy ảo (Bastion VM) nằm trong cùng VPC và VLAN với cụm K8s, sau đó SSH vào máy này để sử dụng kubectl.

 

Điều kiện 

  • Đăng nhập tài khoản vào VNPT Cloud Portal
  • Đã khởi tạo 1 máy chủ ảo có cùng VPC và subnet với cụm Cluster (Bastion Host)
  • Đã khởi tạo thành công Cluster K8S ở chế độ private

Dưới đây là các bước chi tiết để thực hiện:

 

1. Xác định dải Network dùng để tạo Bastion VM

Dải Network này là dải được dùng để khởi tạo dịch vụ VNPT K8s cần truy cập.

2. Tạo Security Group cho Bastion

Vào VNPT Cloud Console > Dịch vụ hạ tầng > Security Group > Tạo mới Security Group.

 

Đặt tên cho Security Group (ví dụ: SG_bastion)

 

 

Thêm một Rule Inbound cho phép kết nối SSH (port 22) từ địa chỉ IP của bạn hoặc từ một dải IP cụ thể. Nếu cần, có thể thêm các rule bổ sung để cho phép các dịch vụ khác mà bastion instance sẽ truy cập được.

 

 

 

3. Tạo Bastion VM

Truy cập vào VNPT Cloud Dashboard > Dịch vụ hạ tầng > VM (Máy ảo) và nhấp vào Tạo mới máy ảo.

Chọn hệ điều hành Linux (ví dụ: Ubuntu, Centos,...)

 

Chọn Gói cấu hình sẵn (ví dụ: SCM01 cho mục đích tiết kiệm chi phí).

Ở mục “Thông tin Network” phần “Chọn VLAN gắn vào máy ảo”. Đặt Bastion VM vào dải network đã được dùng để tạo cụm VKS (ví dụ ở đây là dải Network có tên là “pri_network”).

Lưu ý: 

  • Máy ảo sẽ được truy cập qua IP public, vì thế cần phải chuẩn bị trước IP public. Nếu chưa có truy cập Dịch vụ hạ tầng > Networks > IP Public để tạo mới.
  • IP Public sẽ được gắn trực tiếp vào máy ảo.

 

Đảm bảo rằng bạn đã gắn Security Group đã tạo ở bước 2 cho VM Bastion này. Ở mục “Thông tin Network” phần “Chọn Security Group”, nhấp chọn vào tên Security Group đã tạo.

Tạo hoặc chọn một SSH Key Pair mà bạn đã tải lên để truy cập instance qua SSH. Chúng tôi khuyến nghị bạn không nên SSH vào VM Bastion thông qua phương thức xác thực là mật khẩu vì lý do an toàn bảo mật của chính bạn. Để tạo keypair vui lòng truy cập vào VNPT Cloud Dashboard > Dịch vụ hạ tầng > Khóa truy cập (Keypair).

 

Sau khi hoàn thành các bước trên, tiến hành khởi VM Bastion bằng cách nhấp vào nút “Khởi tạo”.
 

4. Kiểm tra kết nối tới bastion instance

Kết nối với Bastion VM bằng lệnh SSH:

ssh -i /path/to/your-private-key root@<Bastion-Public-IP>

5. Thiết lập kết nối tới cụm VNPT K8s

Chuẩn bị thông tin cần thiết

Truy cập vào giao diện Network tìm Router tự sinh ra khi tạo dịch vụ K8s. Router này là cố định và không thể thay đổi và xóa.

 

Bấm vào xem chi tiết và ghi nhớ địa chỉ NEXTHOP của Router để thực hiện addroute vào máy ảo bastion kết nối đến dịch vụ K8s:

 

Tiếp theo kiểm tra giao diện mạng trong máy ảo bastion (chính là network interface lúc tạo máy ảo trên giao diện console) để thực hiện add route tới cụm k8s như sau:

Thực hiện chạy script để tạo kết nối đến cụm k8s tự động

Tải hoặc copy script này vào một file trong máy ảo bastion:

vi addroute.sh
#!/bin/bash
NETPLAN_FILE="/etc/netplan/01-netcfg-k8s.yaml"
NETWORK="10.101.16.0/20"
function is_valid_ip() {
 local ip=$1
 if [[ $ip =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then
   IFS='.' read -r -a octets <<< "$ip"
   for octet in "${octets[@]}"; do
     if ((octet < 0 || octet > 255)); then
       return 1
     fi
   done
   return 0
 else
   return 1
 fi
}
read -p "Enter INTERFACE in VM: " INTERFACE
while true; do
 read -p "Enter IP Nexthop in Router: " NEXTHOP
 if is_valid_ip "$NEXTHOP"; then
   break
 else
   echo "Please enter correct format x.x.x.x (0-255)"
 fi
done
cat > "$NETPLAN_FILE" << EOL
network:
 version: 2
 ethernets:
   $INTERFACE:
     dhcp4: true
     routes:
       - to: $NETWORK
         via: $NEXTHOP
EOL
netplan apply
echo "Done !"

Phân quyền thực thi cho file vừa tạo

chmod +x addroute.sh

Thực hiện addroute tới cụm K8s, nhập vào giao diện mạng và địa chỉ của Router K8s đã đề cập ở trên:

./addroute.sh

Lưu ý: nếu nhập sai giao diện mạng hoặc địa chỉ router thực hiện chạy lại file bash  

./addroute.sh

6. Tải KUBECONFIG và thực hiện kubectl tới cụm

Vào VNPT Cloud Console > Dịch vụ nền tảng > Containers > Kubernetes.

Chọn cụm K8s cần thực hiện truy cập > Màn hình tổng quan > Tải hoặc sao chép file kubeconfig.

 

1.jpg

 

Thực hiện tải file kubeconfig và export file kubeconfig để sử dụng kubectl.

export KUBECONFIG=~root/product.yaml
kubectl get nodes

2.jpg