常用kubectl命令总结

2018-05-31 2985点热度 0人点赞 0条评论

原文链接

常用kubectl命令总结

创建资源对象

根据yaml配置文件创建一个Deployment

kubectl create -f deployment.yaml

deployment.yaml文件内容如下:

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 # tells deployment to run 2 pods matching the template
  template: # create pods using pod definition in this template
    metadata:
      # unlike pod-nginx.yaml, the name is not included in the meta data as a unique name is
      # generated from the deployment name
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80

根据目录下所有.yaml、.yml、.json文件的定义进行创建操作

kubectl create -f <directory>

kubectl 输出格式

显示Pod的更多信息,可以显示IP和所在节点信息

kubectl get pod <pod-name> -o wide

-bash-4.2$ kubectl get pods -o wide
NAME                                READY     STATUS    RESTARTS   AGE       IP           NODE
nginx-deployment-7d9f9876cc-8m5rl   1/1       Running   0          3m        10.244.1.9   k8s-n1
nginx-deployment-7d9f9876cc-f2b9c   1/1       Running   0          3m        10.244.3.8   k8s-n2

以yaml格式显示Pod的详细信息

kubectl get pod <pod-name> -o yaml

查看资源对象

查看所有Pod列表,pod或者pods均可

kubectl get pods

查看service(svc),deployment,pv,pvc列表

kubectl get svc,deployment,pv,pvc

描述(describe)资源对象,查看资源对象详细信息

显示Node的详细信息

kubectl describe nodes <node-name>

显示Pod的详细信息

kubectl describe pods/<pod-name>

显示由deployment管理的Pod的信息

kubectl describe pods nginx-deployment

删除资源对象

基于yaml定义的名称删除资源对象

kubectl delete -f deployment.yaml

删除所有包含某个label的Pod和service

kubectl delete pods,services -l name=<label-name>

删除所有Pod

kubectl delete pods --all

执行容器的命令

执行Pod的data命令,默认是用Pod中的第一个容器执行

kubectl exec <pod-name> data

指定Pod中某个容器执行data命令

kubectl exec <pod-name> -c <container-name> data

通过bash获得Pod中某个容器的TTY,相当于登录容器

kubectl exec -it <pod-name> -c <container-name> bash

Pod的扩容与缩容

执行扩容缩容Pod的操作

kubectl scale deployment nginx-deployment --replicas=3

我们需要确认的是在deployment配置文件中定义的replicas数量,当我们执行上述命令的结果大于replicas的数量时,则我们执行的命令相当于扩容操作,反之相反,可以理解为我们填写的数量是我们需要的Pod数量。需要注意的是,当我们需要进行永久性扩容时,不要忘记修改deployment配置文件中的replicas数量。

Pod的滚动升级

执行滚动升级操作

kubectl rolling-update redis -f redis-rc.update.yaml

需要注意的是当我们执行rolling-update命令前需要准备好新的RC配置文件以及ConfigMap配置文件,RC配置文件中需要指定升级后需要使用的镜像名称,或者可以使用kubectl rolling-update redis --image=redis-2.0直接指定镜像名称的方式直接升级。【未验证】

王显锋

激情工作,快乐生活!

文章评论