Kubernetes (kısaca k8s) günümüzde uygulama geliştirme ve dağıtımının en popüler araçlarından biridir. K8s, uygulamaların hızlı ve güvenli bir şekilde çalıştırılmasını sağlar, ölçeklenebilirlik ve yüksek kullanılabilirlik gibi özellikleri destekler. Kubectl ise, K8s kümesini yönetmek için kullanılan komut satırı arayüzüdür. Bu makalede, kubectl’in ne olduğunu, nasıl kullanıldığını ve bazı örnekleri göstereceğiz.
Kubectl Nedir?
Kubectl, Kubernetes kümesine bağlanmak ve yönetmek için kullanılan bir komut satırı arayüzüdür. Kubectl, bir K8s kümesinden çıktı alabilir, nesneleri (örneğin pod, servis, deployment vb.) listeyebilir, oluşturabilir veya silinebilirler. Ayrıca, bu arayüz aracılığıyla, K8s kaynaklarının durumunu izleyebilir ve güncelleyebilirsiniz.
Kubectl Nasıl Kurulur?
Kubectl, genellikle Kubernetes’i kurduğunuzda otomatik olarak yüklenir. Ancak, yüklemediyseniz, aşağıdaki adımları izleyerek kubectl’i kurabilirsiniz:
- Kubernetes.io adresinden işletim sisteminize uygun Kubernetes CLI sürümünü indirin.
- İndirdiğiniz dosyayı açın ve
kubectl
dosyasını çıkartın. kubectl
dosyasını PATH değişkenine ekleyin.
İşte, kubectl kurulumu tamamlanmıştır! Şimdi, kubectl’in temel kullanımını öğrenelim.
Kubectl Kullanımı
1. Kubectl Temel Komutları
İşte, kubectl’in temel komutları:
kubectl get
: Kaynakları (pod, servis, deployment vb.) listeler.kubectl create
: Kaynakları (pod, servis, deployment vb.) oluşturur.kubectl delete
: Kaynakları (pod, servis, deployment vb.) siler.kubectl describe
: Belirli bir kaynağın ayrıntılarını gösterir.kubectl apply
: Bir YAML dosyasındaki kaynakları uygular veya günceller.kubectl logs
: Bir pod içindeki konteynerlerden logları alır.kubectl exec
: Bir pod içindeki konteynere komut çalıştırır.
2. Kubectl Örnekleri
Kubectl’in kullanımını daha iyi anlamak için, bazı örnekleri inceleyeceğiz.
Örnek 1: Pod Üzerinde Çalışmak
Podlar, herhangi bir uygulamanın temel yapı taşıdır. Bir pod, bir veya birden fazla konteynere sahip olabilir. İşte, bir pod oluşturmak için kullanabileceğiniz basit bir YAML dosyası:
```
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
ports:
- containerPort: 80
```
Yukarıdaki YAML dosyasındaki kubectl create
komutunu kullanarak bir pod oluşturabilirsiniz:
kubectl create -f my-pod.yaml
Bir pod oluşturduktan sonra, kubectl get pods
komutunu kullanarak tüm podların durumunu görüntüleyebilirsiniz.
Örnek 2: Servis Oluşturma
Servisler, podlara erişmek için kullanılır. Servisler IP adresleri üzerinden podlara yönlendirme yapar. İşte, bir servis oluşturmak için kullanabileceğiniz basit bir YAML dosyası:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my
kubectl create -f my-service.yaml
Bir servis oluşturduktan sonra, `kubectl get services` komutunu kullanarak tüm servislerin durumunu görüntüleyebilirsiniz.
Örnek 3: Deployment Yönetimi
Deployments, herhangi bir uygulamanın yüksek kullanılabilirliğini sağlamak için kullanılır. Bir deployment kullandığınızda, birden fazla pod örneği çalıştırarak yüksek kullanılabilirlik elde edersiniz. İşte, bir deployment oluşturmak için kullanabileceğiniz basit bir YAML dosyası:
```
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx
ports:
- containerPort: 80
```
Yukarıdaki YAML dosyasındaki `kubectl create` komutunu kullanarak bir deployment oluşturabilirsiniz:
kubectl create -f my-deployment.yaml
Bir deployment oluşturduktan sonra, `kubectl get deployments` komutunu kullanarak tüm deploymentların durumunu görüntüleyebilirsiniz.
#### Örnek 4: Namespace Yönetimi
Namespace'ler, kümenizdeki kaynakları gruplamak için kullanılır. Namespace'ler, aynı fiziksel kümede çalışan farklı işletim birimleri arasında kaynak çakışmalarını önlemek için de kullanılabilir. İşte, bir namespace oluşturmak için kullanabileceğiniz basit bir YAML dosyası:
apiVersion: v1
kind: Namespace
metadata:
name: my-namespace
Yukarıdaki YAML dosyasındaki `kubectl create` komutunu kullanarak bir namespace oluşturabilirsiniz:
kubectl create -f my-namespace.yaml
Bir namespace oluşturduktan sonra, `kubectl get namespaces` komutunu kullanarak tüm namespace'lerin durumunu görüntüleyebilirsiniz.
## Kubectl Kullanımında Dikkat Edilmesi Gerekenler
Kubectl'in kullanımı, dikkat edilmesi gereken bazı hususlar içerir. İşte, kubectl kullanırken dikkat etmeniz gereken bazı noktalar:
- K8s kümesine bağlanmadan önce `kubectl config get-contexts` komutu ile doğru bağlantıyı seçtiğinizden emin olun.
- Kaynakları oluşturmadan önce, doğru YAML dosyasını kontrol edin veya oluşturun ve `kubectl apply` komutu ile kaynakları oluşturun.
- Eğer birden fazla kaynak varsa, `kubectl delete` komutuyla hepsini silmek yerine, belirli bir kaynağı silmek için doğru seçici etiketleri kullanın.
- Verilerinizin güvenliği için, kubectl kullanıcı kimlik doğrulama yöntemlerinin nasıl yapılandırıldığı hakkında bilgi edinmelisiniz ve bu yöntemleri düzenli olarak kontrol etmelisiniz.
Yukarıdaki YAML dosyasındaki `kubectl create` komutunu kullanarak bir servis oluşturabilirsiniz:
kubectl create -f my-service.yaml
Bir servis oluşturduktan sonra, `kubectl get services` komutunu kullanarak tüm servislerin durumunu görüntüleyebilirsiniz.
#### Örnek 3: Deployment Yönetimi
Deployments, herhangi bir uygulamanın yüksek kullanılabilirliğini sağlamak için kullanılır. Bir deployment kullandığınızda, birden fazla pod örneği çalıştırarak yüksek kullanılabilirlik elde edersiniz. İşte, bir deployment oluşturmak için kullanabileceğiniz basit bir YAML dosyası:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx
ports:
- containerPort: 80
Yukarıdaki YAML dosyasındaki `kubectl create` komutunu kullanarak bir deployment oluşturabilirsiniz:
kubectl create -f my-deployment.yaml
Bir deployment oluşturduktan sonra, `kubectl get deployments` komutunu kullanarak tüm deploymentların durumunu görüntüleyebilirsiniz.
#### Örnek 4: Namespace Yönetimi
Namespace'ler, kümenizdeki kaynakları gruplamak için kullanılır. Namespace'ler, aynı fiziksel kümede çalışan farklı işletim birimleri arasında kaynak çakışmalarını önlemek için de kullanılabilir. İşte, bir namespace oluşturmak için kullanabileceğiniz basit bir YAML dosyası:
apiVersion: v1
kind: Namespace
metadata:
name: my-namespace
Yukarıdaki YAML dosyasındaki `kubectl create` komutunu kullanarak bir namespace oluşturabilirsiniz:
kubectl create -f my-namespace.yaml
“`
Bir namespace oluşturduktan sonra, kubectl get namespaces
komutunu kullanarak tüm namespace’lerin durumunu görüntüleyebilirsiniz.
Kubectl Kullanımında Dikkat Edilmesi Gerekenler
Kubectl’in kullanımı, dikkat edilmesi gereken bazı hususlar içerir. İşte, kubectl kullanırken dikkat etmeniz gereken bazı noktalar:
- K8s kümesine bağlanmadan önce
kubectl config get-contexts
komutu ile doğru bağlantıyı seçtiğinizden emin olun. - Kaynakları oluşturmadan önce, doğru YAML dosyasını kontrol edin veya oluşturun ve
kubectl apply
komutu ile kaynakları oluşturun. - Eğer birden fazla kaynak varsa,
kubectl delete
komutuyla hepsini silmek yerine, belirli bir kaynağı silmek için doğru seçici etiketleri kullanın. - Verilerinizin güvenliği için, kubectl kullanıcı kimlik doğrulama yöntemlerinin nasıl yapılandırıldığı hakkında bilgi edinmelisiniz ve bu yöntemleri düzenli olarak kontrol etmelisiniz.
Bu makalede, kubectl’in ne olduğunu, nasıl kurulduğunu ve temel kullanımının yanı sıra, pod, servis, deployment ve namespace gibi K8s kaynaklarını yönetmek için bazı örnekler sunduk. Ayrıca, kubectl kullanırken dikkat etmeniz gereken noktalara değindik.