Skip to main content
  1. Posts/

Deploy Pod ke Node Tertentu

2 mins
kubernetes kubernetes
Table of Contents

Panduan ini akan membahas cara membuat pod ke node tertentu di cluster kubernetes. Selain mambuat, Anda juga dapat memindahkan pod yang sudah ada ke node tertentu dengan cara yang sama.

Assign to Node by label
#

List node yang ada di cluster beserta labelnya.

kubectl get node --show-labels
NAME   STATUS   ROLES           AGE   VERSION   LABELS
man    Ready    control-plane   34h   v1.27.3   kubernetes.io/hostname=man
w1     Ready    <none>          23h   v1.27.3   kubernetes.io/hostname=w1
w2     Ready    <none>          23h   v1.27.3   kubernetes.io/hostname=w2

Tambahkan label pada salah satu node worker.

kubectl label nodes w2 disktype=ssd

Cek kembali node beserta labelnya.

# kubectl get node --show-labels
NAME   STATUS   ROLES           AGE   VERSION   LABELS
man    Ready    control-plane   34h   v1.27.3   kubernetes.io/hostname=man
w1     Ready    <none>          24h   v1.27.3   kubernetes.io/hostname=w1
w2     Ready    <none>          23h   v1.27.3   disktype=ssd,kubernetes.io/hostname=w2

Buat konfig deployment nginx.yaml dengan menambahkan label pada bagian nodeSelector.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: site
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginxdemos/hello
        imagePullPolicy: Always
        name: hello
      restartPolicy: Always
      nodeSelector:
        disktype: ssd

Deploy pod.

kubectl apply -f nginx.yaml

Verifikasi pod sudah berjalan pada node yang Anda pilih.

kubectl get pods -n site \
-o custom-columns=NAMA:.metadata.name,NODE:spec.nodeName
NAMA                   NODE
nginx                  w2

Untuk memindahkan pod, Anda dapat mengedit konfigurasi dengan perintah.

kubectl edit -n site pods/nginx
...
  nodeSelector:
    kubernetes.io/hostname: w1
...

Assign to Node by nodeName
#

Untuk men-deploy atau memindahkan pod pada node tertentu dapat juga Anda lakukan dengan menambahkan nodeName.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: site
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginxdemos/hello
        imagePullPolicy: Always
        name: hello
      restartPolicy: Always
      nodeName: w2

Related

Kubernetes External DNS with PowerDNS
2 mins
kubernetes pdns kubernetes
Convert Docker Compose to Kubernetes Resources
1 min
kubernetes kubernetes
Backup dan Restore Etcd pada Kubernetes Cluster
2 mins
kubernetes kubernetes
Deploy Kubernetes Dashboard
1 min
kubernetes kubernetes
Kubectl Cheat Sheet
14 mins
kubernetes kubernetes
Kubernetes Internal Errors: Failed Calling Webhook
1 min
kubernetes kubernetes