Skip to content

1.基本操作

create,delete,get,run,expose,set,explain,edit

1.1 get

shell
1. 显示kubectl的版本信息
kubectl version

2. 显示集群的基本信息
kubectl cluster-info

3. 显示所有的节点信息
kubectl get nodes

4. 显示所有的pods信息
kubectl get pods

5. 创建pods 
kubectl create deployment {name} --image={image} 

6. 修改pods的数量 
kubectl scale deployment {name} --replicas={num}

7. 显示指定的pod的详细信息 
kubectl describe pod {name}

8. 显示指定pod的日志信息 
kubectl logs {name}

9. 进入指定pod的bash终端 
kubectl exec -it {name} -- /bin/bash

10.  删除pods
kubectl delete deployment {name}

11. 编辑svc 
kubectl edit svc {name}

-------------------------------------------------------------------------------

# 查看所有的资源信息
 
kubectl get all
 
# 查看pod列表
 
kubectl get pod
 
# 显示pod节点的标签信息
 
kubectl get pod --show-labels
 
# 根据指定标签匹配到具体的pod
 
kubectl get pods -l app=example
 
# 查看node节点列表
 
kubectl get node 
 
# 显示node节点的标签信息
 
kubectl get node --show-labels
 
# 查看pod详细信息,也就是可以查看pod具体运行在哪个节点上(ip地址信息)
 
kubectl get pod -o wide
 
# 查看服务的详细信息,显示了服务名称,类型,集群ip,端口,时间等信息
 
kubectl get svc
 
[root@master ~]# kubectl get svc
 
NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
go-service      NodePort    10.10.10.247   <none>        8089:33702/TCP   29m
java-service    NodePort    10.10.10.248   <none>        8082:32823/TCP   5h17m
kubernetes      ClusterIP   10.10.10.1     <none>        443/TCP          5d16h
nginx-service   NodePort    10.10.10.146   <none>        88:34823/TCP     2d19h
 
# 查看命名空间
 
kubectl get ns
 
# 查看所有pod所属的命名空间
 
kubectl get pod --all-namespaces
 
# 查看所有pod所属的命名空间并且查看都在哪些节点上运行
 
kubectl get pod --all-namespaces  -o wide
 
# 查看目前所有的replica set,显示了所有的pod的副本数,以及他们的可用数量以及状态等信息
 
kubectl get rs
 
[root@master ~]# kubectl get rs
 
NAME                          DESIRED   CURRENT   READY   AGE
go-deployment-58c76f7d5c      1         1         1       32m
java-deployment-76889f56c5    1         1         1       5h21m
nginx-deployment-58d6d6ccb8   3         3         3       2d19h
 
# 查看目前所有的deployment
 
kubectl get deployment
 
[root@master ~]# kubectl get deployment
 
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
go-deployment      1/1     1            1           34m
java-deployment    1/1     1            1           5h23m
nginx-deployment   3/3     3            3           2d19h
 
# 查看已经部署了的所有应用,可以看到容器,以及容器所用的镜像,标签等信息
 
 kubectl get deploy -o wide
 
[root@master bin]# kubectl get deploy -o wide 
    
NAME    READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES       SELECTOR
nginx   3/3     3            3           16m   nginx        nginx:1.10   app=example
1. 显示kubectl的版本信息
kubectl version

2. 显示集群的基本信息
kubectl cluster-info

3. 显示所有的节点信息
kubectl get nodes

4. 显示所有的pods信息
kubectl get pods

5. 创建pods 
kubectl create deployment {name} --image={image} 

6. 修改pods的数量 
kubectl scale deployment {name} --replicas={num}

7. 显示指定的pod的详细信息 
kubectl describe pod {name}

8. 显示指定pod的日志信息 
kubectl logs {name}

9. 进入指定pod的bash终端 
kubectl exec -it {name} -- /bin/bash

10.  删除pods
kubectl delete deployment {name}

11. 编辑svc 
kubectl edit svc {name}

-------------------------------------------------------------------------------

# 查看所有的资源信息
 
kubectl get all
 
# 查看pod列表
 
kubectl get pod
 
# 显示pod节点的标签信息
 
kubectl get pod --show-labels
 
# 根据指定标签匹配到具体的pod
 
kubectl get pods -l app=example
 
# 查看node节点列表
 
kubectl get node 
 
# 显示node节点的标签信息
 
kubectl get node --show-labels
 
# 查看pod详细信息,也就是可以查看pod具体运行在哪个节点上(ip地址信息)
 
kubectl get pod -o wide
 
# 查看服务的详细信息,显示了服务名称,类型,集群ip,端口,时间等信息
 
kubectl get svc
 
[root@master ~]# kubectl get svc
 
NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
go-service      NodePort    10.10.10.247   <none>        8089:33702/TCP   29m
java-service    NodePort    10.10.10.248   <none>        8082:32823/TCP   5h17m
kubernetes      ClusterIP   10.10.10.1     <none>        443/TCP          5d16h
nginx-service   NodePort    10.10.10.146   <none>        88:34823/TCP     2d19h
 
# 查看命名空间
 
kubectl get ns
 
# 查看所有pod所属的命名空间
 
kubectl get pod --all-namespaces
 
# 查看所有pod所属的命名空间并且查看都在哪些节点上运行
 
kubectl get pod --all-namespaces  -o wide
 
# 查看目前所有的replica set,显示了所有的pod的副本数,以及他们的可用数量以及状态等信息
 
kubectl get rs
 
[root@master ~]# kubectl get rs
 
NAME                          DESIRED   CURRENT   READY   AGE
go-deployment-58c76f7d5c      1         1         1       32m
java-deployment-76889f56c5    1         1         1       5h21m
nginx-deployment-58d6d6ccb8   3         3         3       2d19h
 
# 查看目前所有的deployment
 
kubectl get deployment
 
[root@master ~]# kubectl get deployment
 
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
go-deployment      1/1     1            1           34m
java-deployment    1/1     1            1           5h23m
nginx-deployment   3/3     3            3           2d19h
 
# 查看已经部署了的所有应用,可以看到容器,以及容器所用的镜像,标签等信息
 
 kubectl get deploy -o wide
 
[root@master bin]# kubectl get deploy -o wide 
    
NAME    READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES       SELECTOR
nginx   3/3     3            3           16m   nginx        nginx:1.10   app=example

1.2 delete

删除资源

bash

# 根据yaml文件删除对应的资源,但是yaml文件并不会被删除,这样更加高效
 
kubectl delete -f javak8s-deployment.yaml 
 
kubectl delete -f javak8s-service.yaml

kubectl delete 具体的资源名称

# 根据yaml文件删除对应的资源,但是yaml文件并不会被删除,这样更加高效
 
kubectl delete -f javak8s-deployment.yaml 
 
kubectl delete -f javak8s-service.yaml

kubectl delete 具体的资源名称

1.3 run

在集群中创建并运行一个或多个容器镜像

bash
# 基本语法
run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]
 
# 示例,运行一个名称为nginx,副本数为3,标签为app=example,镜像为nginx:1.10,端口为80的容器实例
 
kubectl run nginx --replicas=3 --labels="app=example" --image=nginx:1.10 --port=80
 
其他用法参见:http://docs.kubernetes.org.cn/468.html
# 基本语法
run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]
 
# 示例,运行一个名称为nginx,副本数为3,标签为app=example,镜像为nginx:1.10,端口为80的容器实例
 
kubectl run nginx --replicas=3 --labels="app=example" --image=nginx:1.10 --port=80
 
其他用法参见:http://docs.kubernetes.org.cn/468.html

1.4 expose

创建一个service服务,并且暴露端口让外部可以访问

bash
# 创建一个nginx服务并且暴露端口让外界可以访问
 
kubectl expose deployment nginx --port=88 --type=NodePort --target-port=80 --name=nginx-service
 
关于expose的详细用法参见:http://docs.kubernetes.org.cn/475.html
# 创建一个nginx服务并且暴露端口让外界可以访问
 
kubectl expose deployment nginx --port=88 --type=NodePort --target-port=80 --name=nginx-service
 
关于expose的详细用法参见:http://docs.kubernetes.org.cn/475.html

1

2.调试和故障排查

shell
1. 显示指定节点的详细信息 
kubectl describe node {name}

2. 显示指定deployment的详细信息
kubectl describe deployment {name}

3. 显示指定service的详细信息
kubectl describe service {name}

4. 显示所有事件信息
kubectl get events 

5. 显示所有事件信息,并按照创建时间排序 
kubectl get events --sort-by=.metadata.creationTimestamp 

6. 显示所有namespace下的pods信息
kubectl get pods --all-namespaces 

7. 显示所有namespace下的deployment信息
kubectl get deployments --all-namespaces

8. 显示所有namespace下的service信息
kubectl get services --all-namespaces

9. 显示所有已禁用调度的节点信息
kubectl get nodes -o yaml | grep -A5 -B2 SchedulingDisabled

10. 运行一个busybox容器并进行调试
kubectl run -i --tty busybox --image=busybox --restart=Never -- sh
1. 显示指定节点的详细信息 
kubectl describe node {name}

2. 显示指定deployment的详细信息
kubectl describe deployment {name}

3. 显示指定service的详细信息
kubectl describe service {name}

4. 显示所有事件信息
kubectl get events 

5. 显示所有事件信息,并按照创建时间排序 
kubectl get events --sort-by=.metadata.creationTimestamp 

6. 显示所有namespace下的pods信息
kubectl get pods --all-namespaces 

7. 显示所有namespace下的deployment信息
kubectl get deployments --all-namespaces

8. 显示所有namespace下的service信息
kubectl get services --all-namespaces

9. 显示所有已禁用调度的节点信息
kubectl get nodes -o yaml | grep -A5 -B2 SchedulingDisabled

10. 运行一个busybox容器并进行调试
kubectl run -i --tty busybox --image=busybox --restart=Never -- sh