码迷,mamicode.com
首页 > 其他好文 > 详细

k8s 命令使用

时间:2018-02-12 13:38:26      阅读:331      评论:0      收藏:0      [点我收藏+]

标签:mes   div   分享   esc   示例   aml   erp   根据   删除   

get

kubectl get po -o wide         #获取pod运行在哪个节点上的信息。

技术分享图片

 

[root@k8s_master ~]# kubectl get po --all-namespaces      #获取所有pod

技术分享图片

 

[root@k8s_master ~]# kubectl get namespace        ###获取namespace 信息

技术分享图片

 

可以使用"kubectl get rc”, “kubectl get svc”, “kubectl get nodes”等获取其他resource信息。

技术分享图片

 

 #以jison格式输出pod的详细信息

kubectl get po <podname> -o json 

技术分享图片

 

describe
describe类似于get,同样用于获取resource的相关信息。不同的是,get获得的是更详细的resource个性的详细信息,describe获得的是resource集群相关的信息。

[root@k8s_master ~]# kubectl describe po nginx-controller-shs0z

技术分享图片

 

create 

kubectl create -f nginx-rc.yaml

[root@k8s_master ~]# more nginx-rc.yaml 
apiVersion: v1 
kind: ReplicationController 
metadata: 
name: nginx-controller 
spec: 
replicas: 2 
selector: 
name: nginx 
template: 
metadata: 
labels: 
name: nginx 
spec: 
containers: 
- name: nginx 
image: nginx 
ports: 
- containerPort: 80

创建ReplicationController(rc),rc会创建两个副本,创建后,使用“kubectl get rc”可以看到一个名为nginx-controller的ReplicationController将被创建,同时“kubectl get po”的结果中会多出两个前缀为“nginx-controller-”的pod

技术分享图片

 

replace

replace命令用于对已有资源进行更新、替换。如前面create中创建的nginx,当我们需要更新resource的一些属性的时候,如果修改副本数量,增加、修改label,更改image版本,修改端口等。都可以直接修改原yaml文件,然后执行replace命令

kubectl replace -f rc-nginx.yaml

名字不能被更更新。另外,如果是更新label,原有标签的pod将会与更新label后的rc断开联系,有新label的rc将会创建指定副本数的新的pod,但是默认并不会删除原来的pod。所以此时如果使用get po将会发现pod数翻倍,进一步check会发现原来的pod已经不会被新rc控制

 

patch

如果一个容器已经在运行,这时需要对一些容器属性进行修改,又不想删除容器,或不方便通过replace的方式进行更新。kubernetes还提供了一种在容器运行时,直接对容器进行修改的方式,就是patch命令。
如前面创建pod的label是app=nginx-2,如果在运行过程中,需要把其label改为app=nginx-3,这patch命令如下:

kubectl patch pod rc-nginx-2-kpiqt -p {"metadata":{"labels":{"app":"nginx-3"}}}

 

Delete

根据resource名或label删除resource。

kubectl delete -f rc-nginx.yaml 
kubectl delete po rc-nginx-btv4j 
kubectl delete po -lapp=nginx-2

 

logs

logs命令用于显示pod运行中,容器内程序输出到标准输出的内容。跟docker的logs命令类似。如果要获得tail -f 的方式,也可以使用-f选项。

kubectl logs rc-nginx-2-kpiqt (pod name)

 

rolling-update

rolling-update是一个非常重要的命令,对于已经部署并且正在运行的业务,rolling-update提供了不中断业务的更新方式。rolling-update每次起一个新的pod,等新pod完全起来后删除一个旧的pod,然后再起一个新的pod替换旧的pod,直到替换掉所有的pod。
rolling-update需要确保新的版本有不同的name,Version和label,否则会报错 。

kubectl rolling-update rc-nginx-2 -f rc-nginx.yaml

 

如果在升级过程中,发现有问题还可以中途停止update,并回滚到前面版本

kubectl rolling-update rc-nginx-2 —rollback

 

scale

scale用于程序在负载加重或缩小时副本进行扩容或缩小,如前面创建的nginx有两个副本,可以轻松的使用scale命令对副本数进行扩展或缩小。

扩展副本数到4:
kubectl scale rc rc-nginx-3 —replicas=4 rc-nginx-3(rc name)

重新缩减副本数到2:
kubectl scale rc rc-nginx-3 —replicas=2

 

autoscale

autoscale命令提供了自动根据pod负载对其副本进行扩缩的功能。
autoscale命令会给一个rc指定一个副本数的范围,在实际运行中根据pod中运行的程序的负载自动在指定的范围内对pod进行扩容或缩容。如前面创建的nginx,可以用如下命令指定副本范围在1~4

kubectl autoscale rc rc-nginx-3 —min=1 —max=4

 

attach

attach命令类似于docker的attach命令,可以直接查看容器中以daemon形式运行的进程的输出,效果类似于logs -f,退出查看使用ctrl-c。
如果一个pod中有多个容器,要查看具体的某个容器的的输出,需要在pod名后使用-c containers name指定运行的容器。如下示例的命令为查看kube-system namespace中的nginx-controller-shs0z pod中的nginx容器的输出。

例:

[root@k8s_master ~]# kubectl attach nginx-controller-shs0z -c nginx -namespace=kube-system

nginx为容器名称
nginx-controller-shs0z 为pod名称
- namespace=kube-system    namespace名称

 

exec
exec命令同样类似于docker的exec命令,为在一个已经运行的容器中执行一条shell命令,如果一个pod容器中,有多个容器,需要使用-c选项指定容器。 方法与attach一样


run
类似于docker的run命令,直接运行一个image。

 

k8s 命令使用

标签:mes   div   分享   esc   示例   aml   erp   根据   删除   

原文地址:https://www.cnblogs.com/FRESHMANS/p/8444098.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!