CSE: Kubernetes dành cho những người dùng vCloud

CSE: Kubernetes dành cho những người dùng vCloud
Xin chào tất cả mọi người!

Điều đó đã xảy ra khi nhóm nhỏ của chúng tôi, không phải gần đây và chắc chắn không phải đột ngột, đã chuyển một số (và trong tương lai là tất cả) sản phẩm sang Kubernetes.

Có nhiều lý do cho việc này, nhưng câu chuyện của chúng tôi không phải về lễ hội holivar.

Chúng tôi có rất ít sự lựa chọn về cơ sở hạ tầng. Giám đốc vCloud và Giám đốc vCloud. Chúng tôi đã chọn cái mới hơn và quyết định bắt đầu.

Một lần nữa, khi xem qua “The Hard Way”, tôi nhanh chóng đi đến kết luận rằng ngày hôm qua cần có một công cụ để tự động hóa ít nhất các quy trình cơ bản, chẳng hạn như triển khai và định cỡ. Tìm hiểu sâu về Google đã làm sáng tỏ một sản phẩm như VMware Container Service Extension (CSE) - một sản phẩm nguồn mở cho phép bạn tự động hóa việc tạo và định cỡ các cụm k8 cho những cụm trong vCloud.

Tuyên bố miễn trừ trách nhiệm: CSE có những hạn chế nhưng đối với mục đích của chúng tôi thì nó rất hoàn hảo. Ngoài ra, giải pháp phải được nhà cung cấp đám mây hỗ trợ, nhưng vì phần máy chủ cũng là nguồn mở, hãy yêu cầu người quản lý gần nhất của bạn cung cấp nó :)

Để bắt đầu sử dụng, bạn cần có tài khoản quản trị viên trong tổ chức vCloud và mạng định tuyến đã tạo trước đó cho cụm (trong quá trình triển khai, bạn cần truy cập Internet từ mạng này, đừng quên cấu hình Tường lửa/NAT). Địa chỉ không quan trọng. Trong ví dụ này, hãy lấy 10.0.240.0/24

CSE: Kubernetes dành cho những người dùng vCloud

Vì sau khi tạo, cụm sẽ cần được quản lý bằng cách nào đó, nên nên có VPN có định tuyến đến mạng đã tạo. Chúng tôi sử dụng SSL VPN tiêu chuẩn được định cấu hình trên Edge Gateway của tổ chức chúng tôi.

Tiếp theo, bạn cần cài đặt máy khách CSE nơi các cụm k8s sẽ được quản lý. Trong trường hợp của tôi, đây là một chiếc máy tính xách tay đang hoạt động và một vài hộp đựng được giấu kỹ để thúc đẩy quá trình tự động hóa.

Máy khách yêu cầu cài đặt Python phiên bản 3.7.3 trở lên và cài đặt mô-đun vcd-cli, vì vậy hãy cài đặt cả hai.

pip3 install vcd-cli

pip3 install container-service-extension

Sau khi cài đặt, chúng tôi kiểm tra phiên bản CSE và nhận được thông tin sau:

# vcd cse version
Error: No such command "cse".

Bất ngờ, nhưng có thể khắc phục được. Hóa ra, CSE cần được đính kèm dưới dạng mô-đun vào vcd-cli.
Để thực hiện việc này, trước tiên bạn phải đăng nhập vcd-cli vào tổ chức của chúng tôi:

# vcd login MyCloud.provider.com org-dev admin
Password: 
admin logged in, org: 'org-dev', vdc: 'org-dev_vDC01'

Sau đó, vcd-cli sẽ tạo file cấu hình ~/.vcd-cli/profiles.yaml
Cuối cùng, bạn cần thêm vào như sau:

extensions:
  - container_service_extension.client.cse

Sau đó chúng tôi kiểm tra lại:

# vcd cse version
CSE, Container Service Extension for VMware vCloud Director, version 2.5.0

Giai đoạn cài đặt máy khách đã hoàn tất. Hãy thử triển khai cụm đầu tiên.
CSE có một số bộ tham số sử dụng, tất cả chúng đều có thể được xem đây.

Trước tiên, hãy tạo khóa để truy cập không cần mật khẩu vào cụm trong tương lai. Điểm này rất quan trọng, vì theo mặc định, mật khẩu đăng nhập vào các nút sẽ bị vô hiệu hóa và nếu bạn không đặt khóa, bạn có thể phải thực hiện rất nhiều công việc thông qua bảng điều khiển máy ảo, điều này không thuận tiện.

# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.

Hãy thử bắt đầu tạo một cụm:

vcd cse cluster create MyCluster --network k8s_cluster_net --ssh-key ~/.ssh/id_rsa.pub --nodes 3 --enable-nfs

Nếu chúng tôi gặp lỗi Lỗi: Phiên đã hết hạn hoặc người dùng chưa đăng nhập. Vui lòng đăng nhập lại. — đăng nhập lại vcd-cli vào vCloud như mô tả ở trên và thử lại.

Lần này mọi thứ đều ổn và nhiệm vụ tạo cụm đã bắt đầu.

cluster operation: Creating cluster vApp 'MyCluster' (38959587-54f4-4a49-8f2e-61c3a3e879e0) from template 'photon-v2_k8-1.12_weave-2.3.0' (revision 1)

Sẽ mất khoảng 20 phút để hoàn thành nhiệm vụ, trong lúc chờ đợi, chúng ta hãy xem các thông số khởi chạy cơ bản.

—mạng — mạng mà chúng ta đã tạo trước đó.
—ssh-key — các khóa chúng ta đã tạo, sẽ được ghi vào các nút cụm
—nodes n — Số lượng nút Worker trong cụm. Sẽ luôn có một chủ, đây là hạn chế của CSE
—enable-nfs - tạo một nút bổ sung cho các chia sẻ NFS theo khối lượng liên tục. Đó là một lựa chọn hơi giống bàn đạp; chúng ta sẽ quay lại điều chỉnh chức năng của nó sau.

Trong khi đó, trong vCloud, bạn có thể giám sát trực quan việc tạo cụm
CSE: Kubernetes dành cho những người dùng vCloud

Sau khi hoàn thành nhiệm vụ tạo cụm, nó đã sẵn sàng để sử dụng.

Hãy kiểm tra tính đúng đắn của việc triển khai bằng lệnh thông tin cụm vcd cse MyCluster

CSE: Kubernetes dành cho những người dùng vCloud

Tiếp theo chúng ta cần lấy cấu hình cluster để sử dụng kubectl

# vcd cse cluster config MyCluster > ./.kube/config

Và bạn có thể kiểm tra trạng thái của cụm bằng cách sử dụng nó:

CSE: Kubernetes dành cho những người dùng vCloud

Tại thời điểm này, cụm có thể được coi là hoạt động có điều kiện nếu không phải là câu chuyện có số lượng liên tục. Vì chúng tôi đang ở trong vCloud nên chúng tôi sẽ không thể sử dụng vSphere Provider. Lựa chọn --enable-nfs được thiết kế để giải quyết sự phiền toái này, nhưng nó không hoạt động hoàn toàn. Cần điều chỉnh thủ công.

Để bắt đầu, nút của chúng tôi cần tạo một đĩa Độc lập riêng trong vCloud. Điều này đảm bảo rằng dữ liệu của chúng tôi sẽ không biến mất cùng với cụm nếu nó bị xóa. Ngoài ra, hãy kết nối đĩa với NFS

# vcd disk create nfs-shares-1 100g --description 'Kubernetes NFS shares'
# vcd vapp attach mycluster nfsd-9604 nfs-shares-1

Sau đó, chúng tôi chuyển qua ssh (bạn thực sự đã tạo khóa?) Đến nút NFS của chúng tôi và cuối cùng kết nối đĩa:

root@nfsd-9604:~# parted /dev/sdb
(parted) mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No? yes
(parted) unit GB
(parted) mkpart primary 0 100
(parted) print
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 100GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End    Size   File system  Name     Flags
 1      0.00GB  100GB  100GB               primary

(parted) quit
root@nfsd-9604:~# mkfs -t ext4 /dev/sdb1
Creating filesystem with 24413696 4k blocks and 6111232 inodes
Filesystem UUID: 8622c0f5-4044-4ebf-95a5-0372256b34f0
Superblock backups stored on blocks:
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
	4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

Tạo một thư mục cho dữ liệu và gắn một phân vùng mới vào đó:

mkdir /export
echo '/dev/sdb1  /export   ext4  defaults   0 0' >> /etc/fstab
mount -a

Hãy tạo năm phân vùng thử nghiệm và chia sẻ chúng cho cụm:

>cd /export
>mkdir vol1 vol2 vol3 vol4 vol5
>vi /etc/exports
#Добавим это в конец файла
/export/vol1 *(rw,sync,no_root_squash,no_subtree_check)
/export/vol2 *(rw,sync,no_root_squash,no_subtree_check)
/export/vol3 *(rw,sync,no_root_squash,no_subtree_check)
/export/vol4 *(rw,sync,no_root_squash,no_subtree_check)
/export/vol5 *(rw,sync,no_root_squash,no_subtree_check)
#:wq! ;)
#Далее - экспортируем разделы
>exportfs -r

Sau tất cả điều kỳ diệu này, chúng ta có thể tạo PV và PVC trong cụm của mình giống như thế này:
PV:

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-vol1
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany
  nfs:
    # Same IP as the NFS host we ssh'ed to earlier.
    server: 10.150.200.22
    path: "/export/vol1"
EOF

NHỰA PVC:

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: ""
  resources:
    requests:
      storage: 10Gi
EOF

Đây là nơi câu chuyện tạo ra một cụm kết thúc và câu chuyện về vòng đời của nó bắt đầu. Như một phần thưởng, có hai lệnh CSE hữu ích hơn đôi khi cho phép bạn tiết kiệm tài nguyên hoặc không:

#Увеличиваем размер кластера до 8 воркер нод
>cse cluster resize MyCluster --network k8s_cluster_net --nodes 8

#Выводим ненужные ноды из кластера с их последующим удалением
>vcd cse node delete MyCluster node-1a2v node-6685 --yes

Cảm ơn tất cả các bạn đã dành thời gian, nếu bạn có bất kỳ câu hỏi nào, hãy hỏi trong phần bình luận.

Nguồn: www.habr.com

Thêm một lời nhận xét