Amazon EKS’te Temelden İleriye – Bölüm 2: AWS Yönetilen Düğümler ile Worker Node’lar
Amazon EKS (Elastic Kubernetes Service) serimizin ikinci bölümüne hoş geldiniz! İlk bölümde EKS kontrol düzlemini başarıyla kurmuştuk. Şimdi sıra, Kubernetes iş yüklerimizi çalıştıracak olan “worker node”ları yapılandırmaya geldi. Bu bölümde, EKS kümenize worker node’ları entegre etmenin en kolay ve yönetimi en az zahmetli yolu olan AWS Yönetilen Düğümler (AWS Managed Nodes) üzerinde duracağız. AWS Yönetilen Düğümler, Kubernetes operasyonel yükünü önemli ölçüde azaltarak geliştiricilerin ve operatörlerin asıl işlerine odaklanmasını sağlar.
AWS Yönetilen Düğümlerine Giriş ve Avantajları
EKS kontrol düzlemi, Kubernetes API sunucusu gibi kritik bileşenleri barındırırken, iş yükleriniz (Pod’lar) aslında worker node’lar üzerinde çalışır. Bu node’lar, EC2 instance’larından oluşur ve Kubernetes’in talimatlarına göre uygulamalarınızı barındırır. AWS Yönetilen Düğümler, bu EC2 instance’larının yaşam döngüsünü (sağlama, güncelleme, yama uygulama, sonlandırma) sizin adınıza yöneten bir EKS özelliğidir.
Yönetilen Düğümler Nedir?
AWS Yönetilen Düğümler, AWS tarafından sağlanan ve yönetilen bir Otomatik Ölçeklendirme Grubu (Auto Scaling Group – ASG) içinde çalışan EC2 instance’larıdır. Bu düğümler, EKS kümenize otomatik olarak katılır ve Kubernetes kontrol düzlemi ile iletişim kurar. AWS, düğümlerin temel işletim sistemi yamalarını, Kubernetes sürüm güncellemelerini ve diğer operasyonel görevleri üstlenir, böylece sizin operasyonel yükünüzü azaltır.
Temel Avantajları
- Otomatik Sağlama ve Yönetim: Düğüm sağlama, yapılandırma ve sonlandırma süreçleri AWS tarafından otomatikleştirilir.
- Kolay Güncelleme: Kubernetes sürüm güncellemeleri ve işletim sistemi yamaları, düğüm grubunuz için basit bir komutla veya konsol üzerinden başlatılabilir. AWS, bu süreçte düğümlerinizi güvenli bir şekilde günceller.
- Yüksek Erişilebilirlik: ASG entegrasyonu sayesinde, düğümleriniz otomatik olarak ölçeklenir ve herhangi bir düğüm hatası durumunda yenileri ile değiştirilir.
- Güvenlik: AWS, EKS optimize edilmiş AMI’leri düzenli olarak güncelleyerek güvenlik açıklarını kapatır.
Otomatik Yönetim Özellikleri
AWS Yönetilen Düğümler, aşağıdaki temel otomatik yönetim özelliklerini sunar:
- İşletim Sistemi ve Kubernetes Sürüm Güncellemeleri: Düğüm grubunuzun Kubernetes sürümünü veya kullandığı AMI’yi güncellediğinizde, AWS yeni düğümleri eski düğümlerle aşamalı olarak değiştirir.
- Düğüm Değişimi: Sağlık kontrolleri başarısız olan veya sonlandırılan düğümler, ASG tarafından otomatik olarak yenileriyle değiştirilir.
- Sürücü ve Paket Yönetimi: AWS tarafından sağlanan AMI’ler, Kubernetes için gerekli tüm sürücüleri ve paketleri (örneğin, Docker, Kubelet, CNI eklentisi) içerir ve güncel tutulur.
AWS Yönetilen Düğümlerin Temel Mimarisi
AWS Yönetilen Düğümler, EKS kümenizin bir parçası olarak çalışırken, arkasında güçlü bir AWS altyapısı barındırır. Bu mimariyi anlamak, düğümlerinizi daha etkin yönetmenize yardımcı olacaktır.
Otomatik Ölçeklendirme Grupları (ASG)
Her AWS Yönetilen Düğüm grubu, aslında bir AWS Otomatik Ölçeklendirme Grubu tarafından desteklenir. Bu ASG, belirtilen minimum, maksimum ve istenen düğüm sayılarına göre EC2 instance’larını sağlar ve yönetir. Bu sayede, düğümleriniz otomatik olarak ölçeklenebilir ve hatalara karşı dayanıklı hale gelir. Kubernetes Cluster Autoscaler gibi araçlarla entegre edilerek, iş yükünüze göre düğüm sayısını dinamik olarak ayarlayabilir.
AMI ve Güncelleme Süreçleri
AWS, EKS kümeniz için optimize edilmiş özel Amazon Makine Görüntüleri (AMI’ler) sağlar. Bu AMI’ler, Kubernetes bileşenlerini (kubelet, kube-proxy), Docker veya containerd gibi konteyner çalışma zamanlarını ve AWS VPC CNI eklentisini içerir. Düğüm grubunuzu güncellediğinizde, AWS yeni AMI’yi kullanarak yeni düğümleri başlatır ve eski düğümleri güvenli bir şekilde sonlandırır. Bu “rolling update” stratejisi, hizmet kesintisini minimize eder.
IAM Rolleri ve İzinler
Worker node’larınızın EKS kontrol düzlemiyle iletişim kurabilmesi ve diğer AWS hizmetlerine (örneğin, ECR’den imaj çekmek, CloudWatch’a log göndermek) erişebilmesi için belirli IAM izinlerine sahip olması gerekir. AWS Yönetilen Düğümler oluştururken, bu düğümlere atanacak bir IAM rolü belirtirsiniz. Bu rol genellikle AmazonEKSWorkerNodePolicy ve AmazonEC2ContainerRegistryReadOnly gibi AWS tarafından yönetilen politikaları içerir. Kendi özel politikalarınızı da ekleyebilirsiniz.
Ağ Yapılandırması (VPC, Alt Ağlar)
Worker node’larınız, EKS kontrol düzleminizin bulunduğu aynı Amazon VPC’de konuşlandırılmalıdır. Genellikle, node’lar özel alt ağlarda (private subnets) bulunur ve internete erişim için bir NAT Gateway kullanır. Bu yapılandırma, düğümlerinizin güvenliğini artırır ve dışarıdan doğrudan erişimi engeller. Düğümler arası ve düğümler ile kontrol düzlemi arasındaki iletişimin doğru güvenlik grupları ve ağ ACL’leri ile sağlanması kritik öneme sahiptir.
AWS Yönetilen Düğüm Grubu Oluşturma (CLI ve Konsol)
Şimdi EKS kümenize AWS Yönetilen Düğümler eklemeye hazırız. Bu işlemi hem AWS CLI hem de AWS Yönetim Konsolu üzerinden gerçekleştirebiliriz.
Ön Koşullar ve Hazırlık
Düğüm grubu oluşturmadan önce aşağıdaki ön koşulların karşılandığından emin olun:
- Çalışır durumda bir EKS kümesi (Serinin ilk bölümünde oluşturduğumuz gibi).
- EKS kümenizin bulunduğu VPC’de en az iki özel alt ağ (private subnets).
- Yeterli IAM izinlerine sahip bir AWS kullanıcısı veya rolü.
- AWS CLI’nin yüklü ve yapılandırılmış olması (CLI ile oluşturacaksanız).
AWS CLI ile Düğüm Grubu Oluşturma
AWS CLI kullanarak bir düğüm grubu oluşturmak oldukça basittir. Aşağıdaki komut örneğini inceleyelim:
aws eks create-nodegroup \
--cluster-name my-eks-cluster \
--nodegroup-name my-managed-nodes \
--instance-types t3.medium \
--ami-type AL2_x86_64 \
--node-role arn:aws:iam::123456789012:role/EKSNodeRole \
--subnets subnet-0abcdef1234567890 subnet-0fedcba9876543210 \
--scaling-config minSize=2,maxSize=5,desiredSize=3 \
--remote-access ec2SshKey=my-ssh-key \
--tags project=eks-groundup,environment=dev
Yukarıdaki komutta dikkat etmeniz gereken parametreler:
--cluster-name: Düğüm grubunun ekleneceği EKS kümesinin adı.--nodegroup-name: Oluşturulacak düğüm grubunun benzersiz adı.--instance-types: Düğümler için kullanılacak EC2 instance tipi (örneğin,t3.medium,m5.large).--ami-type: Kullanılacak AMI tipi (AL2_x86_64,BOTTLEROCKET_x86_64, vb.).--node-role: Düğümlerin AWS hizmetlerine erişmek için kullanacağı IAM rolünün ARN'si.--subnets: Düğümlerin konuşlandırılacağı alt ağların ID'leri.--scaling-config: Düğüm grubunun minimum, maksimum ve istenen düğüm sayısını belirler.--remote-access ec2SshKey: İsteğe bağlı olarak düğümlere SSH erişimi için bir EC2 anahtar çifti belirtebilirsiniz.
AWS Konsolu Üzerinden Oluşturma
AWS Yönetim Konsolu üzerinden düğüm grubu oluşturmak da oldukça görsel ve kolaydır:
- EKS konsoluna gidin ve kümenizi seçin.
- "Compute" sekmesine tıklayın.
- "Add node group" düğmesine tıklayın.
- Düğüm grubu adını, IAM rolünü, EC2 instance tipini, AMI tipini ve ölçekleme yapılandırmasını belirtin.
- Düğümlerin konuşlandırılacağı alt ağları seçin.
- Gerekirse SSH erişimi ve etiketleri yapılandırın.
- Düğüm grubunu oluşturmak için "Create" düğmesine tıklayın.
Oluşturma Sonrası Doğrulama
Düğüm grubu oluşturulduktan sonra, düğümlerin kümenize katıldığını doğrulamak için kubectl kullanabilirsiniz:
kubectl get nodes
Bu komut, kümenizdeki tüm worker node'ları listeler. Yeni oluşturduğunuz düğümlerin Ready durumunda olduğunu görmelisiniz.
Düğüm Gruplarını Yönetme: Ölçekleme ve Güncelleme
AWS Yönetilen Düğümlerin en büyük avantajlarından biri, yaşam döngüsü yönetiminin kolaylığıdır. Ölçekleme ve güncelleme işlemleri basitleştirilmiştir.
Otomatik ve Manuel Ölçekleme
Düğüm grubunuzun ölçekleme yapılandırmasını (minSize, maxSize, desiredSize) istediğiniz zaman değiştirebilirsiniz. Manuel olarak ölçeklemek için:
aws eks update-nodegroup-config \
--cluster-name my-eks-cluster \
--nodegroup-name my-managed-nodes \
--scaling-config minSize=3,maxSize=7,desiredSize=5
Otomatik ölçeklendirme için ise Kubernetes Cluster Autoscaler'ı EKS kümenize kurup yapılandırmanız gerekir. Cluster Autoscaler, pod gereksinimlerine göre düğüm grubunuzun istenen sayısını otomatik olarak ayarlar ve AWS ASG ile entegre çalışır.
Düğüm Grubu Güncelleme Süreçleri
Düğüm grubunuzun Kubernetes sürümünü veya AMI'sini güncellemek için aşağıdaki komutu kullanabilirsiniz:
aws eks update-nodegroup-version \
--cluster-name my-eks-cluster \
--nodegroup-name my-managed-nodes \
--kubernetes-version 1.28 \
--ami-type AL2_x86_64
Bu komut, belirtilen Kubernetes sürümü veya AMI tipi için yeni düğümleri aşamalı olarak başlatır ve eski düğümleri sonlandırır. Bu süreç, iş yüklerinizin kesintisiz çalışmasını sağlamak için drenaj ve kordonlama işlemlerini içerir.
Düğüm Grubu Silme İşlemi
Bir düğüm grubunu artık ihtiyacınız kalmadığında silebilirsiniz:
aws eks delete-nodegroup \
--cluster-name my-eks-cluster \
--nodegroup-name my-managed-nodes
Bu işlem, düğüm grubundaki tüm EC2 instance'larını sonlandırır ve ilişkili ASG'yi siler.
AWS Yönetilen Düğümler İçin En İyi Uygulamalar
AWS Yönetilen Düğümlerin potansiyelinden tam olarak yararlanmak için bazı en iyi uygulamaları takip etmek önemlidir.
Güvenlik ve IAM Politikaları
Düğüm rollerine en az ayrıcalık ilkesini uygulayın. Yalnızca düğümlerin çalışması için kesinlikle gerekli olan izinleri verin. Güvenlik gruplarını, düğümlerin yalnızca ihtiyaç duyduğu portlardan ve IP aralıklarından gelen trafiğe izin verecek şekilde yapılandırın. Özellikle SSH erişimini kısıtlayın ve mümkünse EC2 Instance Connect veya Session Manager gibi daha güvenli yöntemleri tercih edin.
Maliyet Optimizasyonu Stratejileri
- Spot Instance'lar: Kesintilere dayanıklı iş yükleri için Spot Instance'ları kullanarak maliyetleri önemli ölçüde düşürebilirsiniz. Yönetilen düğüm grupları Spot Instance'ları destekler.
- Graviton İşlemciler: AWS Graviton işlemcili instance tipleri (örneğin,
m6g,c6g) genellikle x86 tabanlı instance'lara göre daha iyi performans/maliyet oranı sunar. - Doğru Boyutlandırma (Right-sizing): İş yüklerinizin CPU ve bellek gereksinimlerini izleyerek düğüm tiplerinizi ve sayılarını doğru boyutlandırın. Gereksiz yere büyük veya çok sayıda düğüm kullanmaktan kaçının.
İzleme ve Günlükleme
Düğümlerinizin ve üzerinde çalışan Pod'ların sağlığını ve performansını sürekli izleyin. AWS CloudWatch Container Insights, düğüm ve pod metriklerini toplamak için harika bir başlangıç noktasıdır. Prometheus ve Grafana gibi açık kaynaklı araçları da entegre edebilirsiniz. Düğüm günlüklerini (kubelet, container runtime) merkezi bir günlükleme sistemine (örneğin, CloudWatch Logs, ELK Stack) yönlendirin.
Çoklu Düğüm Grupları Kullanımı
Farklı iş yükleri veya gereksinimler için birden fazla düğüm grubu oluşturmak iyi bir uygulamadır. Örneğin:
- Kritik sistem Pod'ları için kararlı, On-Demand instance'lardan oluşan bir düğüm grubu.
- Batch veya kesintilere dayanıklı iş yükleri için Spot instance'lardan oluşan bir düğüm grubu.
- CPU yoğun veya GPU gerektiren iş yükleri için özel instance tiplerine sahip düğüm grupları.
Bu, kaynak izolasyonu sağlar ve maliyetleri optimize etmenize yardımcı olur.
Sık Karşılaşılan Sorunlar ve Çözümleri
AWS Yönetilen Düğümlerin yönetimi kolay olsa da, zaman zaman sorunlarla karşılaşabilirsiniz. İşte bazı yaygın sorunlar ve olası çözümleri:
Düğüm Durumu Sorunları
- Düğümler "NotReady" durumunda: Bu genellikle kubelet'in veya CNI eklentisinin düzgün çalışmadığını gösterir. Düğümün sistem günlüklerini (
journalctl -u kubeletveya/var/log/messages) kontrol edin. Güvenlik gruplarının EKS kontrol düzlemiyle iletişime izin verdiğinden emin olun. - Yetersiz Kaynak: Düğümlerin CPU veya bellek kaynakları yetersiz kalıyorsa, yeni Pod'lar zamanlanamayabilir. Düğüm grubunuzu ölçeklendirmeyi veya daha büyük instance tiplerine geçmeyi düşünün.
Ağ İletişim Hataları
- Pod'lar arası iletişim sorunları: Genellikle VPC CNI eklentisi veya güvenlik grubu kurallarıyla ilgilidir. CNI eklentisinin doğru şekilde kurulduğundan ve çalıştığından emin olun. Pod'ların güvenlik gruplarının birbirleriyle iletişime izin verdiğini doğrulayın.
- Dışarıya erişim sorunları: Düğümlerin internete erişmesi gerekiyorsa (örneğin, imaj çekmek için), özel alt ağlarda NAT Gateway'in doğru yapılandırıldığından emin olun.
Güncelleme Sorunları
- Düğüm grubu güncellemesi takıldı: Güncelleme sırasında düğümlerin sonlanmasını engelleyen Pod'lar (örneğin, PDB'ler tarafından korunan) veya yetersiz kaynaklar olabilir. EKS konsolundaki veya CLI'daki hata mesajlarını kontrol edin. Gerekirse güncelleme işlemini iptal edip tekrar deneyin.
Sonuç
Bu bölümde, Amazon EKS kümenize AWS Yönetilen Düğümler ile worker node'ları nasıl ekleyeceğinizi, bu düğümlerin arkasındaki mimariyi, nasıl yönetileceğini ve en iyi uygulamaları detaylı bir şekilde ele aldık. AWS Yönetilen Düğümler, Kubernetes operasyonel yükünü önemli ölçüde azaltarak, uygulamanızın dağıtımına ve yönetimine odaklanmanızı sağlar. Otomatik sağlama, güncelleme ve ölçekleme yetenekleri sayesinde, EKS kümenizin temel altyapısını güvenilir ve verimli bir şekilde çalıştırabilirsiniz. EKS serimizin bir sonraki bölümünde, belki de Fargate ile sunucusuz worker node'ları veya self-managed düğümlerin inceliklerini keşfedeceğiz. Şimdilik, AWS Yönetilen Düğümler ile Kubernetes iş yüklerinizi güvenle çalıştırabilirsiniz!
SSS (Sık Sorulan Sorular)
AWS Yönetilen Düğümler ile Self-Managed Düğümler arasındaki fark nedir?
AWS Yönetilen Düğümler, EC2 instance'larının yaşam döngüsünü (sağlama, güncelleme, yama uygulama) AWS'nin sizin adınıza yönettiği düğümlerdir. Self-Managed Düğümler ise, EC2 instance'larını kendinizin sağladığı, yapılandırdığı, güncellediği ve yönettiği düğümlerdir. Yönetilen düğümler daha az operasyonel yük sunarken, self-managed düğümler daha fazla özelleştirme ve kontrol sağlar.
Yönetilen Düğümler için hangi EC2 instance tiplerini kullanabilirim?
AWS Yönetilen Düğümler, birçok farklı EC2 instance tipini destekler. Genel amaçlı (M serisi), işlemci optimize edilmiş (C serisi), bellek optimize edilmiş (R serisi), burstable (T serisi) ve Graviton işlemcili instance'lar (M6g, C6g, R6g) gibi çeşitli seçenekler mevcuttur. İş yüklerinizin gereksinimlerine en uygun tipi seçebilirsiniz.
Düğümlerin güncellemeleri nasıl yönetilir?
AWS Yönetilen Düğümler için güncellemeler, aws eks update-nodegroup-version komutu veya AWS Konsolu üzerinden başlatılır. AWS, bu süreçte eski düğümleri aşamalı olarak sonlandırır ve yeni AMI veya Kubernetes sürümüne sahip yeni düğümleri başlatır. Bu "rolling update" mekanizması, hizmet kesintisini minimize eder.
Yönetilen Düğümlerin maliyeti nasıl hesaplanır?
AWS Yönetilen Düğümler için ek bir ücret ödemezsiniz. Yalnızca düğüm grubunuzda çalışan temel EC2 instance'ları, EBS depolama, veri transferi ve diğer kullanılan AWS kaynakları için standart EC2 ücretlerini ödersiniz. Spot instance'ları veya Graviton işlemcili instance'lar kullanarak maliyetleri optimize edebilirsiniz.
Bir düğüm grubunda farklı instance tipleri kullanabilir miyim?
Evet, bir AWS Yönetilen Düğüm grubunda birden fazla instance tipi belirtebilirsiniz. AWS, bu instance tiplerini ASG'nin bir parçası olarak kullanır ve genellikle en düşük maliyetli veya en uygun olanı seçerek düğümleri sağlar. Bu özellik, Spot instance'larla birlikte kullanıldığında maliyet optimizasyonu için oldukça etkilidir.