# Ubuntu 22.04’te K3s Kubernetes Kümesi Kurulumu: Adım Adım Kılavuz
Meta Açıklaması: Ubuntu 22.04 sunucularınızda hafif ve hızlı bir Kubernetes kümesi kurmak mı istiyorsunuz? Bu kapsamlı kılavuz, K3s’i adım adım kurulumundan performans optimizasyonuna kadar her şeyi ele alıyor. Yeni başlayanlar için basit, ileri düzey kullanıcılar için ise gelişmiş teknikleri içeriyor. Fatih Soysal tarafından hazırlanmıştır.
Günümüzde mikroservis mimarisi ve konteynerizasyon, yazılım geliştirme dünyasında giderek daha yaygın hale geliyor. Bu mimarilerde uygulamalarınızı yönetmek ve ölçeklendirmek için güçlü bir araç olan Kubernetes’e olan ihtiyaç da artıyor. Ancak, Kubernetes’in kaynak tüketimi yüksek olabilir. İşte tam bu noktada, hafif ve hızlı bir Kubernetes dağıtımı olan K3s devreye giriyor. Bu makalede, Ubuntu 22.04 üzerinde bir K3s kümesi kurulumunu adım adım, farklı seviyelerdeki kullanıcılar için açıklayacağız.
1. Kubernetes ve K3s: Temel Kavramlar
Kubernetes, konteynerleştirilmiş uygulamaları otomatikleştirilmiş bir şekilde dağıtmak, ölçeklendirmek ve yönetmek için kullanılan açık kaynaklı bir platformdur. Birbirleriyle iletişim halinde çalışan ve uygulamalarınızı çalıştıran bir “pod”lar, “node”lar, “service”ler ve diğer bileşenlerden oluşan bir küme (cluster) olarak çalışır. Karmaşık yapılandırmaları ve kaynak gereksinimleri nedeniyle, özellikle küçük ölçekli projeler veya kaynak kısıtlı ortamlar için ideal olmayabilir.
K3s ise Rancher tarafından geliştirilen, Kubernetes’in hafif ve hızlı bir dağıtım sürümüdür. Standart Kubernetes’in tüm temel özelliklerini korurken, daha az kaynak tüketir ve daha hızlı kurulum sağlar. Bu özellikleri, IoT cihazları, edge computing ve küçük ölçekli uygulamalar için ideal hale getirir. K3s, etkilenen bileşenleri çıkararak ve bazı özellikleri devre dışı bırakarak standart Kubernetes’ten daha az kaynak tüketir. Bu, kurulum süresini kısaltır ve kaynak kullanımını optimize eder. Ancak, bazı gelişmiş Kubernetes özellikleri K3s’te bulunmayabilir.
2. Kuruluma Hazırlık: Sunucu Hazırlığı
Öncelikle, Ubuntu 22.04 işletim sistemine sahip en az üç sunucuya ihtiyacınız olacak: biri master node (ana düğüm) ve en az ikisi worker node (çalışan düğüm). Bu makalede, her üç sunucuda da aynı işletim sisteminin kurulu olduğunu varsayacağız. Her sunucunun sabit IP adresi olması ve birbirleriyle ağ üzerinden iletişim kurabilmesi gerekmektedir. SSH erişimi de sağlanmalıdır.
Örnek Sunucu Adları:
* master: 192.168.1.10
* worker1: 192.168.1.11
* worker2: 192.168.1.12
3. K3s Master Node’un Kurulumu: Adım Adım
Bu bölümde, master node’a K3s’i nasıl kuracağınızı adım adım açıklayacağız.
Yeni Başlayanlar İçin (Adım adım açıklama, Basit kod örneği):
1. Paket Yöneticisini Güncelle: sudo apt update && sudo apt upgrade -y komutu ile sistem paketlerini güncelleyin.
2. curl ile K3s İndir: curl -sfL https://get.k3s.io | sh - komutu ile K3s’i indirip kurun. Bu işlem, K3s’i varsayılan konfigürasyonlarla kuracaktır.
3. K3s Durumunu Kontrol Et: sudo k3s kubectl get nodes komutu ile K3s’in doğru şekilde kurulduğunu ve çalıştığını doğrulayın. Bu komut, master node’un durumunu gösterecektir.
Orta Seviye (Gerçek hayat örneği, Optimizasyon ipuçları):
Gerçek bir senaryoda, daha özel konfigürasyonlar kullanmak isteyebilirsiniz. Örneğin, Kubernetes’in API sunucusunun dinlediği portu değiştirmek veya belirli bir ağ arayüzü kullanmak için aşağıdaki gibi bir komut kullanabilirsiniz:
curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="static" K3S_NODE_IP= K3S_API_SERVER_PORT=6443 sh -
Burada yerine master node’un IP adresini yazmalısınız. Bu örnek, API sunucusunun 6443 portunu dinlemesini ve statik bir kubeconfig dosyası oluşturmasını sağlar.
İleri Düzey (Performans analizi, Edge caseler):
Daha karmaşık senaryolar için, K3s’in performansını analiz etmek ve olası sorunları gidermek önemlidir. kubectl top nodes komutu, node’ların kaynak kullanımını (CPU, bellek) gösterir. Ayrıca, journalctl -u k3s komutu ile K3s loglarını inceleyerek olası hataları tespit edebilirsiniz. Bazı edge case’ler, ağ bağlantısı sorunları veya yetersiz disk alanı olabilir. Bu durumlar için, ağ konfigürasyonunuzu kontrol etmeli ve disk alanınızı optimize etmelisiniz.
4. K3s Worker Node’ların Kurulumu: Bağlantı ve Yapılandırma
Worker node’ları master node’a eklemek için aşağıdaki adımları izleyin.
Yeni Başlayanlar:
1. Her worker node’da curl -sfL https://get.k3s.io | K3S_URL=https://:6443 sh - komutunu çalıştırın. yerine master node’un IP adresini yazın. Bu komut, worker node’u master node’a bağlayacaktır.
2. sudo k3s kubectl get nodes komutu ile tüm node’ların durumunu kontrol edin. Tüm node’ların “Ready” durumunda olması gerekir.
Orta ve İleri Seviyeler:
Daha gelişmiş senaryolar için, K3S_TOKEN değişkenini kullanarak worker node’ların güvenli bir şekilde eklenmesini sağlayabilirsiniz. Master node’da cat /var/lib/rancher/k3s/server/node-token komutu ile token’ı alabilirsiniz. Bu token’ı worker node’larda kurulum komutunda kullanabilirsiniz. Bu, güvenliği artırır ve yetkisiz eklemeleri önler.
Ayrıca, özel ağ konfigürasyonları veya güvenlik duvarı kuralları gerekebilir. Ağ bağlantınızı ve güvenlik duvarı kurallarınızı dikkatlice kontrol edin.
5. Uygulama Dağıtımı: İlk Kubernetes Uygulamanız
K3s kümeniz kurulduktan sonra, ilk uygulamanızı dağıtabilirsiniz. Örneğin, bir Nginx web sunucusunu dağıtmak için aşağıdaki YAML dosyasını kullanabilirsiniz:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
Bu dosyayı nginx-deployment.yaml olarak kaydedin ve kubectl apply -f nginx-deployment.yaml komutu ile dağıtın. kubectl get pods komutu ile pod’ların durumunu kontrol edebilirsiniz. kubectl get services komutu ile Nginx servisini görüntüleyebilirsiniz.
6. K3s Kümesinin Yönetimi ve İzlenmesi
K3s kümesini yönetmek ve izlemek için kubectl komutunu kullanabilirsiniz. kubectl get nodes, kubectl get pods, kubectl get services gibi komutlar, kümenin durumunu ve kaynak kullanımını gösterir. Ayrıca, kubectl describe komutu, belirli bir kaynak hakkında detaylı bilgi sağlar.
Performans Optimizasyonu:
K3s’in performansını optimize etmek için, node’larınızın kaynaklarını (CPU, bellek, disk) dikkatlice izleyin ve gereksinimlere göre ölçeklendirin. Ayrıca, gereksiz hizmetleri devre dışı bırakabilir ve gereksiz pod’ları silebilirsiniz.
7. Gerçek Dünya Senaryoları: Vaka Analizleri
Senaryo 1: Küçük Ölçekli Uygulama Dağıtımı: Bir IoT cihazı ağında, K3s, kaynak kısıtlı cihazlar üzerinde uygulamaları yönetmek için ideal bir çözümdür.
Senaryo 2: Edge Computing: K3s, edge computing ortamlarında, veri merkezlerinden uzakta çalışan uygulamaları yönetmek için kullanılabilir. Bu, gecikmeyi azaltır ve bant genişliğini optimize eder.
Senaryo 3: Geliştirme ve Test Ortamı: K3s, geliştirme ve test ortamları için hızlı ve kolay bir Kubernetes kümesi kurulumu sağlar.
8. Sıkça Sorulan Sorular (SSS)
1. K3s ile standart Kubernetes arasında ne fark var? K3s, standart Kubernetes’ten daha hafif ve hızlıdır ve daha az kaynak tüketir. Ancak, bazı gelişmiş özellikler K3s’te bulunmayabilir.
2. K3s’i nasıl yedekleyebilir ve geri yükleyebilirim? K3s’in yedekleme ve geri yükleme mekanizmaları vardır. Bununla ilgili daha detaylı bilgi için [Fatih Soysal’ın Kubernetes blog yazıları](https://fatihsoysal.com)na bakabilirsiniz. (Buraya ilgili bir blog yazısı linki eklenebilir)
3. K3s kümesinde node ekleme/çıkarma nasıl yapılır? Worker node eklemek için token kullanarak, çıkarırken ise kubectl delete node komutunu kullanabilirsiniz.
4. K3s’in güvenliği nasıl sağlanır? Güvenliği sağlamak için, güçlü şifreler kullanın, ağınızı koruyun ve güvenlik duvarı kurallarınızı doğru şekilde yapılandırın.
5. K3s’i güncellemek için nasıl bir yol izleyebilirim? sudo k3s upgrade komutu ile K3s’i güncelleyebilirsiniz.
Sonuç
Bu makalede, Ubuntu 22.04 üzerinde bir K3s Kubernetes kümesi kurulumunu adım adım açıkladık. Farklı seviyelerdeki kullanıcılar için ayrıntılı açıklamalar ve gerçek dünya senaryoları sunarak, K3s’in avantajlarını ve nasıl kullanılacağını gösterdik. K3s, hafif ve hızlı yapısıyla, birçok senaryoda ideal bir Kubernetes çözümüdür. Ancak, daha gelişmiş özelliklere ihtiyaç duyuyorsanız, standart Kubernetes dağıtımlarını tercih etmeniz gerekebilir. Daha detaylı bilgi ve ileri seviye konular için [Fatih Soysal’ın web sitesini](https://fatihsoysal.com) ziyaret edebilirsiniz.
Yazar: Fatih Soysal
