# Kubernetes Komut Satırı Aracı: kubectl

Önceki makalelerimizde [Kubernetes'in geçmişi ve evriminden](https://serhatleventyavas.dev/kubernetesin-gecmisi-ve-evrimi), ardından [Kubernetes kümesinin ne olduğundan ve nasıl çalıştığından](https://serhatleventyavas.dev/kubernetes-cluster-nedir-yeni-baslayanlar-icin-kilavuz) bahsetmiştik. Bu yazımızda, Kubernetes'in yönetimi ve etkileşimi için kullanılan temel araçlardan biri olan **kubectl**'i ele alacağız. Kubernetes dünyasına adım atan herkesin öğrenmesi gereken bu güçlü komut satırı aracını daha yakından tanıyacağız.

### kubectl Nedir?

kubectl, Kubernetes kümesi ile etkileşime geçmenizi sağlayan bir komut satırı aracıdır. Kubernetes'in **api-server** objesine komutlar göndererek kubernetes kümesindeki kaynakları yönetmenize olanak tanır. kubectl, Kubernetes'in çeşitli bileşenlerini ve kaynaklarını (örneğin, podlar, hizmetler, dağıtımlar) yaratmak, güncellemek, silmek ve görüntülemek için kullanılır.

> Eğer örnekleri sizde uygulamak isterseniz bir kubernetes kümesine ihtiyacınız olacak. Kendi bilgisayarınıza [**minikube**](https://minikube.sigs.k8s.io/docs/start/) kurarak hızlı bir şekilde bir kubernetes kümesine sahip olabilirsiniz.

### kubectl Kubernetes Cluster İle Nasıl İletişim Kurar?

kubectl, kubernetes kümesi ile iletişime geçebilmesi için bir takım bilgilere ihtiyaç duyar. Bunlar;

1. Kullanıcı kimlik bilgileri (users)
    
2. Küme bilgileri (clusters)
    
3. Bağlam bilgileri (context)
    

Bu bilgileri doğru bir şekilde kubectl tarafına verdiğimiz zaman kubernetes kümesine başarılı bir şekilde bağlanabilir ve kubernetes api-server objesi ile sağlıklı bir şekilde iletişim kurabiliriz. Kubectl bu verileri okumak için varsayılan olarak bilgisayarımızdaki ana dizin altındaki **.kube klasörü** içerisindeki **config** dosyasına bakar.

Örneğin;

* macos: `~/.kube/config`
    
* linux: `~/.kube/config`
    
* windows: `"C:\Users\<KullanıcıAdı>\.kube\config"`
    

Örneğin ben kendi makinemdeki config dosyasını vscode editörü ile açtığımda aşağıdaki yaml tanımını görüyorum. docker-desktop ve minikube adında iki farklı kümeye, docker-desktop ve minikube adında iki farklı kullanıcıya sahibim. Son olarak bu kullanıcıları ve küme bilgilerini birleştiren context bilgilerimi görüyorum. Contextler sayesinde hangi kümeye hangi kullanıcı ile bağlanacağımızı belirleriz.

```yaml
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJSXFzd1Q3eUN0bFl3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TkRBM01USXdOVFV3TlRCYUZ3MHpOREEzTVRBd05UVTFOVEJhTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUUM2SkdXeFFONHNLZWpkNWNmcnhsOEJhNytnUGxiZkpZRmRVbTFjZmE5cmlRd1UxazJyaFpMaDJuN0MKOS9zcXpzckx5dkhwaktSby85R3VoZmJFVEVObkJYTU1GT3BmOG96Vnd3SzlyMzRWa1p1QTVEY213d3VxOW1lWApRZkhwajJicE12SS9iYno3V1lzVkJ5TzNOL2xGWGMxN3ppQTJzeWRNT0NRZjRjZHlycWc1QnRGejlQb2FaRVZtCk84Q2tnK0NZMVVBTm9jWHNEVE5LTjFDbU5GejFIa3NjTElvR0hRQmJVbCtqT1FNNndoQ0Ewd2FmU0w0ZDJPSHEKK1QzL3BIWEJRUmhuNHV5VmZBcDBxZ1hhVE5LMWtLTGZQOCs1aDVPVDh0OFF4T1NsVWozb1VLOEZBTGFUL05mUApzejZlL08rendLWVU2UjJHK2dSM2ViZG5uWC8xQWdNQkFBR2pXVEJYTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQCkJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJURDhkMFJTRkRuMEJNWmpBOFJsZlFvcmthV2h6QVYKQmdOVkhSRUVEakFNZ2dwcmRXSmxjbTVsZEdWek1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1RoS1V2SUlQZgpITU9RNi9iQ2pjUk40RlF4M0p6My9CQXFwRkhiaTBTMHcvcEllNW9FMDdLUnJWdDZnSVp0UGtMNUhrNmxrUnovCjNtQ3Z6TysxMDBKaW1RWjNqVzVtUElUS0czcWhjNDdhMHl5c1k2TXNabG1OR2lBbEtiSUNCc0xpbFpCaXFGMFAKQkYzRUlrVnY1dVZzV05VTjJYWWo4QkwvczhCYjRWUXJFeCtFYTZwc1UxdkROa2ZDQjFkakRnb0hVaXBra0JVZQo2REV2M1dINHNsS0x0QTRGSEZ2OXNwckR4MUx6cmJvRzUraExvUUphZS8zTE1mMlRTL25tVFlZMFVScEZXbmxaCjhlSlh2NDZQQ2NRT0pYYTRtS08rZkxIM2piSkZpSHk2MkgrNnp3Zko2eW1NRVhoQmgrUjgySjJaQ0xUL2FRTXkKZEwzeFJ4d1NGZFh4Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
    server: https://kubernetes.docker.internal:6443
  name: docker-desktop
- cluster:
    certificate-authority: C:\Users\serha\.minikube\ca.crt
    extensions:
    - extension:
        last-update: Sun, 02 Aug 2024 09:08:25 +03
        provider: minikube.sigs.k8s.io
        version: v1.33.1
      name: cluster_info
    server: https://127.0.0.1:57415
  name: minikube
contexts:
- context:
    cluster: docker-desktop
    user: docker-desktop
  name: docker-desktop
- context:
    cluster: minikube
    extensions:
    - extension:
        last-update: Sun, 02 Aug 2024 09:08:25 +03
        provider: minikube.sigs.k8s.io
        version: v1.33.1
      name: context_info
    namespace: default
    user: minikube
  name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: docker-desktop
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURRakNDQWlxZ0F3SUJBZ0lJT2Z4WHdqOWNtUjh3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TkRBM01USXdOVFV3TlRCYUZ3MHlOVEEzTVRJd05UVTFOVEZhTURZeApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sc3dHUVlEVlFRREV4SmtiMk5yWlhJdFptOXlMV1JsCmMydDBiM0F3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQytvVitqazFhWklZTloKTVNDVUsrckx1UEZYVzZOWnNZWG12aG1yc3NhOXUyNFpLelhVcWxxOEdLZHlHNnhJZ2c5WW41L1cwdkN6eVAzcwpsWXpnR2tNYlZiYm0wZGh4UytUVUFiVWZCcjgybG1DbS80Y0MyVHJBODVIUHNsSUFhdWJsTlM1L05GVzMwMEZkCjhWaFN3dmhVdjZTU281dm15Z2RxMzZpdVk3S01ZeGlHUHVEQUZpSlhybjR0bFh0MEs4QW85ZEV5bGJhS0h0MFoKVmFJOWcyUjBCcXZXK21pQTlyeTVNbjhsNlA2S0hLRTAyVmxucGVzeDlpWjB6VjhuZ0pKOC9aTlh5TXVJdW9ZUwo3NDgyVUNucVpRVktteDNPZEdGYkVKZDNjWG5WM0Y1K21ZTFhMNXhMRk1odUw2TFhkaDdMVExRa1lYNk5LQmtGCmlFVTM2ZFdiQWdNQkFBR2pkVEJ6TUE0R0ExVWREd0VCL3dRRUF3SUZvREFUQmdOVkhTVUVEREFLQmdnckJnRUYKQlFjREFqQU1CZ05WSFJNQkFmOEVBakFBTUI4R0ExVWRJd1FZTUJhQUZNUHgzUkZJVU9mUUV4bU1EeEdWOUNpdQpScGFITUIwR0ExVWRFUVFXTUJTQ0VtUnZZMnRsY2kxbWIzSXRaR1Z6YTNSdmNEQU5CZ2txaGtpRzl3MEJBUXNGCkFBT0NBUUVBUXk1Wmd2dHhYNDBaSGNaNDR0L3ZvbEhGQWk2eG8vdVVhUmFSN1IzeUpMVjNTaXp3Sk1ZRmxrNFcKdDAwRkMzL3VsWS9NdTkrTlE1MnpXU0s0R0NwaFllOHpMdFNnUGM4WU41QnFrTDlWYnYwNTJtMjBYWHBjaHJ2RAo1cDBjMklIWFhMSkJ6SG0zMDNoQkN1N2w3MVVsSUFTVExkcTBzK3ZrMkFhVmVTVjkwbG56bFdXbi92OUtjaFZ6CmJPWFo2T3JvZDB0MXNmczNCZlRoMmZsd09vNkdadCtwN0J0TTJIT0Jta0ZOYUNYTFFuYkNRYXpkQU5rbWMyWEwKUkxxSVVibVdGeWwrcjFZaG1Ibk50NHRqRlBldzF1L1piWUFnd1J1am5hQUdKM08ya1Q0VkFrNUtNSHNyZFZHNApyL0lINC8rN1ZGNk8rSnFoQlBXVXVIcTlwVkpHNFE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBdnFGZm81TldtU0dEV1RFZ2xDdnF5N2p4VjF1aldiR0Y1cjRacTdMR3ZidHVHU3MxCjFLcGF2QmluY2h1c1NJSVBXSitmMXRMd3M4ajk3SldNNEJwREcxVzI1dEhZY1V2azFBRzFId2EvTnBaZ3B2K0gKQXRrNndQT1J6N0pTQUdybTVUVXVmelJWdDlOQlhmRllVc0w0Vkwra2txT2I1c29IYXQrb3JtT3lqR01ZaGo3Zwp3QllpVjY1K0xaVjdkQ3ZBS1BYUk1wVzJpaDdkR1ZXaVBZTmtkQWFyMXZwb2dQYTh1VEovSmVqK2loeWhOTmxaClo2WHJNZlltZE0xZko0Q1NmUDJUVjhqTGlMcUdFdStQTmxBcDZtVUZTcHNkem5SaFd4Q1hkM0Y1MWR4ZWZwbUMKMXkrY1N4VEliaStpMTNZZXkweTBKR0YralNnWkJZaEZOK25WbXdJREFRQUJBb0lCQVFDa1EvaGV3d0szVjVxUQppL1hQMkh3dDZvTUV6UEZZdzlGbmdONHNCeFNjdjlyaWswcUNvLzBsNG5TL3JqcnFERERmSkVXZTN3d05VQ0FHCjh1Tis1UUo0bG9iU0pYZEdRYWpBUzJ4Z2ZQYmVPZnkxU3JGemNlN2YvOExnMzM4cjN2SnlCajYzM0VnVTdGU0MKZUFxczNsY1E2RWNQR1M2cFUrUEtZMG8rWTZpaXNPN0V3MEt2QmlFVkd0Y3NwbzAxSGhERXlIYUIvRWNMaVR4RQprY29ndmUvbHFMRldZN0w0MU9IY0srUDRXclN5M0pRVXpNUjVYV0VwRkU4Ymk2UHZiRlVZTEpVTVNueitOVmxoCnU5bVVZMks1Zzg1c003dkxKYnppVUp5eStRZHFBS09MSEhSNmwzRmxBWnJpckQrVkx4elVHRzZWNG1FUFdtN28KekttUzNtZUJBb0dCQU1iTGhoQVhkZVNlZ0JRVi83YkJYRm1BYTdPOHFBN0trNkNqSWh0NkhRekJvY0pncWc2eApvQTZidmdmd3hmSGJpeEMyT1Jib0VBdy8rdlNlVlJUZTRwb2dCeDU4TlkzeS9PU1ZWUXdwTlZZbmJtSlBuU2lPCmdXUk9rbitNZ1IyeTJtaURvZnRyc2V2a3lRa3E4OURWbytieGgranB6MmljbTFqdGh1ZXpkUGxiQW9HQkFQVjgKWkNFa3Iycm1TbnBTdFIyYnd5OUpaKzhUVm9yOGZaMXZmeHF6Szd3NGx6QmtUdDNwaW5JSmdFNDZGRnBVL3o1MwpPNit3QVNyOGtHRWtTWEp5YmZZOVJMcXNWVGVFTkh1SG5jQnU4RzJnT0JLaTI2YTJ0TG5FaC8rTyt4b0l5L3QzCmNVRTB0Q3hGSjNObERnalRETE04dkN4YjQ2NjJVdXlvYzRSaS9RakJBb0dBUDU3M0FzTmZXWkZZVUJWU1J6ek8KdjE0WUdlZXdxVHN2eitNbGtVR2RkbTJweFRtR2N6bHBqZ05ONStDb21PUzROdHI2bmxnYWVyRW5NWTVTa0dGYwppQkxqOUYrd0RBUE41NkhiSEE4OElKeHgrVWlkZFZOV0diSUR0SXBVOEJwRFI5dUl4WndMendEalRlblBLZkNWCmlkMldyM1hVaVJoRnAwb3RPSTM0UzYwQ2dZQUdvRkh2bHhicEVzaEYzdittaWZMTnp2UndQcHhpYWdoVi9KRjQKdmdkYk1FZmNkWWl2Y3NOYTZxaTg4OUppMGRLRjlCLzNVUS9uQWlRL2l3UTBnNlEyTmxjcGxzZENGVjU1U3lMVgo4K2luZk9DbW1DREhzanpVbXRwMDZuNGFxTXdnd0l1ZEQvZ2hEY2pQMDVWNlpYLzlRcEZ0dlJrN09RNnA5cTRQCmo4QjJ3UUtCZ1FDNWlWbGdrdWZFUGowazhiMkVZU01VcXlMR1RlaXRrZmtJYkQ3Q1BZejZva0p4eUxLWVY1UncKYi9JZDd0RndiREZPemc3Vk1zMnBhajd6UmF2dnd6bHc5NWViUTUzT094aG9NbWxPTmtUVTRhMk9vS1ZTdW9CYQo5S2VyanRjZnlNMVRWelJJZVlrWWFST1QxbW1KUFNtclkwUnovWWVUUlRQVG9GcVVscjdqamc9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
- name: minikube
  user:
    client-certificate: C:\Users\serha\.minikube\profiles\minikube\client.crt
    client-key: C:\Users\serha\.minikube\profiles\minikube\client.key
```

Ayrıca gördüğünüz üzere bir config dosyası üzerinde birden fazla küme, kullanıcı ve context bilgisi bulunabilir ve biz kubectl üzerinden contextler arasında geçişler yapabiliriz.

### kubectl config Komutları

1. Contextleri listeleme için aşağıdaki komutu yazarız.
    

```bash
kubectl config get-contexts
```

Bu komut bize aşağıdaki gibi bir sonuç üretir.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722763800296/b0fdee1a-b1fb-4933-925e-f826e18261c0.png align="left")

Bu tablodaki kolonlardan kısaca bahsedelim.

* **CURRENT:** Config içerisine birden fazla context tanımlanıyor olsada biz anlık olarak sadece bir context üzerinde çalışabiliriz. kubectl'e verdiğimiz tüm komutlar current olarak işaretlenmiş context üzerinde çalıştırılıyor. Yukarıdaki tabloda benim current context'im minikube isimle context. Yazdığım tüm komutlarda minikube context'in bağlandığı kubernetes kümesi üzerinde çalıştırılacak. Tablodaki current kolonu yıldız ile işaretlenen context, current context'dir.
    
* **NAME:** Context adı
    
* **CLUSTER:** Context'in bağlandığı kubernetes cluster adı
    
* **AUTHINFO:** Context'in kullandığı kullanıcı adı
    
* **NAMESPACE:** Context'in kullanıdığı namespace bilgisi
    

2. Aktif context bilgisini alabilmek için aşağıdaki komutu yazarız.
    

```bash
kubectl config current-context
```

Bu sonuç olarak sadece aktif context'in adını yazar.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722764768315/0d415502-4e77-463e-b209-168b9c2d5ad4.png align="left")

3. Eğer aktif context'den başka bir context geçiş yapmak istiyorsak aşağıdaki komutu yazarız.
    

```bash
kubectl config use-context docker-desktop
```

Bu komut çalıştıktan sonra aktif context değerimiz docker-desktop isimli context olur.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722764886830/c075e8e4-ca81-42ec-b96a-dff7e36ce738.png align="left")

### kubectl Yapısı

kubectl komutları belirli bir yapıya sahiptir. Temel bir kubectl komutu şu şekilde yapılandırılmıştır:

```bash
kubectl [komut] [kaynak tipi] [kaynak adı] [flags]
```

#### 1\. Komut

kubectl'de kullanılabilen temel komutlar şunlardır:

* `create`: Yeni bir kaynak oluşturur.
    
* `get`: Mevcut kaynakları listeler.
    
* `describe`: Bir kaynağın detaylarını gösterir.
    
* `apply`: Bir YAML dosyasındaki kaynak tanımlarını uygular veya günceller.
    
* `delete`: Bir kaynağı siler.
    

Örnek:

```bash
kubectl get pods
```

Bu komut, mevcut tüm podları listeler.

#### 2\. Kaynak Tipi

kubectl komutlarında kullanılan kaynak tipleri, Kubernetes'in temel yapı taşlarını oluşturur. Aşağıda yaygın olarak kullanılan bazı kaynak tiplerini ve kısa açıklamalarını bulabilirsiniz:

#### 2.1. Pod

[Podlar](https://kubernetes.io/docs/concepts/workloads/pods/), Kubernetes'in en küçük dağıtım birimidir. Bir veya daha fazla konteyneri barındırır.

Örnek:

```bash
kubectl get pods
```

#### 2.2. Deployments

[Deployments](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/), belirli bir pod setinin ve bu podların sürümlerinin yönetimini sağlar.

Örnek:

```bash
kubectl get deployments
```

#### 2.3. Services

[Services](https://kubernetes.io/docs/concepts/services-networking/service/), Kubernetes içindeki podların ağ üzerinde erişilebilir olmasını sağlar. Yük dengeleme (load balancer) ve hizmet keşfi (service discovery) sunar.

Örnek:

```bash
kubectl get services
```

#### 2.4. ConfigMaps

[ConfigMap](https://kubernetes.io/docs/concepts/configuration/configmap/), yapılandırma verilerini key-value (anahtar-değer) çiftleri olarak saklar ve podlar tarafından kullanılabilir.

Örnek:

```bash
kubectl get configmaps
```

#### 2.5. Secrets

[Secret](https://kubernetes.io/docs/concepts/configuration/secret/), duyarlı verileri (örneğin, parolalar, tokenlar) güvenli bir şekilde saklar ve podlar tarafından kullanılabilir.

Örnek:

```bash
kubectl get secrets
```

#### 2.6. ReplicaSet

[ReplicaSet](https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/), belirli bir pod sayısının her zaman çalışır durumda olmasını sağlar.

Örnek:

```bash
kubectl get replicasets
```

#### 2.7. Namespace (namespaces)

[Namespace](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/), kaynakları mantıksal olarak izole etmek için kullanılır. Büyük kümelerde kaynakları organize etmek için yararlıdır.

Örnek:

```bash
kubectl get namespaces
```

#### 2.8. Ingress (ingresses)

[Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/), HTTP ve HTTPS yönlendirmeleri için kuralları tanımlar. Dış trafiğin cluster içindeki hizmetlere nasıl yönlendirileceğini belirler.

Örnek:

```bash
kubectl get ingresses
```

#### 2.9. Node (nodes)

[Node](https://kubernetes.io/docs/concepts/architecture/nodes/), Kubernetes kümesindeki fiziksel veya sanal makineleri temsil eder.

Örnek:

```bash
kubectl get nodes
```

#### 2.10. PersistentVolume

[PersistentVolume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) (PV), kümede depolama kaynaklarını temsil eder. Podlar için kalıcı depolama sağlar.

Örnek:

```bash
kubectl get persistentvolumes
```

#### 2.11. PersistentVolumeClaim (persistentvolumeclaims)

[PersistentVolumeClaim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) (PVC), podlar tarafından talep edilen kalıcı depolama kaynaklarını tanımlar.

Örnek:

```bash
kubectl get persistentvolumeclaims
```

#### 2.12. StatefulSet

[StatefulSet](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/), durum bilgisi olan uygulamaları yönetmek için kullanılır. Her bir podun kimliğini korur.

Örnek:

```bash
kubectl get statefulsets
```

#### 2.13. Job

[Job](https://kubernetes.io/docs/concepts/workloads/controllers/job/), belirli sayıda podu çalıştıran ve tamamlandıklarında sona eren geçici görevler için kullanılır.

Örnek:

```bash
kubectl get jobs
```

#### 2.14. CronJob

[CronJob](https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/), belirli zaman aralıklarında yinelenen görevleri (job'ları) çalıştırmak için kullanılır.

Örnek:

```bash
kubectl get cronjobs
```

#### 3\. Kaynak Adı

Komutun hedef aldığı spesifik kaynağın adıdır. Bu, belirli bir pod, deployment, service veya başka bir kaynağın adını belirtir.

Örnek:

```bash
kubectl delete pod mypod
```

Bu komut, "mypod" adlı podu siler.

#### 4\. Bayraklar (Flag)

Bayraklar, komutun davranışını değiştirmek veya ek seçenekler eklemek için kullanılır. Örneğin, komuta `-o` eklediğimiz çıktıyı belirli bir formatta görüntülemek için kullanılır (json, yaml, wide vb.).

Örnek:

```bash
kubectl get pods -o wide
```

Bu komut, podları daha geniş bir formatta listeler, daha fazla bilgi içerir.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722765219248/dd08a336-52dd-4ec9-ba6a-6a2daac7627b.png align="left")

### kubectl Kullanım Örnekleri

kubectl'in gücünü ve esnekliğini göstermek için bazı kullanım örneklerine bakalım.

#### Bir Pod Oluşturma

Bir pod oluşturmak için `run` komutunu kullanabilirsiniz:

```bash
kubectl run nginxpod --image=nginx
```

Bu komut, nginx imajını kullanan bir pod oluşturur.

#### Podları Listeleme

Kümedeki tüm podları listelemek için `get` komutunu kullanabilirsiniz:

```bash
kubectl get pods
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722765265767/fd0a5524-0d2a-4988-8c88-d9784458b764.png align="center")

#### Pod Detaylarını Görüntüleme

Bir podun detaylarını görüntülemek için `describe` komutunu kullanabilirsiniz:

```bash
kubectl describe pod nginxpod
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722765296185/023dff87-6487-4999-a938-110928070b78.png align="center")

#### Bir YAML Dosyasını Uygulama

Bir YAML dosyasındaki tanımları uygulamak için `apply` komutunu kullanabilirsiniz:

```bash
kubectl apply -f deployment.yaml
```

#### Bir Kaynağı Silme

Bir kaynağı silmek için `delete` komutunu kullanabilirsiniz:

```bash
kubectl delete pod nginx-pod
```

Özetlemek gerekirse kubectl, Kubernetes kümesi ile etkileşime geçmek için temel bir araçtır. Komut yapısı ve esnekliği sayesinde Kubernetes kaynaklarını yönetmek oldukça kolay ve etkilidir. Bu makalede kubectl'in temel yapısını ve bazı yaygın kullanım örneklerini ele aldık. Bu bilgilerin üzerine daha fazla araştırma yaparak, denemeler yaparak kubernetes konusunda kendinizi geliştirebilir ve uygulamalarınızı kubernetes ortamında çalıştırabilirsiniz. Umarım sana dokunmuş olabilirim. Merak ettiğin bir şey olursa benimle iletişime geçebilirsin.
