CSE: vCloud'dakiler için Kubernetes

CSE: vCloud'dakiler için Kubernetes
Herkese Merhaba!

Öyle oldu ki, küçük ekibimiz, son zamanlarda ve kesinlikle aniden değil, bazı ürünleri (ve gelecekte hepsini) Kubernetes'e taşımak için büyüdü.

Bunun pek çok nedeni vardı ama bizim hikâyemiz holivarla ilgili değil.

Altyapı temeli konusunda çok az seçeneğimiz vardı. vCloud Direktörü ve vCloud Direktörü. Yenisini seçtik ve başlamaya karar verdik.

Bir kez daha "Zor Yol"a baktığımda, dün en azından dağıtım ve boyutlandırma gibi temel süreçleri otomatikleştirmek için bir araca ihtiyaç duyulduğu sonucuna çok çabuk ulaştım. Google'ın derinlemesine incelenmesi, vCloud'dakiler için k8s kümelerinin oluşturulmasını ve boyutlandırılmasını otomatikleştirmenize olanak tanıyan açık kaynaklı bir ürün olan VMware Container Service Extension (CSE) gibi bir ürünü gün ışığına çıkardı.

Yasal Uyarı: CSE'nin sınırlamaları vardır, ancak bizim amaçlarımız açısından mükemmeldi. Ayrıca çözümün bulut sağlayıcı tarafından desteklenmesi gerekiyor ancak sunucu kısmı da açık kaynak olduğundan en yakın yöneticinizden temin etmesini isteyin :)

Kullanmaya başlamak için vCloud organizasyonunda bir yönetici hesabına ve küme için önceden oluşturulmuş yönlendirilmiş bir ağa ihtiyacınız vardır (dağıtım işlemi sırasında bu ağdan İnternet erişimine ihtiyacınız vardır, Güvenlik Duvarı/NAT'ı yapılandırmayı unutmayın). Adres vermenin bir önemi yok. Bu örnekte 10.0.240.0/24'ü ele alalım.

CSE: vCloud'dakiler için Kubernetes

Kümenin oluşturulduktan sonra bir şekilde yönetilmesi gerekeceğinden, oluşturulan ağa yönlendirmeli bir VPN'in olması önerilir. Kuruluşumuzun Edge Gateway'inde yapılandırılmış standart bir SSL VPN kullanıyoruz.

Daha sonra k8s kümelerinin yönetileceği CSE istemcisini yüklemeniz gerekir. Benim durumumda bu, çalışan bir dizüstü bilgisayar ve otomasyonu destekleyen birkaç iyi gizlenmiş kaptır.

İstemci Python sürüm 3.7.3 ve üzerinin kurulu olmasını ve modülün kurulu olmasını gerektirir vcd-cli, öyleyse ikisini de yükleyelim.

pip3 install vcd-cli

pip3 install container-service-extension

Kurulumdan sonra CSE sürümünü kontrol ediyoruz ve aşağıdakileri alıyoruz:

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

Beklenmedik ama düzeltilebilir. Anlaşıldığı üzere, CSE'nin vcd-cli'ye bir modül olarak eklenmesi gerekiyor.
Bunu yapmak için öncelikle kuruluşumuza vcd-cli girişi yapmalısınız:

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

Bundan sonra vcd-cli bir yapılandırma dosyası oluşturacaktır. ~/.vcd-cli/profiles.yaml
Sonunda aşağıdakileri eklemeniz gerekir:

extensions:
  - container_service_extension.client.cse

Daha sonra tekrar kontrol ediyoruz:

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

İstemci kurulum aşaması tamamlandı. İlk kümeyi dağıtmaya çalışalım.
CSE'nin birkaç kullanım parametresi kümesi vardır; bunların tümü görüntülenebilir burada.

Öncelikle gelecekteki kümeye parolasız erişim için anahtarlar oluşturalım. Bu nokta önemlidir, çünkü varsayılan olarak düğümlere şifre ile giriş devre dışı bırakılacaktır ve anahtarları ayarlamazsanız, sanal makine konsolları aracılığıyla uygun olmayan çok fazla iş alabilirsiniz.

# 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.

Bir küme oluşturmaya başlamayı deneyelim:

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

Eğer bir hata alırsak Hata: Oturumun süresi doldu veya kullanıcı oturum açmadı. Lütfen yeniden giriş yapın. — yukarıda açıklandığı gibi vCloud'da vcd-cli'de tekrar oturum açın ve tekrar deneyin.

Bu sefer her şey yolunda ve küme oluşturma görevi başladı.

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

Görevi tamamlamak yaklaşık 20 dakika sürecek; bu arada temel başlatma parametrelerine bakalım.

—ağ — daha önce oluşturduğumuz ağ.
—ssh-key — küme düğümlerine yazılacak olan oluşturduğumuz anahtarlar
—düğümler n — Kümedeki Çalışan düğümlerinin sayısı. Her zaman bir ana öğe olacaktır; bu bir ÖAM sınırlamasıdır
—enable-nfs - kalıcı birimler altında NFS paylaşımları için ek bir düğüm oluşturun. Bu biraz pedal seçeneği; ne yaptığını ayarlamaya biraz sonra döneceğiz.

Bu arada vCloud'da bir kümenin oluşturulmasını görsel olarak izleyebilirsiniz.
CSE: vCloud'dakiler için Kubernetes

Cluster oluşturma görevi tamamlandıktan sonra kullanıma hazırdır.

komutuyla dağıtımın doğruluğunu kontrol edelim. vcd cse küme bilgisi MyCluster

CSE: vCloud'dakiler için Kubernetes

Daha sonra kullanmak için küme yapılandırmasını almamız gerekiyor Kubectl

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

Ve bunu kullanarak kümenin durumunu kontrol edebilirsiniz:

CSE: vCloud'dakiler için Kubernetes

Bu noktada kümenin kalıcı hacimlere sahip hikaye için olmasa da koşullu olarak çalıştığı düşünülebilir. VCloud'da olduğumuz için vSphere Provider'ı kullanamayacağız. Seçenek --nfs'yi etkinleştir bu sıkıntıyı gidermek için tasarlandı, ancak tamamen işe yaramadı. Manuel ayar gerekli.

Başlamak için düğümümüzün vCloud'da ayrı bir Bağımsız disk oluşturması gerekiyor. Bu, silinmesi durumunda verilerimizin kümeyle birlikte kaybolmayacağını garanti eder. Ayrıca diski NFS'ye bağlayın

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

Bundan sonra, ssh aracılığıyla (anahtarları gerçekten siz mi yarattınız?) NFS düğümümüze gidiyoruz ve son olarak diski bağlıyoruz:

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

Veriler için bir dizin oluşturun ve oraya yeni bir bölüm ekleyin:

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

Beş test bölümü oluşturalım ve bunları küme için paylaşalı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

Tüm bu sihirden sonra kümemizde şöyle bir PV ve PVC oluşturabiliriz:
Muhabir:

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

pvc:

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

Bir kümenin yaratılış hikayesi burada bitiyor ve yaşam döngüsünün hikayesi başlıyor. Bonus olarak, bazen kaynaklardan tasarruf etmenize veya etmemenize olanak tanıyan iki kullanışlı CSE komutu daha vardır:

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

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

Zaman ayırdığınız için hepinize teşekkür ederim, herhangi bir sorunuz varsa yorumlarda sorabilirsiniz.

Kaynak: habr.com

Yorum ekle