1. Yanlış Kaynak Limiti ve İstek Konfigürasyonu
Kubernetes'le çalışırken, her pod'un kaynak ihtiyacını doğru şekilde belirtmek kritik öneme sahiptir. Kaynak limitleri ve istekler, pod'ların ihtiyaç duyduğu CPU ve bellek miktarını belirler. Eğer bu değerler doğru ayarlanmazsa, cluster kaynakları verimsiz kullanılır ve pod'lar aşırı yüklenebilir.
Çözüm: Kaynak isteklerini ve limitlerini doğru şekilde belirlemek için her bir pod’un gereksinimlerini analiz edin. Aşağıda basit bir örnek verilmiştir:
resources:
requests:
memory: "256Mi"
cpu: "500m"
limits:
memory: "512Mi"
cpu: "1"
2. Excessive Pod Replica Count
Cluster’ınızdaki her servis için gereksiz yere fazla replica (kopya) sayısı ayarlamak, kaynakların israfına yol açabilir ve sistemi gereksiz yere yavaşlatabilir. Pod sayısının fazla olması, yöneticilerin bir cluster üzerinde ekstra iş yükü yaratmasına neden olabilir.
Çözüm: İhtiyacınıza uygun replica sayısını belirleyin. Yük dengelemesi ve pod ölçeklendirmesi konusunda doğru ayarları yaparak, sistemin verimli çalışmasını sağlayabilirsiniz.
replicas: 3
3. Yetersiz HPA (Horizontal Pod Autoscaling) Ayarları
Kubernetes'in autoscaling özellikleri, iş yükünü dengelemek için önemlidir. Ancak, Horizontal Pod Autoscaler (HPA) doğru şekilde yapılandırılmadığında, sistem istenilen performansı göstermez ve bazı pod’lar tıkanabilir.
Çözüm: HPA’yı doğru bir şekilde yapılandırarak, pod’larınızın yük durumuna göre otomatik olarak ölçeklenmesini sağlayın.
apiVersion: apps/v1
kind: Deployment
spec:
replicas: 1
template:
spec:
containers:
- name: my-app
image: my-app-image:latest
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
autoscaler:
minReplicas: 1
maxReplicas: 5
targetCPUUtilizationPercentage: 80
4. Gereksiz Pod Affinity ve Anti-Affinity Kuralları
Kubernetes'teki affinity ve anti-affinity kuralları, pod'lar arasında belirli ilişkiler kurmanıza yardımcı olur. Ancak, gereksiz veya aşırı karmaşık kurallar, cluster'ınızı karmaşık hale getirebilir ve bu da performansı olumsuz etkileyebilir.
Çözüm: Gereksiz pod affinity ve anti-affinity kurallarını basitleştirin ve sadece gerçekten gerekli olduklarında kullanın.
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
app: my-app
topologyKey: kubernetes.io/hostname
5. Excessive Logging ve Log Sıkıştırması
Kubernetes cluster'ınızda fazla sayıda log tutmak, gereksiz yere disk alanını doldurabilir ve performansı etkileyebilir. Ayrıca, log'ların sıkıştırılmaması da sistem kaynaklarını gereksiz yere tüketebilir.
Çözüm: Gereksiz log kayıtlarını filtreleyin ve log'ları sıkıştırarak disk alanından tasarruf edin. Ayrıca, log seviyelerini dikkatlice ayarlayın.
6. Yanlış Kullanıcı İzinleri ve RBAC Konfigürasyonu
Kubernetes RBAC (Role-Based Access Control), kullanıcıların erişim izinlerini yönetmenizi sağlar. Yanlış konfigüre edilmiş RBAC izinleri, sistemde gereksiz yük yaratabilir ve güvenlik açıklarına yol açabilir.
Çözüm: Kullanıcıların sadece ihtiyaç duyduğu kaynaklara erişmesini sağlayın. Aşağıda basit bir RBAC kuralı örneği verilmiştir:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-reader
rules:
- verbs: ["get", "list"]
apiGroups: [""]
resources: ["pods"]
7. Network Policy Eksiklikleri
Cluster içerisindeki pod'lar arasındaki iletişimi yöneten network policies, güvenliği ve verimliliği artırmada önemli rol oynar. Network policies eksik olduğunda, istemci taleplerinin yönlendirilmesi yavaşlayabilir.
Çözüm: Pod’lar arasındaki trafik düzenlemelerini doğru network policy'lerle yapılandırın. Bu, gereksiz ağ trafiğini engelleyerek performansı artıracaktır.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-from-other-pods
namespace: default
spec:
podSelector: {}
ingress:
- from:
- podSelector: {}
Sonuç
Kubernetes cluster'ınızı hızlandırmak, sadece doğru konfigürasyonları yapmakla kalmaz, aynı zamanda cluster'ın verimli bir şekilde çalışmasını sağlar. Bu yazıda paylaştığımız 7 yaygın konfigürasyon hatasını düzelterek, cluster'ınızın performansını büyük ölçüde artırabilirsiniz. Unutmayın, doğru yapılandırma ile Kubernetes'in gücünden tam anlamıyla yararlanabilirsiniz.