çŸåšè¡šç€ºããŠããã®ã¯ã次ã®ããŒãžã§ã³åãã®ããã¥ã¡ã³ãã§ããKubernetesããŒãžã§ã³: v1.30
Kubernetes v1.30 ã®ããã¥ã¡ã³ãã¯ç©æ¥µçã«ã¡ã³ããã³ã¹ãããŠããŸãããçŸåšè¡šç€ºãããŠããããŒãžã§ã³ã¯ã¹ãããã·ã§ããã§ããææ°ã®ããã¥ã¡ã³ãã¯ãã¡ãã§ã: ææ°ããŒãžã§ã³
ãªãœãŒã¹ã®ç®¡ç
ã¢ããªã±ãŒã·ã§ã³ããããã€ããServiceãä»ããŠå€éšã«å ¬éã§ããŸãããããŠãã©ãããŸããïŒKubernetesã¯ãã¹ã±ãŒãªã³ã°ãæŽæ°ãªã©ãã¢ããªã±ãŒã·ã§ã³ã®ãããã€ã管çããããã®å€ãã®ããŒã«ãæäŸããŸãã æã ãåãäžããæ©èœã«ã€ããŠã®è©³çްã¯èšå®ãã¡ã€ã«ãšã©ãã«ã«ã€ããŠè©³çްã«èª¬æããŸãã
ãªãœãŒã¹ã®èšå®ã管çãã
å€ãã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯DeploymentãServiceãªã©è€æ°ã®ãªãœãŒã¹ã®äœæãèŠæ±ããŸããè€æ°ã®ãªãœãŒã¹ã®ç®¡çã¯ãåäžã®ãã¡ã€ã«ã«ã²ãšãŸãšãã«ããŠã°ã«ãŒãåãããšç°¡åã«ãªããŸã(YAMLãã¡ã€ã«å
ã§---
ã§åºåã)ã
äŸãã°:
apiVersion: v1
kind: Service
metadata:
name: my-nginx-svc
labels:
app: nginx
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginx
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
è€æ°ã®ãªãœãŒã¹ã¯åäžã®ãªãœãŒã¹ãšåæ§ã®æ¹æ³ã§äœæã§ããŸãã
kubectl apply -f https://k8s.io/examples/application/nginx-app.yaml
service/my-nginx-svc created
deployment.apps/my-nginx created
ãªãœãŒã¹ã¯ããã¡ã€ã«å ã«èšè¿°ãããŠããé çªéãã«äœæãããŸãããã®ãããServiceãæåã«æå®ããã®ãçæ³ã§ããã¹ã±ãžã¥ãŒã©ãŒãServiceã«é¢é£ããPodããDeploymentãªã©ã®ã³ã³ãããŒã©ãŒã«ãã£ãŠäœæããããšãã«ç¢ºå®ã«æ¡æ£ã§ããããã«ããããã§ãã
kubectl apply
ããŸããè€æ°ã®-f
ã«ããåŒæ°æå®ãèš±å¯ããŠããŸãã
kubectl apply -f https://k8s.io/examples/application/nginx/nginx-svc.yaml -f https://k8s.io/examples/application/nginx/nginx-deployment.yaml
åå¥ã®ãã¡ã€ã«ã«å ããŠã-fã®åŒæ°ãšããŠãã£ã¬ã¯ããªåãæå®ã§ããŸã:
kubectl apply -f https://k8s.io/examples/application/nginx/
kubectl
ã¯.yaml
ã.yml
ã.json
ãšãã£ããµãã£ãã¯ã¹ã®ä»ããã¡ã€ã«ãèªã¿èŸŒã¿ãŸãã
åããã€ã¯ããµãŒãã¹ãã¢ããªã±ãŒã·ã§ã³ãã£ã¢ãŒã®ãªãœãŒã¹ã¯åäžã®ãã¡ã€ã«ã«ãŸãšããã¢ããªã±ãŒã·ã§ã³ã«é¢ãããã¡ã€ã«ãã°ã«ãŒãåããããã«ããããã®ãã¡ã€ã«ãåäžã®ãã£ã¬ã¯ããªã«é åããã®ãæšå¥šããŸããã¢ããªã±ãŒã·ã§ã³ã®ãã£ã¢ãŒãDNSãéããŠäºãã«ãã€ã³ãããããšãã¢ããªã±ãŒã·ã§ã³ã¹ã¿ãã¯ã®å šãŠã®ã³ã³ããŒãã³ããã²ãšãŸãšãã«ããŠç°¡åã«ãããã€ã§ããŸãã
ãªãœãŒã¹ã®èšå®ãœãŒã¹ãšããŠãURLãæå®ã§ããŸããgithubããååŸããèšå®ãã¡ã€ã«ããçŽæ¥æè»œã«ãããã€ãã§ããŸã:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/application/nginx/nginx-deployment.yaml
deployment.apps/my-nginx created
kubectlã«ããäžæ¬æäœ
kubectl
ãäžæ¬ããŠå®è¡ã§ããæäœã¯ãªãœãŒã¹ã®äœæã®ã¿ã§ã¯ãããŸãããäœææžã¿ã®ãªãœãŒã¹ã®åé€ãªã©ã®ä»ã®æäœãå®è¡ããããã«ãèšå®ãã¡ã€ã«ãããªãœãŒã¹åãååŸããããšãã§ããŸãã
kubectl delete -f https://k8s.io/examples/application/nginx-app.yaml
deployment.apps "my-nginx" deleted
service "my-nginx-svc" deleted
2ã€ã®ãªãœãŒã¹ã ããåé€ããå Žåã«ã¯ãã³ãã³ãã©ã€ã³ã§ãªãœãŒã¹/ååãšããã·ã³ã¿ãã¯ã¹ã䜿ãããšã§ç°¡åã«æå®ã§ããŸãã
kubectl delete deployments/my-nginx services/my-nginx-svc
ããã«å€ãã®ãªãœãŒã¹ã«å¯Ÿããæäœã§ã¯ããªãœãŒã¹ãã©ãã«ã§ãã£ã«ã¿ãŒããããã«-l
ã--selector
ã䜿ã£ãŠã»ã¬ã¯ã¿ãŒ(ã©ãã«ã¯ãšãª)ãæå®ããã®ãç°¡åã§ã:
kubectl delete deployment,services -l app=nginx
deployment.apps "my-nginx" deleted
service "my-nginx-svc" deleted
kubectl
ã¯åæ§ã®ã·ã³ã¿ãã¯ã¹ã§ãªãœãŒã¹åãåºåããã®ã§ã$()
ãxargs
ã䜿ã£ãŠãã€ãã§æäœããã®ã容æã§ã:
kubectl get $(kubectl create -f docs/concepts/cluster-administration/nginx/ -o name | grep service)
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-nginx-svc LoadBalancer 10.0.0.208 <pending> 80/TCP 0s
äžèšã®ã³ãã³ãã§ãæåã«examples/application/nginx/
é
äžã§ãªãœãŒã¹ãäœæãã-o name
ãšããåºåãã©ãŒãããã«ãããäœæããããªãœãŒã¹ã®ååã衚瀺ããŸã(åãªãœãŒã¹ãresource/nameãšãã圢åŒã§è¡šç€º)ããããŠ"service"ã®ã¿grep
ããkubectl get
ã䜿ã£ãŠè¡šç€ºãããŸãã
ãããã£ã¬ã¯ããªå
ã®è€æ°ã®ãµããã£ã¬ã¯ããªããŸããã§ãªãœãŒã¹ã管çãããããªå Žåã--filename,-f
ãã©ã°ãšåãããŠ--recursive
ã-R
ãæå®ããããšã§ãµããã£ã¬ã¯ããªã«å¯ŸããŠãååž°çã«æäœãå¯èœã§ãã
äŸãã°ãéçºç°å¢çšã«å¿
èŠãªå
šãŠã®ãããã§ã¹ãããªãœãŒã¹ã¿ã€ãã«ãã£ãŠæŽçããŠããproject/k8s/development
ãšãããã£ã¬ã¯ããªããããšä»®å®ããŸãã
project/k8s/development
âââ configmap
â âââ my-configmap.yaml
âââ deployment
â âââ my-deployment.yaml
âââ pvc
âââ my-pvc.yaml
ããã©ã«ãã§ã¯ãproject/k8s/development
ã«ãããäžæ¬æäœã¯ãã©ã®ãµããã£ã¬ã¯ããªãåŠçããããã£ã¬ã¯ããªã®ç¬¬1éå±€ã§åŠçãæ¢ãŸããŸããäžèšã®ã³ãã³ãã«ãã£ãŠãã®ãã£ã¬ã¯ããªé
äžã§ãªãœãŒã¹ãäœæããããšãããšããšã©ãŒãçºçããŸãã
kubectl apply -f project/k8s/development
error: you must provide one or more resources by argument or filename (.json|.yaml|.yml|stdin)
代ããã«ãäžèšã®ããã«--filename,-f
ãã©ã°ãšåãããŠ--recursive
ã-R
ãæå®ããŠãã ãã:
kubectl apply -f project/k8s/development --recursive
configmap/my-config created
deployment.apps/my-deployment created
persistentvolumeclaim/my-pvc created
--recursive
ãã©ã°ã¯kubectl {create,get,delete,describe,rollout}
ãªã©ã®ãããª--filename,-f
ãã©ã°ãæ±ãã©ã®æäœã§ãæå¹ã§ãã
ãŸãã--recursive
ãã©ã°ã¯è€æ°ã®-f
ãã©ã°ã®åŒæ°ãæå®ããŠãæå¹ã§ãã
kubectl apply -f project/k8s/namespaces -f project/k8s/development --recursive
namespace/development created
namespace/staging created
configmap/my-config created
deployment.apps/my-deployment created
persistentvolumeclaim/my-pvc created
kubectl
ã«ã€ããŠããã«ç¥ãããå Žåã¯ãã³ãã³ãã©ã€ã³ããŒã«(kubectl)ãåç
§ããŠãã ããã
ã©ãã«ãæå¹ã«äœ¿ã
ãããŸã§åãäžããäŸã§ã¯ããªãœãŒã¹ã«å¯ŸããŠæå€§1ã€ã®ã©ãã«ãé©çšããŠããŸããããªãœãŒã¹ã®ã»ãããä»ã®ã»ãããšåºå¥ããããã«ãè€æ°ã®ã©ãã«ãå¿ èŠãªç¶æ³ããããŸãã
äŸãã°ãç°ãªãã¢ããªã±ãŒã·ã§ã³éã§ã¯ãç°ãªãapp
ã©ãã«ã䜿çšããããã²ã¹ãããã¯ã®äŸã®ãããªãã«ããã£ã¢ãŒã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãåãã£ã¢ãŒãåºå¥ããå¿
èŠããããŸããfrontendãšãããã£ã¢ãŒã§ã¯äžèšã®ã©ãã«ãæã¡ãŸãã:
labels:
app: guestbook
tier: frontend
Redisãã¹ã¿ãŒãã¹ã¬ãŒãã§ã¯ç°ãªãtier
ã©ãã«ãæã¡ãå ããŠrole
ã©ãã«ãæã€ããšã§ãããã:
labels:
app: guestbook
tier: backend
role: master
ãããŠ
labels:
app: guestbook
tier: backend
role: slave
ã©ãã«ã䜿çšãããšãã©ãã«ã§æå®ãããä»»æã®æ¬¡å ã«æ²¿ã£ãŠãªãœãŒã¹ãåå²ã§ããŸãã
kubectl apply -f examples/guestbook/all-in-one/guestbook-all-in-one.yaml
kubectl get pods -Lapp -Ltier -Lrole
NAME READY STATUS RESTARTS AGE APP TIER ROLE
guestbook-fe-4nlpb 1/1 Running 0 1m guestbook frontend <none>
guestbook-fe-ght6d 1/1 Running 0 1m guestbook frontend <none>
guestbook-fe-jpy62 1/1 Running 0 1m guestbook frontend <none>
guestbook-redis-master-5pg3b 1/1 Running 0 1m guestbook backend master
guestbook-redis-slave-2q2yf 1/1 Running 0 1m guestbook backend slave
guestbook-redis-slave-qgazl 1/1 Running 0 1m guestbook backend slave
my-nginx-divi2 1/1 Running 0 29m nginx <none> <none>
my-nginx-o0ef1 1/1 Running 0 29m nginx <none> <none>
kubectl get pods -lapp=guestbook,role=slave
NAME READY STATUS RESTARTS AGE
guestbook-redis-slave-2q2yf 1/1 Running 0 3m
guestbook-redis-slave-qgazl 1/1 Running 0 3m
Canary deployments ã«ããªã¢ãããã€
è€æ°ã®ã©ãã«ãå¿ èŠãªä»ã®ç¶æ³ãšããŠãç°ãªããªãªãŒã¹éã§ã®Deploymentããåäžã³ã³ããŒãã³ãã®èšå®ãåºå¥ããããšãæããããŸããããç¥ããããã©ã¯ãã£ã¹ãšããŠãæ¬çªç°å¢ã®å®éã®ãã©ãã£ãã¯ãåãä»ããããã«ããããã«ãæ°ãããªãªãŒã¹ãå®å šã«ããŒã«ã¢ãŠãããåã«ãæ°ããã«ããªã¢çã®ã¢ããªã±ãŒã·ã§ã³ãéå»ã®ãªãªãŒã¹ãšåãããŠãããã€ããæ¹æ³ããããŸãã
äŸãã°ãç°ãªããªãªãŒã¹ããŒãžã§ã³ãåããããã«track
ã©ãã«ã䜿çšã§ããŸãã
äž»èŠãªå®å®æ¿ã®ãªãªãŒã¹ã§ã¯track
ã©ãã«ã«stable
ãšããå€ãã€ããããšãããã§ãããã:
name: frontend
replicas: 3
...
labels:
app: guestbook
tier: frontend
track: stable
...
image: gb-frontend:v3
ãããŠ2ã€ã®ç°ãªãPodã®ã»ãããäžæžãããªãããã«ãããããtrack
ã©ãã«ã«ç°ãªãå€ãæã€(äŸ: canary
)ãããªguestbookããã³ããšã³ãã®æ°ãããªãªãŒã¹ãäœæã§ããŸãã
name: frontend-canary
replicas: 1
...
labels:
app: guestbook
tier: frontend
track: canary
...
image: gb-frontend:v4
frontend Serviceã¯ããã©ãã£ãã¯ãäž¡æ¹ã®ã¢ããªã±ãŒã·ã§ã³ã«ãªãã€ã¬ã¯ããããããã«ãäž¡æ¹ã®ã¢ããªã±ãŒã·ã§ã³ã«å ±éããã©ãã«ã®ãµãã»ãããéžæããŠäž¡æ¹ã®ã¬ããªã«ãæ±ããããã«ããŸãã:
selector:
app: guestbook
tier: frontend
å®å®çãšã«ããªã¢çãªãªãŒã¹ã§æ¬çªç°å¢ã®å®éã®ãã©ãã£ãã¯ã転éããå²åãæ±ºãããããåæ¹ã®ã¬ããªã«æ°ã倿Žã§ããŸã(ãã®ã±ãŒã¹ã§ã¯3察1)ã ææ°çã®ãªãªãŒã¹ãããŠã倧äžå€«ãªå Žåãå®å®çã®ãã©ãã¯ãæ°ããã¢ããªã±ãŒã·ã§ã³ã«ããŠãã«ããªã¢çãåé€ããŸãã
ããã«å ·äœçãªäŸã«ã€ããŠã¯ãtutorial of deploying Ghostãåç §ããŠãã ããã
ã©ãã«ã®æŽæ°
æ°ãããªãœãŒã¹ãäœæããåã«ãæ¢åã®Podãšä»ã®ãªãœãŒã¹ã®ã©ãã«ã®å€æŽãå¿
èŠãªç¶æ³ããããŸããããã¯kubectl label
ã§å®è¡ã§ããŸãã
äŸãã°ãå
šãŠã®nginx Podã frontendãã£ã¢ãŒãšããŠã©ãã«ä»ãããã«ã¯ãäžèšã®ã³ãã³ããå®è¡ããã®ã¿ã§ãã
kubectl label pods -l app=nginx tier=fe
pod/my-nginx-2035384211-j5fhi labeled
pod/my-nginx-2035384211-u2c7e labeled
pod/my-nginx-2035384211-u3t6x labeled
ããã¯æåã«"app=nginx"ãšããã©ãã«ã®ã€ããPodããã£ã«ã¿ãŒãããã®Podã«å¯ŸããŠ"tier=fe"ãšããã©ãã«ã远å ããŸãã ã©ãã«ä»ãããPodã確èªããã«ã¯ãäžèšã®ã³ãã³ããå®è¡ããŠãã ããã
kubectl get pods -l app=nginx -L tier
NAME READY STATUS RESTARTS AGE TIER
my-nginx-2035384211-j5fhi 1/1 Running 0 23m fe
my-nginx-2035384211-u2c7e 1/1 Running 0 23m fe
my-nginx-2035384211-u3t6x 1/1 Running 0 23m fe
ãã®ã³ãã³ãã§ã¯"app=nginx"ãšããã©ãã«ã®ã€ããå
šãŠã®PodãåºåããPodã®tierãšããé
ç®ã衚瀺ããŸã(-L
ãŸãã¯--label-columns
ã§æå®)ã
ãããªãæ å ±ã¯ãã©ãã«ãkubectl labelãåç §ããŠãã ããã
ã¢ãããŒã·ã§ã³ã®æŽæ°
ãªãœãŒã¹ã«å¯ŸããŠã¢ãããŒã·ã§ã³ãå²ãåœãŠããç¶æ³ããããŸããã¢ãããŒã·ã§ã³ã¯ãããŒã«ãã©ã€ãã©ãªãªã©ã®APIã¯ã©ã€ã¢ã³ãã«ãã£ãŠååŸããããã®ä»»æã®éèå¥ã¡ã¿ããŒã¿ã§ããã¢ãããŒã·ã§ã³ã®å²ãåœãŠã¯kubectl annotate
ã§å¯èœã§ããäŸ:
kubectl annotate pods my-nginx-v4-9gw19 description='my frontend running nginx'
kubectl get pods my-nginx-v4-9gw19 -o yaml
apiVersion: v1
kind: pod
metadata:
annotations:
description: my frontend running nginx
...
ãããªãæ å ±ã¯ãã¢ãããŒã·ã§ã³ ããkubectl annotateãåç §ããŠãã ããã
ã¢ããªã±ãŒã·ã§ã³ã®ã¹ã±ãŒã«
ã¢ããªã±ãŒã·ã§ã³ã®è² è·ã墿žãããšããkubectl
ã䜿ã£ãŠç°¡åã«ã¹ã±ãŒã«ã§ããŸããäŸãã°ãnginxã®ã¬ããªã«ã3ãã1ã«æžããå Žåãäžèšãå®è¡ããŸã:
kubectl scale deployment/my-nginx --replicas=1
deployment.apps/my-nginx scaled
å®è¡ãããšãDeploymentã«ãã£ãŠç®¡çãããPodæ°ã1ãšãªããŸãã
kubectl get pods -l app=nginx
NAME READY STATUS RESTARTS AGE
my-nginx-2035384211-j5fhi 1/1 Running 0 30m
ã·ã¹ãã ã«å¯ŸããŠnginxã®ã¬ããªã«æ°ãèªåã§éžæãããã«ã¯ãäžèšã®ããã«1ãã3ã®ç¯å²ã§æå®ããŸãã:
kubectl autoscale deployment/my-nginx --min=1 --max=3
horizontalpodautoscaler.autoscaling/my-nginx autoscaled
å®è¡ãããšãnginxã®ã¬ããªã«ã¯å¿ èŠã«å¿ããŠèªåã§ã¹ã±ãŒã«ã¢ãããã¹ã±ãŒã«ããŠã³ããŸãã
ãããªãæ å ±ã¯ãkubectl scaleãkubectl autoscale and horizontal pod autoscalerãåç §ããŠãã ããã
ãªãœãŒã¹ã®çŽæ¥çã¢ããããŒã
å Žåã«ãã£ãŠã¯ãäœæãããªãœãŒã¹ã«å¯ŸããŠåŠçãäžæãããã«æŽæ°ãè¡ãå¿ èŠããããŸãã
kubectl apply
éçºè
ãèšå®ãããªãœãŒã¹ãã³ãŒããšããŠç®¡çãããŒãžã§ãã³ã°ãè¡ããããã«ãèšå®ãã¡ã€ã«ã®ã»ããããœãŒã¹ã«ãã£ãŠç®¡çããæ¹æ³ãæšå¥šãããŠããŸãã
ãã®å Žåãã¯ã©ã¹ã¿ãŒã«å¯ŸããŠèšå®ã®å€æŽãããã·ã¥ããããã«kubectl apply
ã䜿çšã§ããŸãã
ãã®ã³ãã³ãã¯ããªãœãŒã¹èšå®ã®éå»ã®ããŒãžã§ã³ãšãä»é©çšãã倿Žãæ¯èŒããå·®åã«çŸããªãããããã£ãŒã«å¯ŸããŠäžæžã倿Žããããšãªãã¯ã©ã¹ã¿ãŒã«é©çšãããŸãã
kubectl apply -f https://k8s.io/examples/application/nginx/nginx-deployment.yaml
deployment.apps/my-nginx configured
泚æãšããŠãååã®å€æŽé©çšæããã®èšå®ã®å€æŽå
å®¹ãæ±ºãããããkubectl apply
ã¯ãªãœãŒã¹ã«å¯ŸããŠã¢ãããŒã·ã§ã³ãå²ãåœãŠãŸãã倿Žã宿œããããškubectl apply
ã¯ã1ã€åã®èšå®å
容ãšãä»å倿Žããããšããå
¥åå
容ãšãçŸåšã®ãªãœãŒã¹ã®èšå®ãšã®3ã€ã®éã§å€æŽå
容ã®å·®åããšããŸãã
çŸåšããªãœãŒã¹ã¯ãã®ã¢ãããŒã·ã§ã³ãªãã§äœæãããŸããããã®ãããæåã®kubectl paply
ã®å®è¡ã«ãããŠã¯ãäžããããå
¥åãšãçŸåšã®ãªãœãŒã¹ã®èšå®ã®2ã€ã®éã®å·®åãåããããã©ãŒã«ããã¯ããŸãããã®æåã®å®è¡ã®éããªãœãŒã¹ãäœæãããæã«ããããã£ãŒã»ããã®åé€ãæ€ç¥ã§ããŸããããã®çç±ã«ãããããããã£ãŒã®åé€ã¯ãããŸããã
kubectl apply
ã®å®è¡åŸã®å
šãŠã®åŒã³åºãããkubectl replace
ãkubectl edit
ãªã©ã®èšå®ã倿Žããä»ã®ã³ãã³ãã§ã¯ã¢ãããŒã·ã§ã³ãæŽæ°ããŸããkubectl apply
ããåŸã®å
šãŠã®åŒã³åºãã«ãããŠ3-wayã®å·®åååŸã«ãã£ãŠããããã£ã®æ€ç¥ãšåé€ã宿œããŸãã
kubectl edit
ãã®ä»ã«ãkubectl edit
ã«ãã£ãŠãªãœãŒã¹ã®æŽæ°ãã§ããŸãã:
kubectl edit deployment/my-nginx
ãã®ã³ãã³ãã¯ãæåã«ãªãœãŒã¹ãget
ããããã¹ããšãã£ã¿ã§ãªãœãŒã¹ãç·šéããæŽæ°ãããããŒãžã§ã³ã§ãªãœãŒã¹ãapply
ããŸãã:
kubectl get deployment my-nginx -o yaml > /tmp/nginx.yaml
vi /tmp/nginx.yaml
# yamlãã¡ã€ã«ãç·šéãããã¡ã€ã«ãä¿åããŸãã
kubectl apply -f /tmp/nginx.yaml
deployment.apps/my-nginx configured
rm /tmp/nginx.yaml
ãã®ã³ãã³ãã«ãã£ãŠããé倧ãªå€æŽãç°¡åã«è¡ããŸããæ³šæãšããŠãããªãã®EDITOR
ãKUBE_EDITOR
ãšãã£ãç°å¢å€æ°ãæå®ã§ããŸãã
ãããªãæ å ±ã¯ãkubectl editãåç §ããŠãã ããã
kubectl patch
APIãªããžã§ã¯ãã®æŽæ°ã«ã¯kubectl patch
ã䜿ãããšãã§ããŸãããã®ã³ãã³ãã¯JSON patchãJSON merge patchãæŠç¥çmerge patchããµããŒãããŠããŸãã
kubectl patchã䜿ã£ãAPIãªããžã§ã¯ãã®æŽæ°ãkubectl patchãåç
§ããŠãã ããã
ç Žå£çãªã¢ããããŒã
äžåºŠåæåãããåŸãæŽæ°ã§ããªããããªãªãœãŒã¹ãã£ãŒã«ãã®æŽæ°ãå¿
èŠãªå ŽåããDeploymentã«ãã£ãŠäœæãããå£ããŠããç¶æ
ã®Podãä¿®æ£ãããªã©ãååž°çãªå€æŽãå³åº§ã«è¡ãããå ŽåããããŸãããã®ãããªãã£ãŒã«ãã倿ŽããããããªãœãŒã¹ã®åé€ãšåäœæãè¡ãreplace --force
ã䜿çšããŠãã ããããã®ã±ãŒã¹ã§ã¯ãã·ã³ãã«ã«å
ã®èšå®ãã¡ã€ã«ãä¿®æ£ããã®ã¿ã§ãã:
kubectl replace -f https://k8s.io/examples/application/nginx/nginx-deployment.yaml --force
deployment.apps/my-nginx deleted
deployment.apps/my-nginx replaced
ãµãŒãã¹åæ¢ãªãã§ã¢ããªã±ãŒã·ã§ã³ãæŽæ°ãã
ããæç¹ã§ãåè¿°ããã«ããªã¢ãããã€ã®ã·ããªãªã«ãããŠãæ°ããã€ã¡ãŒãžãã€ã¡ãŒãžã¿ã°ãæå®ããããšã«ãã£ãŠããããã€ãããã¢ããªã±ãŒã·ã§ã³ãæŽæ°ãå¿
èŠãªå ŽåããããŸããkubectl
ã§ã¯ããã€ãã®æŽæ°æäœããµããŒãããŠãããããããã®æäœãç°ãªãã·ããªãªã«å¯ŸããŠé©çšå¯èœã§ãã
ããã§ã¯ãDeploymentã䜿ã£ãŠã¢ããªã±ãŒã·ã§ã³ã®äœæãšæŽæ°ã«ã€ããŠã¬ã€ãããŸãã
ãŸãnginxã®ããŒãžã§ã³1.14.2ã皌åãããŠãããšä»®å®ããŸãã:
kubectl create deployment my-nginx --image=nginx:1.14.2
deployment.apps/my-nginx created
ã¬ããªã«æ°ã3ã«ããŸã(æ°æ§ã®ãªããžã§ã³ã¯æ··åšããŸã)ã:
kubectl scale deployment my-nginx --current-replicas=1 --replicas=3
deployment.apps/my-nginx scaled
ããŒãžã§ã³1.16.1ã«æŽæ°ããã«ã¯ãäžè¿°ããkubectlã³ãã³ãã䜿ã£ãŠ.spec.template.spec.containers[0].image
ã®å€ãnginx:1.14.2
ããnginx:1.16.1
ã«å€æŽããã ãã§ã§ããŸãã
kubectl edit deployment/my-nginx
ã§ããŸãã!Deploymentã¯ãããã€ãããnginxã®ã¢ããªã±ãŒã·ã§ã³ã宣èšçã«ããã°ã¬ãã·ãã«æŽæ°ããŸããæŽæ°éäžã§ã¯ã決ãŸã£ãæ°ã®å€ãã¬ããªã«ã®ã¿ããŠã³ããäžå®æ°ã®æ°ããã¬ããªã«ãåžæããPodæ°ä»¥äžäœæãããŠãè¯ãããšãä¿èšŒããŸãã詳现ã«ã€ããŠåŠã¶ã«ã¯Deployment pageãåç §ããŠãã ããã
次ã®é ç®
- ã¢ããªã±ãŒã·ã§ã³ã®èª¿æ»ãšãããã°ã®ããã®
kubectl
ã®äœ¿ç𿹿³ã«ã€ããŠåŠãã§ãã ããã - èšå®ã®ãã¹ããã©ã¯ãã£ã¹ãšTIPSãåç §ããŠãã ããã