vSphere with Kubernetes ve Tanzu Kubernetes Grid

Evren Baycan
6 min readApr 28, 2020

--

VMware’in VCF 4.0 (VMware Cloud Foundation) içerisinde yerleşik olarak sunmuş olduğu vSphere 7 with Kubernetes ile Tanzu Kubernetes Grid (TKG) versiyon 1.0 olarak Nisan 2020 ortalarında vSphere 6.7 U3, vSphere 7 ve Amazon EC2 ile uyumlu olarak dağıtıma sunulmuştur.

vSphere 7 with Kubernetes aslında bizim öncesinde Project Pasific olarak duyduğumuz ya da bundan sonra duyacağımız mimarinin kendisi olmaktadır.

Yeni haberlerden biride VCF 4.0 Standard, Advanced ve Enterprise içerisinden artık vSAN lisansını çıkartıp (With vSAN ya da Without vSAN) gibi farklı lisanslama opsiyonlarına da sahip olabiliyorsunuz. Bu oldukça iyi olmuş böylece VMware diğer HCI üreticileri üzerinde artık daha da rekabetçi olabilecektir.

vSphere 7 with Kubernetes için geçtiğimiz yıl VMware piyasaya sunmuş olduğu Enterprise PKS (Pivotal Container Service) ürününün VCF ile vCenter ortamına entegre edilmiş hali olarak da düşünebilirsiniz ki Kasım 2019 itibarıyla da VMware, Essential PKS ürününü satıştan çekmiş bulunmaktadır. PKS ürününün temel seviyede sağlamış olduğu Kubernetes ortamını, vSphere with Kubernetes ile vCenter içerisinden çok kolay bir şekilde merkezi olarak yönetebilme imkânı sağlamaktadır.

vSphere 7 with Kubernetes VCF 4.0 (VMware Cloud Foundation 4.0) ile birlikte yerleşik bir eklenti olarak gelirken, vSphere 6.7 U3, vSphere 7 ve Amazon EC2 için ayrı bir eklenti lisansı olarak satılmaktadır. (Per-Core olarak Tanzu Kubernetes Grid)

Bu arada Tanzu Kubernetes Grid için vSphere/vCenter 7 kullanma zorunluluğunuz yok vSphere 6.7 U3 (minimum olması gereken versiyon) kullanıyorsanız mevcut ortama TKG’i entegre edebiliyorsunuz. Peki neden VCF 4.0 ve vSphere 7 derseniz burada vSphere with Kubernetes yerleşik olarak vCenter 7 içerisinden dağıtılabilir ve yönetilebilir olmasıdır ki bu da oldukça önemli bir özelliktir. vSphere 6.7 U3 ile birlikte Kubernetes kümelerini CLI üzerinden dağıtılıp yönetilebilirken VCF 4 ile tüm Kubernetes ortamını vCenter 7 içerisinden yerleşik olarak yönetebiliyor olacaksınız. DevOps ekiplerini yetkilendirerek vCenter’dan izole olarak CLI aracılığı ile onların Kubernetes kümeleri yaratıp üzerinde çalışabilmelerine olanak sağlayabilmektesiniz.

VMware Enterprise PKS olarak bilinen enterprise-grade Kubernetes ürünü artık Tanzu Kubernetes Grid Integrated Edition olarak kullanılabilir olacak ve daha eski vSphere versiyonlarını (vSphere 7 öncesi) destekliyor olacaktır. (Core ve POD lisanlama modelleri devam edecektir)

Tanzu Kubernetes Grid Integrated Edition müşterileri istedikleri takdirde vSphere 7 with Kubernetes’e geçebiliyor olacaktır. Geçiş sonrasında BOSH kullanımına gerek kalmayacak BOSH tarafından sağlanan tüm LCM (lifecycle management) hizmetleri yerleşik olarak vCenter üzerinden kullanılıyor olacaktır.

VMware Tanzu Kubernetes Grid dışında farklı Tanzu ürünlerinin adını da duyuyor olacaksınız. Kısaca bahsetmek gerekirse;

Tanzu App Catalog; Bitnami VMware tarafından satın alındıktan sonra Community kataloğuna ek olarak Enterprise kataloğu çıkartarak bunu VMware Tanzu Application Catalog ürününe entegre etmiştir.

Burada HELM kullanarak bilindik tüm uygulamaları Kubernetes ortamı içerisinde dağıtabilirsiniz.

Enterprise katalog içerisinde yer alan tüm konteyner imajları kurumsal Production ortamları hazırlanmış olup sürekli güncel tutulan aynı şekilde güvenlik testlerinden geçen imajlardan oluşmaktadır. Bu katalog içerisinde yer alan tüm imajlar herhangi bir Linux dağıtımı tarafından desteklenebilmesinin yanında çoklu Cloud Platform üzerinde de kullanılabilmektedir. (PKS, AKS, EKS, GKE gibi)

Tanzu Mission Control; Bir VMware SaaS hizmeti olan bu ürün ile Multi-Kubernetes platformları üzerinde bütünleşik bir şekilde Provisioning, Monitoring, Policy Control, Logs, Inspection ve LCM gibi servislere enterprise-grade seviyede erişip yönetebiliyor olacaksınız.

Yerleşik olarak gelen vSphere with Kubernetes for vSphere 7 (VCF 4.0) ortamınızda kullanmak istiyorsanız öncelikle vCenter 7 ile birlikte ortamınızda NSX-T 3.0 dağıtılmış olması gerekiyor.

Workload Management dağıtımı konusunda dikkat edilmesi gereken bazı önemli ayrıntılar bulunmakta

  • vCenter minimum Small olarak deploy edilmiş olmalıdır.
  • HA ve DRS aktif olmalıdır
  • Kubernetes ortamı için vCenter üzerinde Storage Policy oluşturulmalı ve ortama atanacak olan datastore bu storage policy için assign edilmelidir.
  • vCenter 7 üzerinden VDS versiyonu 7.0 ve MTU değeri minimum 1600 olarak ayarlanmış olmalıdır.
  • NSX Manager minimum Medium olarak deploy edilmelidir. (Test ve PoC ortamında 1 adet deploy edilebilir)
  • NSX Edge Node minimum 2 adet Large olarak deploy edilmeli (PKS deploy ederken de aynı şey geçerli yoksa PKS kurulumu sırasında hata alabilirsiniz)

vCenter 7 üzerinden Menu — Workload Management sekmesinden Deploy işlemini başlatabilirsiniz.

NOT: NSX-T 3.0 üzerinde Host Preparation ve EDGE Cluster dağıtımının yapılmış olması gerekmektedir.

Sonrasında GUI üzerinden Control VM için kullanılabilecek tahmini POD sayısına göre bir profil seçmeniz gerekiyor.

Management Network (vCenter Network), Workload Network (NSX-T vLAN Network), EDGE Cluster IP, POD Network, Kubernetes Network ve Load Balancer Network için gerekli tanımları girmeniz gerekiyor.

Buradaki Network Deployment metotu PKS üzerinden kullanılan Automated NAT Network Deployment ile benzerdir. Kurulum başladığında NSX üzerinde Tier-0 Router, Tier-1 Router, Segment ve Load Balancer VIP otomatik olarak NSX üzerinde konfigure edilip hazır hale getirilecektir.

Network için gerekli tanımları girdikten sonra öncesinde hazırlamış olduğunuz Storage Policy tanımını girerek kurulumu başlatabilirsiniz. Kurulum tamamlandıktan sonra Workload Management menüsünden Kubernetes CLI Tools indirerek DevOps ekibinizle paylaşabilirsiniz. Bu aslında yabancı olmadığımız bir araç Kubectl olarak bildiğimiz ama Control VM ve vSphere ile entegre olan CLI bağlantı arayüzünün kendisi.

Eğer vCenter/vSphere 6.7 U3 kullanıyorsanız My Download üzerinden Tanzu Kubernetes Grid 1.0 ilgili kurulum paketlerini indirerek mevcut ortamınıza Kubernetes ortamını entegre edebilirsiniz.

Bu dağıtımda network ve load balancer için NSX-T ihtiyacınız yok. Calico ve Contour ile temel seviyede Kubernetes ve POD netwok’ünü yönetebiliyor olacaksınız. Bu dağıtım için aslında Essential PKS karşılığı diyebiliriz. Calico dışında diğer CNI (Container Network Interface) kullanabilirsiniz.

İndirmiş olduğunuz iki OVA dosyasını vCenter ortamınıza import edip onları çalıştırmadan Template haline getirmeniz gerekiyor. Sonrasında hiçbir işlem yapmanıza gerek yok deployment sırasında bu template’ler Deployment GUI üzerinden gösterilecek ve kurulum TKG GUI tarafından otomatik olarak yapılacaktır.

Kurulum için Centos 8 kullanacağız. Linux istemcisini hazırladıktan sonra bunun üzerinde Docker kurulumu yapıp Kubectl indirmemiz gerekiyor. Bunun için aşağıdaki komutları kullanabilirsiniz.

Docker için;

# dnf config-manager — add-repo=https://download.docker.com/linux/centos/docker-ce.repo

# dnf install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

# dnf install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-19.03.8-3.el7.x86_64.rpm

# systemctl enable — now docker

# systemctl is-active docker

# systemctl is-enabled docker

Kubectl için;

# cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=1

repo_gpgcheck=1

gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

EOF

# yum install -y kubectl

Devamında bir Public Key oluşturmamız gerekiyor bunun için ilgili komutları girerek Public Key oluşturabilir ve kopyasını alabilirsiniz bu Public Key kurulum sırasında daha sonra bizden istenecek.

# ssh-keygen -t rsa -b 4096 -C “tkg@vsphere.local”

# cat “/root/.ssh/id_rsa.pub”

İlgili kurulumları yaptıktan sonra indirmiş olduğumuz tkg-linux-amd64-v1.0.0_vmware.1.gz üzerinde aşağıdaki komutları girerek kuruluma aracını başlatabilirsiniz.

# gunzip tkg-linux-amd64-v1.0.0_vmware.1.gz

# mv ./tkg-linux-amd64-v1.0.0_vmware.1 /usr/local/bin/tkg

# chmod +x /usr/local/bin/tkg

Her şey tamamlandıktan sonra tkg init –ui komutunu girerek GUI arayüzünü çağırabilirsiniz.

NOT: GUI için arkada bir Docker imajı çalıştıracağından hemen yanıt vermeyebilir.

Kurulum için iki seçeneğimiz ve vSphere 6.7 U3 ve AWS EC2 devamında yönlendirmeler tercihe göre özelleştiriliyor olacak.

NOT: Bu arayüz üzerinden vSphere 7 ortamı için dağıtım yapılabilir fakat VMware tarafından tavsiye edilmemektedir devam ederseniz bununla ilgili bir uyarıyı GUI tarafından alıyor olacaksınız. Bu tamamen sizin tercihinize bağlı isterseniz kuruluma devam da edebilirsiniz. vSphere 7 için kurulumu vCenter içerisinden daha önce kullanmış olduğumuz Kubernetes CLI Tools kullanmamız gerekiyor.

Devamında vCenter erişim bilgilerini girip Control Plane profilini ve daha önce import etmiş olduğumuz API Server Load Balancer template’ni seçiyoruz.

Resource Pool, VM Network, Kubernetes Network CIDR, POD Network CIDR ve daha önce template olarak import ettiğimiz Base OS template bilgilerini girdikten sonra dağıtımı tamamlamış oluyoruz.

Artık Centos üzerinde TKG CLI kullanarak Kubernetes ortamımızı yönetebiliriz.

--

--