Container Compute Service (ACS); kapsayıcı görüntüleri, orkestrasyon YAML şablonları veya kubectl komut satırı araçlarını kullanarak durumsuz uygulamalar oluşturmayı destekler. Bu konuda, bir ACS kümesinde durumsuz bir uygulamanın nasıl oluşturulacağını göstermek için örnek olarak bir Nginx uygulaması kullanılmaktadır.
Konsol
Görüntüden oluşturun
1. Adım: Temel uygulama bilgilerini yapılandırın
ACS konsolu üzerinde oturum açın. Sol gezinme bölmesinde Clusters öğesine tıklayın.
Clusters sayfasında hedef kümenin adına tıklayın. Sol gezinme bölmesinde Workloads > Deployments seçeneklerini belirleyin.
Deployments sayfasında Create from Image seçeneğine tıklayın.
-
Basic Information sihirbazında uygulamanız için temel ayarları yapılandırın.
Parametre
Açıklama
Application Name
Uygulama için bir ad girin.
Replicas:
Uygulamadaki pod sayısı. Varsayılan değer 2'dir.
Workloads
Deployment seçeneğini belirleyin.
Label
Bu uygulamayı tanımlamak için bir etiket ekleyin.
Annotations
Uygulamaya bir açıklama ekleyin.
Instance Type
Bir hesaplama türü seçin. Hesaplama türleri hakkında daha fazla bilgi için bkz. ACS pod örneklerine genel bakış.
QoS Type
Bir Hizmet Kalitesi (QoS) sınıfı seçin.
Next seçeneğine tıklayarak Container sihirbazına gidin.
2. Adım: Konteynerleri yapılandırın
Container sihirbazı sayfasında konteyner görüntüsünü, kaynakları, bağlantı noktalarını, ortam değişkenlerini, sağlık denetimlerini, yaşam döngüsünü, birimleri ve günlük kaydı işlemini yapılandırın.
Pod'a birden fazla konteyner eklemek için Container 1 sekmesinin yanındaki Add Container seçeneğine tıklayın.
-
General bölümünde temel konteyner yapılandırmasını tamamlayın.
Parametre
Açıklama
Image Name
-
Bir görüntü seçin
Gerekli görüntüyü seçmek için Select Image seçeneğine tıklayın.
-
Container Registry Enterprise Edition: Alibaba Cloud Container Registry (ACR) üzerinde barındırılan bir Enterprise Edition görüntüsü seçin. Görüntünün bulunduğu bölgeyi ve ACR örneğini seçmeniz gerekir. ACR hakkında daha fazla bilgi için bkz. Container Registry nedir?.
-
Container Registry Personal Edition (önce etkinleştirilmelidir): ACR üzerinde barındırılan bir Personal Edition görüntüsü seçin. Görüntünün bulunduğu bölgeyi ve ACR örneğini seçmeniz gerekir.
-
Artifact center: Konteyner uygulamaları için temel işletim sistemi görüntülerini, dil çalışma zamanı görüntülerini ve yapay zeka/büyük veri ile ilgili görüntüleri içerir. Bu örnekte Artifact Center'dan bir Nginx görüntüsü kullanılır. Daha fazla bilgi için bkz. Artifact Center.
-
-
(İsteğe bağlı) Görüntü çekme ilkesini ayarlayın
Image Pull Policy açılır listesinden bir çekme ilkesi seçin. Varsayılan olarak herhangi bir ilke ayarlanmaz ve Kubernetes IfNotPresent kullanır.
-
IfNotPresent: Görüntü yerel olarak zaten mevcutsa (daha önce ana bilgisayara çekilmişse) tekrar çekilmez. Aksi takdirde görüntü çekilir.
-
Always: Dağıtım veya yatay ölçeklendirme sırasında yerel kopyayı yok sayarak görüntüyü her zaman çeker.
-
Never: Yalnızca yerel görüntüyü kullanır.
-
-
(İsteğe bağlı) Bir görüntü çekme gizli dizisini ayarlayın
Özel görüntülere güvenli bir şekilde erişmek için Set Image Pull Secret seçeneğine tıklayın.
-
ACR Personal Edition örnekleri için bir görüntü çekme gizli dizisi ayarlayarak konteyner görüntüleri çekebilirsiniz. Daha fazla bilgi için bkz. Gizli dizileri yönetin.
-
ACR Enterprise Edition örnekleri için parola ekleme özelliğini kullanarak parolasız görüntü çekme işlemi gerçekleştirebilirsiniz. Ayrıntılar için bkz. ACR görüntülerini parolasız çekin.
-
Required Resources
Konteyner için kaynak kotalarını ayarlayın.
-
CPU: CPU istek ve sınır değerlerini belirtin. Varsayılan olarak istek sınıra eşittir ve faturalama kullandıkça öde yöntemiyle gerçekleştirilir. YAML aracılığıyla farklı bir sınır ayarlarsanız istek, sınırla eşleşecek şekilde üzerine yazılır. Ayrıntılar için bkz. Kaynak teknik özellikleri.
-
Memory: Bellek istek ve sınır değerlerini belirtin. Varsayılan olarak istek sınıra eşittir ve faturalama kullandıkça öde yöntemiyle gerçekleştirilir. YAML aracılığıyla farklı bir sınır ayarlarsanız istek, sınırla eşleşecek şekilde üzerine yazılır. Ayrıntılar için bkz. Kaynak teknik özellikleri.
Interactive Session
(İsteğe bağlı) Konteyner başlatma seçeneklerini yapılandırın.
-
stdin: Konsol girişini konteynere gönderir.
-
tty: Standart giriş konsolunu konteynerin konsol girişi olarak bağlar.
NotGenellikle hem stdin hem de tty birlikte seçilerek terminal (tty) konteynerin standart girişine (stdin) bağlanır. Örneğin, etkileşimli bir program kullanıcı girişini stdin'den okur ve çıktıyı terminalde görüntüler.
Init Containers
(İsteğe bağlı) Başlatma konteyneri oluşturmak için bu seçeneği işaretleyin.
Başlatma konteynerleri, uygulama konteynerlerinin başlatılmasını başarılı olana kadar engelleyen veya geciktiren bir mekanizma sağlar. Başarılı yürütmeden sonra pod içindeki uygulama konteynerleri paralel olarak başlar. Örneğin, bağımlı hizmetlerin kullanılabilirliğini kontrol etmek için başlatma konteynerlerini kullanabilirsiniz. Başlatma konteynerleri, çalışma zamanı ortamını başlatmak için (örneğin, kernel parametrelerini ayarlamak veya yapılandırma dosyaları oluşturmak için) uygulama görüntüsünde bulunmayan yardımcı programlar veya yükleme komut dosyaları içerebilir. Daha fazla bilgi için bkz. Init Containers.
-
-
(İsteğe bağlı) Ports bölümünde konteyner bağlantı noktalarını yapılandırmak için Add seçeneğine tıklayın.
Parametre
Açıklama
Name
Konteyner bağlantı noktası için bir ad belirtin.
Container Port
Açığa çıkarılan konteyner erişim bağlantı noktasını belirtin. Bağlantı noktası numarası 1 ile 65535 arasında olmalıdır.
Protocol
Desteklenen protokoller TCP ve UDP'dir. -
(İsteğe bağlı) Environments bölümünde ortam değişkenlerini yapılandırmak için Add seçeneğine tıklayın.
Ortam bayrakları eklemek veya yapılandırma aktarmak için anahtar-değer çiftlerini kullanarak pod için ortam değişkenlerini yapılandırabilirsiniz. Daha fazla bilgi için bkz. Pod Environment Variables.
Parametre
Açıklama
Type
Ortam değişkeni türünü ayarlayın:
-
Custom
-
ConfigMaps
-
Secrets
-
Value/ValueFrom
-
ResourceFieldRef
ConfigMap ve Secret, tüm dosyalara başvurmayı destekler.
Bu örnekte bir Secret kullanılır. Secrets türünü seçip hedef Secret'ı belirlediğinizde, o Secret'taki tüm dosyalara varsayılan olarak başvurulur. Secret seçtikten sonra bir Variable Name girin ve sağdaki iki açılır listeden karşılık gelen Secret adını ve anahtarını seçin.
İlgili YAML, tüm Secret'a şu şekilde başvurur:
envFrom: - secretRef: name: testVariable Key
Ortam değişkeni adını ayarlayın.
Value/ValueFrom
Başvurulan değişken değerini ayarlayın.
-
-
(İsteğe bağlı) Health Check bölümünde ihtiyaç duyulduğunda Liveness, Readiness ve Startup seçeneklerini etkinleştirin.
Liveness: Bir konteynerin normal çalışıp çalışmadığını belirlemek için kullanılır. Belirtilen sayıda denetim başarısız olursa kubelet konteyneri yeniden başlatır. Canlılık probeleri; deadlock gibi, konteynerin çalışır durumda kalmasına ancak yanıt vermemesine neden olan sorunları tespit edebilir.
Readiness: Bir konteynerin trafiği kabul etmeye hazır olup olmadığını belirlemek için kullanılır. Hazırlık probu başarılı olduktan sonra bir pod hizmet arka ucuna eklenir.
Startup: Konteyner başladığında yalnızca başarılı bir şekilde başlatılıp başlatılmadığını kontrol etmek için yürütülür. Liveness Probe ve Readiness Probe yalnızca başlangıç probu başarılı olduktan sonra yürütülür.
Daha fazla bilgi için bkz. Configure liveness, readiness, and startup probes.
Parametre
Açıklama
HTTP
Konteynere bir HTTP GET isteği gönderir. Desteklenen parametreler şunları içerir:
-
Protocol: HTTP/HTTPS.
-
Path: HTTP sunucusuna erişmek için kullanılan yol.
-
Port: Açığa çıkarılan konteyner bağlantı noktası veya bağlantı noktası adı. Bağlantı noktası numarası 1 ile 65535 arasında olmalıdır.
-
HTTP Header: HTTP isteğindeki özel istek üst bilgileri. HTTP, yinelenen üst bilgilere izin verir. Bunları anahtar-değer çiftleri olarak yapılandırın.
-
Initial Delay (s): initialDelaySeconds parametresi, konteyner başladıktan sonra ilk probu gerçekleştirmeden önce kaç saniye bekleneceğini belirtir. Varsayılan 3 saniyedir.
-
Period (s): periodSeconds parametresi, problar arasındaki zaman aralığını belirtir. Varsayılan 10 saniyedir. Minimum 1 saniyedir.
-
Timeout (s): timeoutSeconds parametresi, prob zaman aşımı süresini belirtir. Varsayılan 1 saniyedir. Minimum 1 saniyedir.
-
Healthy Threshold: Konteyneri sağlıklı olarak işaretlemek için bir arızadan sonra gereken ardışık başarılı prob minimum sayısı. Varsayılan 1'dir. Minimum 1'dir. Canlılık probları için bu değer 1 olmalıdır.
-
Unhealthy Threshold: Konteyneri sağlıksız olarak işaretlemek için başarıdan sonra gereken ardışık başarısız prob minimum sayısı. Varsayılan 3'tür. Minimum 1'dir.
TCP
Konteynere bir TCP soketi açar. Kubelet, belirtilen bağlantı noktasında bir soket açmaya çalışır. Başarılı olursa konteyner sağlıklı kabul edilir; aksi takdirde başarısız olarak işaretlenir. Desteklenen parametreler şunları içerir:
-
Port: Açığa çıkarılan konteyner bağlantı noktası veya bağlantı noktası adı. Bağlantı noktası numarası 1 ile 65535 arasında olmalıdır.
-
Initial Delay (s): initialDelaySeconds parametresi, konteyner başladıktan sonra ilk probu gerçekleştirmeden önce kaç saniye bekleneceğini belirtir. Varsayılan 15 saniyedir.
-
Period (s): periodSeconds parametresi, problar arasındaki zaman aralığını belirtir. Varsayılan 10 saniyedir. Minimum 1 saniyedir.
-
Timeout (s): timeoutSeconds parametresi, prob zaman aşımı süresini belirtir. Varsayılan 1 saniyedir. Minimum 1 saniyedir.
-
Healthy Threshold: Konteyneri sağlıklı olarak işaretlemek için bir arızadan sonra gereken ardışık başarılı prob minimum sayısı. Varsayılan 1'dir. Minimum 1'dir. Canlılık probları için bu değer 1 olmalıdır.
-
Unhealthy Threshold: Konteyneri sağlıksız olarak işaretlemek için başarıdan sonra gereken ardışık başarısız prob minimum sayısı. Varsayılan 3'tür. Minimum 1'dir.
Command
Sağlığını kontrol etmek için konteyner içinde bir komut çalıştırır. Desteklenen parametreler şunları içerir:
-
Command: Konteyner sağlığını kontrol etmek için kullanılan komut.
-
Initial Delay (s): initialDelaySeconds parametresi, konteyner başladıktan sonra ilk probu gerçekleştirmeden önce kaç saniye bekleneceğini belirtir. Varsayılan 5 saniyedir.
-
Period (s): periodSeconds parametresi, problar arasındaki zaman aralığını belirtir. Varsayılan 10 saniyedir. Minimum 1 saniyedir.
-
Timeout (s): timeoutSeconds parametresi, prob zaman aşımı süresini belirtir. Varsayılan 1 saniyedir. Minimum 1 saniyedir.
-
Healthy Threshold: Konteyneri sağlıklı olarak işaretlemek için bir arızadan sonra gereken ardışık başarılı prob minimum sayısı. Varsayılan 1'dir. Minimum 1'dir. Canlılık probları için bu değer 1 olmalıdır.
-
Unhealthy Threshold: Konteyneri sağlıksız olarak işaretlemek için başarıdan sonra gereken ardışık başarısız prob minimum sayısı. Varsayılan 3'tür. Minimum 1'dir.
-
(İsteğe bağlı) Lifecycle bölümünde konteyner yaşam döngüsünü yapılandırın.
Konteyner yaşam döngüsü için önceden başlatma komutlarını, sonrası başlatma işleyicilerini ve öncesi durdurma işleyicilerini yapılandırabilirsiniz. Ayrıntılar için bkz. Configure lifecycle.
Parametre
Açıklama
Start
Konteyner başlamadan önce çalıştırılacak bir komutu ve bağımsız değişkenlerini belirtin.
Post-start Hook
Konteyner başladıktan sonra çalıştırılacak bir komutu belirtin.
Pre-stop Hook
Konteyner sonlandırılmadan önce çalıştırılacak bir komutu belirtin. -
(İsteğe bağlı) Volume bölümünde birimleri konteynere monte edin.
Yerel depolama: ConfigMaps, Secrets veya geçici dizinleri konteyner yollarına monte edin. Daha fazla bilgi için bkz. volumes.
Cloud depolama: Cloud diskleri ve Network Attached Storage (NAS) dahil olmak üzere daha fazlasını destekler. Ayrıntılar için bkz. Depolamaya genel bakış.
-
(İsteğe bağlı) Log bölümünde Collection Configuration ve Custom Tag seçeneklerini yapılandırın.
Parametre
Açıklama
Toplama Ayarları
-
Logstore: Toplanan günlükleri depolamak için Simple Log Service içinde karşılık gelen bir Logstore oluşturur.
-
Log Path in Container (Can be set to stdout): stdout ve metin günlüklerini destekler.
-
Stdout: Konteynerden standart çıkış günlüklerini toplar.
-
Metin günlükleri: Konteyner içindeki belirtilen bir yoldan günlükleri toplar. Bu örnek,
/var/log/nginxaltındaki tüm metin günlüklerini toplar ve joker karakterleri destekler.
-
Özel Etiketler
Özel etiketler de ayarlayabilirsiniz. Yapılandırıldığında bu etiketler konteyner günlükleriyle birlikte dahil edilir. Özel etiketler, analiz sırasında istatistik ve filtrelemeyi kolaylaştırmak için günlüklerinizi kategorilere ayırmanıza yardımcı olur.
-
Next seçeneğine tıklayarak Advanced sihirbazına gidin.
3. Adım: Gelişmiş yapılandırmayı tamamlayın
Advanced sihirbazı sayfasında erişimi, ölçeklendirmeyi, zamanlamayı ve etiketleri/açıklamaları yapılandırın.
-
Access Control bölümünde arka uç pod'larının nasıl açığa çıkarılacağını yapılandırın.
Arka uç pod'larının nasıl açığa çıkarılacağını yapılandırabilirsiniz. Bu örnekte, İnternet üzerinden erişilebilen bir Nginx uygulaması oluşturmak için sanal bir küme IP'si ve bir Ingress kullanılmaktadır.
-
Bir Hizmet yapılandırın: Hizmet parametrelerini ayarlamak için Services öğesinin yanındaki Create seçeneğine tıklayın.
-
Ingress yapılandırın: Arka uç pod'ları için yönlendirme kuralları ayarlamak üzere Ingresses öğesinin yanındaki Create seçeneğine tıklayın.
-
-
(İsteğe bağlı) Scaling bölümünde farklı yükler altında uygulamanın gereksinimlerini karşılamak için HPA özelliğinin etkinleştirilip etkinleştirilmeyeceğini yapılandırın.
-
Container Compute Service, ölçüm tabanlı ölçeklendirmeyi destekler; bu özellik, konteynerlerin CPU ve bellek kullanımına göre pod sayısını otomatik olarak ayarlar.
NotOtomatik ölçeklendirmeyi etkinleştirmek için konteyner için istenen kaynakları belirtmeniz gerekir. Aksi takdirde otomatik ölçeklendirme çalışmaz.
Parametre
Açıklama
Metric
CPU ve belleği destekler. İstenen kaynak türüyle eşleşmelidir.
Trigger Condition
Kaynak kullanım yüzdesi için eşik. Aşıldığında sistem yatay ölçeklendirme gerçekleştirir.
Max. Replicas
Bu iş yükü türü için yatay ölçeklendirilebilecek maksimum konteyner sayısı.
Min. Replicas
Bu iş yükü türü için dikey ölçeklendirilebilecek minimum konteyner sayısı. Container Compute Service, belirli zamanlarda Kubernetes kümelerini otomatik olarak ölçeklendirmek için zamanlanmış ölçeklendirmeyi (CronHPA) da destekler. Zamanlanmış ölçeklendirmeyi etkinleştirmeden önce ack-kubernetes-cronhpa-controller eklentisini yükleyin. Ayrıntılar için bkz. Zamanlanmış ölçeklendirme (CronHPA).
-
(İsteğe bağlı) Labels and Annotations bölümünde pod etiketlerini ve açıklamalarını ayarlamak için Add seçeneğine tıklayın.
Create seçeneğine tıklayın.
4. Adım: Uygulama bilgilerini görüntüleyin
Uygulama oluşturulduktan sonra varsayılan olarak oluşturma tamamlandı sayfasına yönlendirilirsiniz. Dağıtım ayrıntıları sayfasına gitmek için View Details seçeneğine tıklayın.
Dağıtımı Deployments sayfasında da görüntüleyebilirsiniz. Uygulama ayrıntıları sayfasına gitmek için hedef Dağıtımın adına tıklayın veya Actions sütunundaki Details seçeneğine tıklayın.
YAML kullanarak oluşturun
ACS şablon orkestrasyonunda uygulamanız için gerekli kaynak nesnelerini tanımlar ve etiket seçiciler gibi mekanizmalar kullanarak bunları eksiksiz bir uygulama halinde birleştirirsiniz.
Bu örnekte, bir Dağıtım ve bir Hizmet içeren bir orkestrasyon şablonu kullanılarak bir Nginx uygulamasının nasıl oluşturulacağı gösterilmektedir. Dağıtım pod kaynaklarını oluşturur ve Hizmet bu pod'lara bağlanarak eksiksiz bir Nginx uygulaması meydana getirir.
ACS konsolu üzerinde oturum açın. Sol gezinme bölmesinde Clusters öğesine tıklayın.
Clusters sayfasında hedef kümenin adına tıklayın. Sol gezinme bölmesinde Workloads > Deployments seçeneklerini belirleyin.
Deployments sayfasında sağ üst köşedeki Create from YAML seçeneğine tıklayın.
-
Create sayfasında şablonu yapılandırın ve Create seçeneğine tıklayın.
Sample Template: ACS, hızlı dağıtım yapmanıza yardımcı olmak için çeşitli kaynak türleri için Kubernetes YAML örnekleri sağlar. Ayrıca Kubernetes standartlarını takip ederek kendi YAML kodunuzu yazabilirsiniz.
Create Workload: Bu özelliği kullanarak hızlı bir şekilde bir YAML şablonu tanımlayın.
Use Existing Template: Mevcut bir orkestrasyon şablonunu içe aktarın.
Save Template: Yapılandırdığınız orkestrasyon şablonunu kaydedin.
Aşağıdaki örnek YAML dosyası bir Nginx uygulaması tanımlar. Nginx uygulaması için hızlı bir şekilde bir Dağıtım oluşturmak amacıyla bu dosyayı kullanabilirsiniz. Varsayılan olarak CLB türünde bir LoadBalancer hizmeti oluşturulur.
NotACS, Kubernetes YAML orkestrasyonunu destekler. Tek bir şablonda birden çok kaynak nesnesi tanımlamak için
---ayırıcısını kullanın.(İsteğe bağlı) Volume aracılığıyla birimleri monte ederken montaj dizinindeki dosyalar varsayılan olarak üzerine yazılır. Mevcut dosyaları korumak için
subPathparametresini yapılandırın.
Create seçeneğine tıkladıktan sonra dağıtım durumu görüntülenir.
kubectl
Uygulamaları oluşturmak ve görüntülemek için kubectl komutlarını kullanabilirsiniz.
Kümenize bağlanın. Ayrıntılar için bkz. Küme kubeconfig dosyasını alın ve kubectl kullanarak bağlanın veya CloudShell'de kubectl kullanarak Kubernetes kümelerini yönetin.
-
Bir konteyner başlatmak için aşağıdaki komutu çalıştırın. Bu örnekte konteyner bir Nginx web sunucusu çalıştırır.
kubectl create deployment nginx --image=registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest -
Konteyner için bir hizmet uç noktası oluşturmak için aşağıdaki komutu çalıştırın.
--type=LoadBalancerbelirtmek, trafiği Nginx konteynerine yönlendiren bir Alibaba Cloud SLB oluşturur.kubectl expose deployment nginx --port=80 --target-port=80 --type=LoadBalancer -
Çalışan nginx konteynerlerini listelemek için aşağıdaki komutu çalıştırın.
kubectl get pod |grep nginxBeklenen çıktı:
NAME READY STATUS RESTARTS AGE nginx-2721357637-d**** 1/1 Running 1 9h