Merhaba sevgili okurlar! Bu blog yazısında, Kubernetes Namespace yönetimini ve kaynak sınırlandırmalarını nasıl yapacağınızı adım adım anlatacağım. Kubernetes, uygulamalarınızı izole etmek ve yönetmek için Namespaces kullanır. Kaynak sınırlandırmaları ise, uygulamalarınızın adil ve verimli bir şekilde kaynak tüketimini sağlar. Hadi başlayalım!

Adım 1: Kubernetes Namespace Oluşturma

Kubernetes Namespaces, bir cluster içindeki kaynakları izole etmek için kullanılır. Yeni bir namespace oluşturmak için aşağıdaki komutu kullanabilirsiniz:

kubectl create namespace my-namespace

Namespace’leri listelemek için:

kubectl get namespaces

Adım 2: Namespace İçinde Kaynakları Yönetme

Oluşturduğunuz namespace içinde pod, service gibi kaynakları oluşturmak için YAML dosyalarında metadata.namespace alanını belirtmelisiniz:

apiVersion: v1
kind: Pod
metadata:
name: my-pod
namespace: my-namespace
spec:
containers:
- name: my-container
image: nginx

Yukarıdaki YAML dosyasını uygulamak için:

kubectl apply -f my-pod.yaml

Belirli bir namespace içindeki kaynakları listelemek için:

kubectl get pods -n my-namespace

Adım 3: Kaynak Kotaları Belirleme

Kubernetes, Namespaces içinde kaynak kullanımını sınırlamak için Resource Quotas (Kaynak Kotaları) sağlar. Aşağıdaki örnek, bir namespace içinde CPU ve bellek kullanımını sınırlayan bir kaynak kotası oluşturur:

apiVersion: v1
kind: ResourceQuota
metadata:
name: my-quota
namespace: my-namespace
spec:
hard:
requests.cpu: "1"
requests.memory: 1Gi
limits.cpu: "2"
limits.memory: 2Gi

Bu YAML dosyasını uygulamak için:

kubectl apply -f my-quota.yaml

Kaynak kotasını kontrol etmek için:

kubectl get resourcequota -n my-namespace

Adım 4: LimitRange ile Pod Sınırlandırmaları

LimitRange, bir namespace içindeki pod ve container’lar için varsayılan kaynak istekleri ve sınırları belirler. Aşağıdaki örnek, bir namespace içindeki pod’lar için varsayılan ve maksimum CPU ve bellek sınırlarını belirler:

apiVersion: v1
kind: LimitRange
metadata:
name: my-limitrange
namespace: my-namespace
spec:
limits:
- default:
cpu: 500m
memory: 512Mi
defaultRequest:
cpu: 200m
memory: 256Mi
max:
cpu: "1"
memory: 1Gi
min:
cpu: 100m
memory: 128Mi
type: Container

Bu YAML dosyasını uygulamak için:

kubectl apply -f my-limitrange.yaml

LimitRange’i kontrol etmek için:

kubectl get limitrange -n my-namespace

Adım 5: Kaynak Sınırlandırmalarının Etkisini İzleme

Namespace içinde kaynak sınırlandırmalarının etkilerini izlemek için, pod ve container’ların kaynak kullanımını gözlemleyin:

kubectl top pod -n my-namespace

Bu komut, pod’ların mevcut CPU ve bellek kullanımını gösterir.

Tebrikler! Kubernetes Namespace yönetimi ve kaynak sınırlandırmalarını öğrenmiş oldunuz. Namespaces, kaynakları izole etmek ve yönetmek için güçlü bir araçtır. Kaynak kotaları ve LimitRange ile uygulamalarınızın adil ve verimli bir şekilde çalışmasını sağlayabilirsiniz. Sorularınız olursa yorumlarda belirtmeyi unutmayın!