经常在Kubernetes中使用的kubectl命令集合
本文旨在
总结在进行Kubernetes验证时我经常使用的便捷的kubectl命令。
kubectl命令
使用kubectl命令创建<资源名称> <对象名称>,并使用–dry-run=client参数以YAML格式输出到<清单文件名称>。
创建与目标资源相关的清单文件。
就我个人而言,下面列举的资源使用频率较高。
(除了下面列举的资源外,还可以创建各种其他资源)
-
- deployment
-
- service
-
- namespace
-
- job
-
- configmap
- secret
$ kubectl create deployment nginx --image=nginx --replicas=2 --dry-run=client -o yaml > nginx.yaml
$ cat nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: nginx
name: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
resources: {}
status: {}
根据资源情况,适当添加选项是一个好方法。
顺便提一下,在使用–dry-run选项时,官方文档有以下说明。
“none”、”server”、”client “のいずれかでなければならない。”client”の場合、送信されるオブジェクトを送信せずに出力するだけである。”server”の場合、リソースを永続化することなく、サーバーサイドのリクエストを送信する。
kubectl apply -f <マニフェストファイル名>
作成したマニフェストファイルに沿ってリソースを生成・変更する。
上記の”kubectl create”コマンドと一緒に用いられる事が多い。
$ kubectl apply -f nginx.yaml
deployment.apps/nginx created
$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 2/2 2 2 5m44s
使用原生中国话进行改写如下:
运行命令:kubectl get <资源名称> -o wide。
通过在pod上运行,比普通的”kubectl get”命令可以获得更多的信息。特别是除了对象名称和状态之外,还可以获取IP地址和运行节点的信息,因此非常方便易用。
$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE ...
nginx-6799fc88d8-bhqj6 1/1 Running 0 2m34s 10.1.0.6 worker1 ...
nginx-6799fc88d8-s5qrp 1/1 Running 0 28s 10.1.0.7 worker2 ...
用 kubectl describe 命令来查看 <资源名> <对象名> 的详细信息。
使用”kubectl get”命令无法获取到有关特定对象的详细信息。因此,我们经常使用它来调查资源是否按预期运行,并获取详细的状态和事件信息。
$ kubectl describe deployment nginx
Name: nginx
Namespace: default
CreationTimestamp: xxx
Labels: app=nginx
Annotations: deployment.kubernetes.io/revision: 1
Selector: app=nginx
Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=nginx
Containers:
nginx:
Image: nginx
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Progressing True NewReplicaSetAvailable
Available True MinimumReplicasAvailable
OldReplicaSets: <none>
NewReplicaSet: nginx-6799fc88d8 (2/2 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 5m59s deployment-controller Scaled up replica set nginx-6799fc88d8 to 1
Normal ScalingReplicaSet 3m53s deployment-controller Scaled up replica set nginx-6799fc88d8 to 2
使用kubectl编辑<资源名称> <对象名称>。
使用编辑器来更新已生成的对象的设置。
通常情况下,通过修改清单文件并通过应用命令来应用更改,来反映修改。但是,通过使用这个命令,可以简单地更新设置。
然而,由于修改不会反映在清单文件中,所以如果想要正确地管理清单文件的话,建议不要使用这个命令。
$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 2/2 2 2 5m44s
$ kubectl edit deployment nginx # replicasを2→3に変更
deployment.apps/nginx edited
$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 3/3 3 3 12m
印象
如果有其他方便的命令,将适时进行更新。
文献目录
-
- 公式ドキュメント:kubernetes.io
Udemy講座:Certified Kubernetes Administrator (CKA) with Practice Tests