k8s常用命令

1. 获取信息

# 查看k8s健康状态
kubectl get cs

# 获取所有命名空间
kubectl get ns

# k8s获取节点信息
kubectl get nodes

# 列出服务
kubectl get services
kubectl get svc

# 列出replicationcontrollers
kubectl get replicationcontrollers
kubectl get rc

# 列出ReplicaSet
kubectl get rs

# 列出Deployment
kubectl get deploy

# 列出DaemonSet
kubectl get ds

# 列出ingress
kubectl get ingresses

# 列出job
kubectl get jobs

# 获取replicationController详细信息
# kubectl describe rc rc名
kubectl describe rc kubia

# 获取ReplicaSet详细信息
# kubectl describe rs ReplicaSet名
kubectl describe rs kubia

# 获取节点更多信息
# kubectl describe node 节点名
kubectl describe node node1

# 获取pod详细信息
# kubectl describe pod pod名称
kubectl describe pod kubia-manual

# 查看现有pod的yaml描述文件
# kubectl get pod pod名称 -o yaml
kubectl get pod kubia-manual -o yaml

# 查看现有pod的json描述文件
# kubectl get pod pod名称 -o json
kubectl get pod kubia-manual -o json

# 获取pod日志
# kubectl logs pod名称
kubectl logs kubia-manual

# 获取崩溃容器的应用日志
# kubectl logs pod名称 --previous
kubectl logs mypod --previous

# 获取多容器pod的日志时指定容器名称
# kubectl logs pod名称 -c 容器名
kubectl logs kubia-manual -c kubia

# 列出pod
kubectl get pods

# 列出包含已完成的pod
kubectl get pods -A
kubectl get pods --show-all

# 获取指定命名空间的pod
# kubectl get pods --namespace 命名空间名
kubectl get pods --namespace kube-system
kubectl get pods -n kube-system

# 列出pod时显示pod IP和pod的节点
kubectl get pods -o wide

# 列出pod时显示标签
kubectl get pods --show-labels

# 列出工作节点时显示标签
kubectl get nodes --show-labels

# 列出pod时显示选择的标签
# kubectl get pods -L 标签1,标签2
kubectl get pods -L creation_method,env

# 根据标签选择器列出pod子集
# kubectl get pods -l  标签键=标签值
kubectl get pods -l  env=debug,app=pc

# 根据标签选择工作节点
# kubectl get nodes -l 标签键=标签值
kubectl get nodes -l cpu=fastest

# 列出包含env标签的所有pod
kubectl get pods -l env

# 列出不包含env标签的所有pod
kubectl get pods -l '!env'

# 列出标签env其值是debug或pro的pods
kubectl get pods -l "env in (debug,prod)"

# 列出标签env其值不是debug或pro的pods
kubectl get pods -l "env notin (debug,prod)"

# 获取deployment的更新历史
# kubectl rollout history deployment deployment名
kubectl rollout history deployment myapp-deploy

# 在运行的容器中远程执行命令(--表示k8s命令结束)
kubectl exec kubia(容器名) -- curl -s http://www.baidu.com

# 查看容器中的变量
kubectl exec kubia(容器名) env

# 在pod中运行shell
kubectl exec -it kubia(容器名) bash

# 获取服务的endpoint(服务的ip地址和端口号列表)
kubectl get endpoints kubia(服务名)

2. 创建操作

# 使用yaml文件创建pod,ReplicationController,ReplicaSet
# kubectl create -f yaml文件
kubectl create -f kubia-manual.yaml

# 使用yaml文件创建pod,ReplicationController,ReplicaSet,指定命名空间
# kubectl create -f yaml文件 -n 自定义命名空间名
kubectl create -f kubia-manual.yaml -n custom-namespace

# 创建自定义命名空间
# kubectl create namespace 自定义命名空间名
kubectl create namespace custom-namespace

# 暴露一个service
# kubectl expose deployment deploy名 --port=暴露端口号
kubectl expose deployment redis --port=6379

3. 修改相关操作

# 给现有pod追加标签
# kubectl label pod pod名 标签键=标签值
kubectl label pod kubia-manual creation_method=manual

# 覆盖现有pod的标签
# kubectl label pod pod名 标签键=标签值 --overwrite
kubectl label pod kubia-manual-v2 env=debug --overwrite

# 给工作节点设置标签
# kubectl label node 工作节点名 标签key=标签value
kubectl label node node1 cpu=fast

# 给工作节点覆盖标签
# kubectl label node 工作节点名 标签key=标签value --overwrite
kubectl label node node1 cpu=fastest --overwrite

# 编辑replicationController(原有的pod不会发生变化,新创建的pod会变化)
# kubectl edit rc rc名
kubectl edit rc kubia

# 水平设置replicationcontrollers的副本数
# kubectl scale rc rc名 --replicas=5
kubectl scale rc kubia --replicas=5

# 给namespace打标签
kubectl label namespace bookinfo-application istio-injection=enabled



4. 删除操作

# 删除pod
# kubectl delete -f yaml配置文件
kubectl delete -f pod-demo.yaml

# 删除pod
# kubectl delete pod pod名
kubectl delete pod kubia-manual

# 删除当前命名空间下的所有pod
kubectl delete pod --all

# 根据标签删除pod
# kubectl delete pod -l 标签key=标签value
kubectl delete pod -l env=debug

# 通过删除命名空间删除相关的pod
# kubectl delete ns 命名空间名
kubectl delete ns custom-namespace

# 删除命名空间下的所有资源
kubectl delete all --all

# 删除replicationController(会删除rc包含的Pod)
# kubectl delete rc rc名
kubectl delete rc kubia

# 删除replicationSet(会删除rs包含的Pod)
# kubectl delete rs rs名
kubectl delete rs kubia

# 仅删除replicationController(不会删除rc包含的Pod)
# kubectl delete rc rc名 --cascade=false
kubectl delete rc kubia --cascade=false

# 删除replicationSet(不会删除rs包含的Pod)
# kubectl delete rs rs名 --cascade=false
kubectl delete rs kubia --cascade=false

5. Deployment更新流程

#修改yaml配置文件,实现对rs,rc,pod,deployment的修改
# kubectl apply -f 配置文件名
kubectl apply -f kubia.yaml

# 1. 修改deployment的镜像
# kubectl set image deployment deploy名 容器名=镜像版本
kubectl set image deployment myapp-deploy myapp=ikubernetes/myapp:v3

# 2. 暂停deployment操作
# kubectl rollout pause deployment deploy名
kubectl rollout pause deployment myapp-deploy

# 修改deployment中pod的一个镜像,暂停deployment操作
kubectl set image deployment myapp-deploy myapp=ikubernetes/myapp:v3 && kubectl rollout pause deployment myapp-deploy

# 3. 监视deploy的更新过程
# kubectl rollout status deployment deploy名
kubectl rollout status deployment myapp-deploy

# 4. 在观察deployment更新完的一个没有问题的情况下,继续deployment的更新
# kubectl rollout resume deployment deploy名
kubectl rollout resume deployment myapp-deploy

# 5. 查看当前更新完的deployment的rs多个版本,并查看当前处于哪个版本
kubectl get rs -o wide

# 5.5 查看deployment的历史版本
# kubectl rollout history deployment deploy名
kubectl rollout history deployment myapp-deploy

# 6. 当发现镜像有问题可以回滚版本到上一个版本
# kubectl rollout undo deployment/deploy名
kubectl rollout undo deployment/myapp-deploy

# 6. 当发现镜像有问题可以回滚版本,回滚到指定版本(用5.5查看需要回滚的版本号)
#  kubectl rollout undo deployment/deploy名 --to-revision=版本号
kubectl rollout undo deployment/myapp-deploy --to-revision=3
posted @ 2019-12-06 09:46  if年少有为  阅读(1024)  评论(0编辑  收藏  举报