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