Merhaba bu yazıda; Amazon Web Services(AWS) üzerindeki Elastic Kubernetes Services(EKS) üzerinde kubernetes ortamı nasıl kurulur ve yönetilir ona bakacağız.
Yapılacaklar sırasıyla;
EKS Cluster ve Node’lar için gerekli Policy’ler ayarlanacak.
Kubernetes’ı kuracağımız Security Groups’ta port ayarları yapılacak.
Kubernetes kurulumu yapılacak.
Kubernetes’e içeriden erişebilmek için, Management makinesi oluşturulacak. AWS CLI üzerinden Kubernetes yönetilecek.
Kubernetes Node’lar oluşturulacak.
Konsolda sağ taraftan Security Credentials’a tıklayın.
Sol taraftan Roles’a tıklayın.
Sağ taraftan Create Role’a tıklayın.
AWS Service’i seçin, alt tarafta EC2’yu seçin ve Next’e tıklayın.
Arama kısmına CNI yazın ve karşınıza çıkan AmazonEKS_CNI_Policy’i seçin.
Arama kısmına EBS yazın ve karşınıza çıkan AmazonEBSCSIDriverPolicy’i seçin.
Arama kısmına container yazın ve karşınıza çıkan AmazonEC2ContainerRegistryReadOnly’i seçin.
Arama kısmına node yazın, karşınıza çıkan AmazonEKSWorkerNodePolicy’i seçin ve Next’e tıklayın.
Rol’e isim verin. Ben slaveNode ismiyle devam ediyorum.
Rol’ü oluşturuldu. İçindeki Policy’ler şu şekilde;
-AmazonEKS_CNI_Policy
-AmazonEBSCSIDriverPolicy
-AmazonEC2ContainerRegistryReadOnly
-AmazonEKSWorkerNodePolicy
Sıra EKS Cluster için Rol oluşturmada. Roller kısmında sağ üstteki Create Role’e tıklayın.
Altta AWS servislerinden EKS seçin, EKS’nin altındaki EKS-Cluster’ı seçin ve Next’e tıklayın.
Policy otomatik olarak geldi. Next’e tıklayın.
Oluşturacağınız role isim verin. Ben eksClusterMaster ismiyle devam ediyorum.
Sağ alttaki Create Role’e tıklayıp Rolü oluşturun.
Oluşturduğunuz Role 1 tane policy eklenmesi gerekiyor. Sağ taraftaki Add Permissions kısmından Attach’e tıklayın.
Arama kısmına EBS yazın ve karşınıza çıkan AmazonEBSCSIDriverPolicy’i seçip sağ alttan Add Permissions’a tıklayın.
Sıra VPC’deki Security Group’u ayarlamada.
Arama kısmına VPC yazın ve kırmızı kutu içerisine aldığım servise tıklayın.
Sol tarafta bulunan menüde Security kısmındaki, Security Groups’a tıklayın.
Sağ taraftaki Create Security Groups’a tıklayın.
Inbound kurallarını aşağıdaki gibi ayarlayın. Outbound’ı da All Traffic seçebilirsiniz.
Şimdi sıra EKS üzerinde Cluster oluşturmada.
Arama kısmına EKS yazın, kırmızı kutu içerisine aldığım servise tıklayın.
Add Cluster kısmından Create’a tıklayın.
Cluster’ımın adını eksMaster yaptım. Version olarak 1.27 ile ilerliyorum.
Service Role’de, daha demin oluşturduğunuz Rolü seçin.
Hangi VPC’nin hangi Subnet’i üzerine kurulum yapacaksanız, ona göre seçin.
Daha demin oluşturduğunuz Security Groups’u seçin.
Cluster Endpoint kısmını Public and Private seçin. Public seçerseniz, Node’larını dışarıdan erişime açık olacaktır.
Logging kısmında Scheduler hariç hepsini seçerek ilerleyin.
Default’ta gelen Add-Ons’ları göstermekte. Next diyin.
Add-Ons’ları Next diyerek onaylayın.
Son aşamada konfigürasyonlarınızı kontrol edip Create’a tıklayın.
Cluster kurulumu başladı, yaklaşık 10 dakika sürmektedir.
Kurulum bitti Status Active gözükmekte.
Sıra kubernetes’ı aws-cli üzerinden yöneteceğimiz bir makine oluşturmada.
Arama kısmında EC2 yazın ve kırmızı kutu içerisine aldığım servise tıklayın.
Sağ taraftaki Launch Instances’a tıklayın.
İşim aws-cli’yla olduğu için direkt olarak amazon-linux dağıtımı kuracağım. İçindeki aws-cli paketi default olarak gelmektedir.
SSH Key ve Security Groups’u seçiniz. Kubernetes’ınızın ile aynı Security Groups’ta olmalıdır.
Sanal makinemiz oluşturuldu. Sağ tarafttan Connect’e tıklayın.
EC2 Instance Connect kısmından bağlanacağız. Direkt olarak sağ alttaki Connect’e tıklayın.
Sanal makineye bağlandık. AWS Access Key ve Secret Key’i girmek için; aşağıdaki kodu yazın.
aws configure
Girilen credentials’ın doğru olup olmadığını kontrol etmek için S3 Bucket’ları çağırmayı deneyin. Ben doğru girdiğim için sorunsuz çağırıyor.
aws s3 ls
Oluşturduğunuz cluster’ın durumunu check etmek için aşağıda kodu girin. Region ve Name kısmını kendi kurulumunuza göre düzenleyin.
aws eks --region us-east-1 describe-cluster --name eksMaster --query cluster.status
Sanal makineye kubectl’i kuralım.
https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html adresinde aşama aşama anlatmaktadır.
Uygun dağıtımı bulun, ben Linux amd64’ile devam edeceğim.
Öncelikle k8s adında bir klasör oluşturun.
mkdir k8s
Klasörün içine girin.
cd k8s
Aşağıdaki kodu yapıştırıp, dağıtımı indirin.
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.1/2023-04-19/bin/linux/amd64/kubectl
Daha sonra sırasıyla tek tek aşağıdaki kodları girin.
chmod +x ./kubectl mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc kubectl version --short --client
En son satırdaki version kodunu yazdığınızda kırmızı kutu içerisine aldığım yazıyı cevap olarak almanız gerekmektedir. Doğru kurulduğunun kanıtı bu cevaptır.
Oluşturduğunuz Cluster’ı, sanal makine’ye tanıtmak için aşağıdaki kodu girin. Name’i ve Region’u kendi kurulumunuza göre değiştirin.
aws eks --region us-east-1 update-kubeconfig --name eksMaster
Kubernetes’daki namespaces’lere bir bakalım.
kubectl get namespaces
Ortamdaki node’ları çağıralım.
kubectl get nodes
Ortamda herhangi bir node olmadığını belirten bir cevap döndürdü.
Şimdi sıra 2 adet Node eklemede.
EKS üzerinden Cluster’a girin. Ardından Compute kısmına gelin. Kırmızı kutu içerisine aldığım Add Node Group’a tıklayın.
Node group’unuzun adını belirleyin ve daha önce oluşturduğunuz Rol’ü seçin.
Node’larınızı hangi dağıtım üzerinde oluşturmak istiyorsanız seçin, ben Amazon Linux ile devam edeceğim.
Node Scaling bölümünü kaç Node’la çalışacaksanız, kendinize göre ayarlayın.. Ben 2 Node’la ilerliyorum.
EKS’yi kurduğunuz VPC’nin Subnet’lerini seçin ve ilerleyin.
Son aşamada konfigürasyonları kontrol edip Create’e tıklayın.
Biraz bekledikten sonra Node Group’un oluşturulduğu ve Node’ların geldiği görülecektir.
Kurduğunuz sanal makineye tekrardan geri dönün ve aşağıdaki kodu yazın.
kubectl get nodes
Görüldüğü üzere node’lar sorunsuz olarak çalışmakta.