Kubernetes Kubectl Nedir ? Nasıl Kurulur ve Komutları Nelerdir?

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.

Kubernetes Kubectl Nedir ? Nasıl Kurulur ve Komutları Nelerdir? 1

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:

  1. Kubernetes.io adresinden işletim sisteminize uygun Kubernetes CLI sürümünü indirin.
  2. İndirdiğiniz dosyayı açın ve kubectl dosyasını çıkartın.
  3. 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.

Yorum yapın