常用命令汇总
这里整理一些在使用Kubernetes时常用的命令,方便查询。
查看资源
查看资源可以使用get,可以加上-o wide标志显示更多的信息。例如,查看Pod资源:
kubectl get pods
kubectl get pods -o wide使用describe可以展示某一个特定的资源对象的详细信息。例如,列出Pod资源对象kubia的详情:
kubectl describe pods kubia使用-o custom-columns可以自定义要展示的列,以及--sort-by对资源列表进行排序:
$ kubectl get pods -o custom-columns=POD:metadata.name,NODE:spec.nodeName --sort-by=spec.nodeName
POD NODE
curl minikube
curl-with-ambassador minikube
downward minikube创建资源
创建资源通常分为两步:
编写资源的YAML/JSON配置文件;
使用
kubectl apply或kubectl create命令根据配置文件创建资源。例如,根据配置文件kubia.yaml创建资源:kubectl apply -f kubia.yaml
命令创建Pod
可以通过kubectl run命令快速创建一个Pod,用于调试:
在运行的容器中执行命令
可以通过kubectl exec命令快速执行,用于调试:
命令创建Service
可以使用kubectl expose命令创建一个Service资源对象。基础命令方式为:
举个例子:
命令创建 Deployment
使用 kubectl create deployment {name} --image={image} [--dry-run] [options] 来创建 Deployment 资源。如下在命名空间 foo 中创建一个名为 test 的 Deployment:
创建 Role
使用 kubectl create role NAME --verb=verb --resource=resource.group/subresource [--resource-name=resourcename] [--dry-run] [options] 命令来创建 Role 资源。如下,在命名空间 bar中创建一个名为 service-reader 的 Role,该 Role 具备 get 和 list 所有 Services 资源的权限:
创建 RoleBinding
使用 kubectl create rolebinding NAME --clusterrole=NAME|--role=NAME [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run] [options] 命令来创建 RoleBinding 资源。如下,在命名空间 foo 中创建一个名为 test 的 RoleBinding,其将名为 foo:default 的 ServiceAccount 与名为 service-reader 的 Role 绑定起来:
创建 ClusterRole
使用 kubectl create clusterrole NAME --verb=verb --resource=resource.group [--resource-name=resourcename] [--dry-run] [options] 命令来创建 ClusterRole 资源。如下,创建一个名为 pv-reader 的 Role,该 Role 具备 get 和 list 所有 PV 资源的权限:
创建 ClusterRoleBinding
使用 kubectl create clusterrolebinding NAME --clusterrole=NAME [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run] [options] 命令来创建 ClusterRoleBinding 资源。如下,创建一个名为 pv-test 的 ClusterRoleBinding,并将名为 pv-reader 的 ClusterRole 与命名空间 foo 中的 default ServiceAccount 进行绑定:
修改资源
在Kubernetes中经常会遇到需要修改资源的时候,其实无非都是修改资源规格定义,然后进行升级而已。
可以通过下面的常用命令进行修改。
方法
作用
例子
kubectl edit
该命令会使用默认编辑器打开目标资源对象的资源配置,修改后,保存即可。
修改Deployment资源对象kubia:kubectl edit deployment kubia
kubectl patch
可针对资源对象的单个资源属性进行修改。
修改Deployment资源对象kubia的容器规格:kubectl patch deployment kubia -p '{"spec": {"template": {"spec": {"containers": [{"name": "nodejs", "image": "luksa/kubia:v2"}]}}}}'
kubectl apply
通过一个完整的YAML/JSON文件,应用其中的新值来修改对象。
修改Deployment资源的配置文件后,重新apply该文件:kubectl apply -f kubia-deployment-v2.yaml
kubect replace
将原有对象替换为YAML/JSON文件中定义的新对象。要求之前的对象必须存在,否则会报错。
修改Deployment资源的配置文件后,使用replace替换原对象:kubectl replace -f kubia-deployment-v2.yaml
kubectl set image
修改Pod、ReplicationController、ReplicaSet、Deployment、DemonSet、Job内的镜像。
修改Deployment资源对象kubia中名为nodejs容器的镜像为luksa/kubia:v2:kubectl set image deployment kubia nodejs=luksa/kubia:v2
使用scale缩放资源
我们可以使用kubectl scale来缩放Deployment、ReplicaSet、ReplicationController和StatefulSet四种类型的资源。下面举几个例子:
删除资源
删除资源只需要通过delete即可。强制删除可以加上--force和--grace-period 0这两个标记。例如,删除Pod资源对象kubia:
与集群资源对象通信
这里说的集群资源,主要是指Service和Pod资源对象。
通过port-forward进程与Pod通信
port-forward是一个进程,可以将本地的端口与Kubernetes集群中的Pod的端口进行映射。其可以与Service对象后端的Pod、Deployment接管的Pod等的端口进行映射。
基本架构图如下:

基本命令为:
举几个例子:
通过API服务器与资源对象通信
Kubernetes的API服务器的很有用的一个功能就是可以通过代理直接访问指定的资源,或获得指定的资源的详细信息。通常发起HTTP请求的URL都是proxy/:
由于API服务器具有安全保障,因此直接访问需要在请求中添加授权令牌。但是可以使用kubectl客户端建立代理的方式来与API服务器通信。开启代理的命令如下:
在本地的8080端口上开启kubectl proxy
例如,请求当前在default命名空间中,名为kubia-0的Pod时,可以通过下面的URL请求(Pod需有程序监听在80端口接收请求):
现在每个请求都会经过两层代理,如下图:

访问Service资源对象同样可以采用这种方式,该资源对象的URL为:
Last updated
Was this helpful?