• kubectl命令使用


    kubectl 命令使用

    官方参考文档|kubectl 备忘单

    kubectl create

    按照yaml文件创建资源

    kubectl create -f <res.yaml> 
    

    根据 yaml 创建资源, apply 可以重复执行,create 不行

    kubectl create -f pod.yaml
    kubectl create -f ./nginx.yaml                        # 创建资源
    kubectl create -f .                                   # 创建当前目录下的所有yaml资源
    kubectl create -f ./nginx1.yaml -f ./mysql2.yaml      # 使用多个文件创建资源
    kubectl create -f ./dir                               # 使用目录下的所有清单文件来创建资源
    kubectl create -f https://git.io/vPieo                # 使用 url 来创建资源
    kubectl create -f demo-deployment.yaml                # 创建Deployment资源
    kubectl create -f demo-service.yaml                   # 创建Service资源
    

    kubectl apply

    kubectl apply -f <res.yaml>                           # 按照yaml文件创建资
    kubectl apply -f pod.yaml
    

    kubectl run

    kubectl run <name> --image=<image>                    # 使用某镜像创建Deployment
    kubectl run -i --tty busybox --image=busybox          # 创建带有终端的pod
    kubectl run -i --tty busybox --image=busybox – sh     # 交互式 shell 的方式运行 pod
    kubectl run nginx --image=nginx                       # 启动一个 nginx 实例
    kubectl run mybusybox --image=busybox --replicas=5    # 启动多个pod
    

    kubectl explain

    kubectl explain pods,svc                              # 获取 pod 和 svc 的文档
    

    kubectl delete

    基于 pod.yaml 定义的名称删除 pod

    kubectl delete -f pod.yaml
    

    删除所有包含某个 label 的podservice

    kubectl delete pod,svc -l name=
    

    删除所有 Pod

    kubectl delete pod --all
    

    删除某个节点

    kubectl delete pod 节点名称 -n 命名空间
    

    删除

    kubectl delete -f ./pod.json                          # 删除 pod.json 文件中定义的类型和名称的 pod
    kubectl delete pod,service baz foo                    # 删除名为“baz”的 pod 和名为“foo”的 service
    kubectl delete pods,services -l name=myLabel          # 删除具有 name=myLabel 标签的 pod 和 serivce
    kubectl delete pods,services -l name=myLabel --include-uninitialized           # 删除具有 name=myLabel 标签的 pod 和 service,包括尚未初始化的
    kubectl -n my-ns delete po,svc --all                  # 删除 my-ns namespace下的所有 pod 和 serivce,包括尚未初始化的
    kubectl delete pods prometheus-7fcfcb9f89-qkkf7 --grace-period=0 --force       # 强制删除
    

    kubectl replace
    
    kubectl apply
    
    kubectl edit
    

    kubectl get

    查看 RCservice 列表, -o wide 查看详细信息

    kubectl get rc,svc
    kubectl get pod,svc -o wide
    kubectl get pod -o yaml
    

    查看某个名称空间下的所有节点以及ip

    kubectl get pod -n 名称空间名 -o wide
    

    查看所有 pod 列表, -n 后跟 namespace, 查看指定的命名空间

    kubectl get pod -n kube
    

    查看所有的命名空间

    kubectl get ns
    

    查看 endpoint 列表

    kubectl get endpoints
    

    查看所有 namespacepods 运行情况

    kubectl get pods --all-namespaces
    

    获取所有 deployment

    kubectl get deployment --all-namespaces
    

    列出该 namespace 中的所有 pod 包括未初始化的

    kubectl get pods --include-uninitialized
    

    查看 deployment()

    kubectl get deployment nginx-app
    

    kubectl describe

    显示 Node 的详细信息

    kubectl describe node 192.168.0.212
    

    显示 Pod 的详细信息, 特别是查看 pod 无法创建的时候的日志

    kubectl describe pod
    eg:
    kubectl describe pod redis-master-tqds9
    

    查看 pods 结构信息(重点,通过这个看日志分析错误)
    对控制器和服务,node同样有效

    kubectl describe pods xxxxpodsname --namespace=xxxnamespace
    

    kubectl logs

    查看容器的日志

    kubectl logs
    kubectl logs -f # 实时查看日志
    kubectl logs -f nginx-pod -c my-container  # 流式输出 pod 中容器的日志(stdout,pod 中有多个容器的情况下使用)
    

    查看集群状态

    kubectl top            查看集群资源占用信息
    kubectl cluster-info   集群核心组件运行情况
    kubectl version        显示kube命令行及kube 服务端的版本
    kubectl api-versions   显示支持的API版本集合
    kubectl config view    显示当前kubectl配置
    kubectl get no         查看集群节点
    kubectl get cs         查看集群健康状态
    kubectl get events     查看事件
    

    查看pod变量

    kubectl exec my-nginx-5j8ok – printenv | grep SERVICE
    

    查看资源状态

    kubectl rollout status deploy nginx-test
    

    执行命令

    kubectl exec

    检查与调试

    kubectl exec -it <container name or id> /bin/bash     # 在容器内执行命令
    kubectl exec -it -c – bash                            # 通过bash获得 pod 中某个容器的TTY,相当于登录容器
    kubectl exec nginx-pod – ls /                         # 在已存在的容器中执行命令(只有一个容器的情况下)
    kubectl exec nginx-pod -c my-container – ls /         # 在已存在的容器中执行命令(pod 中有多个容器的情况下)
    kubectl attach nginx-pod -i                           # 连接到运行中的容器
    kubectl port-forward nginx-pod 5000:6000              # 转发 pod 中的 6000 端口到本地的 5000 端口
    

    调度配置

    kubectl drain k8s-node                                # 清空 my-node 以待维护
    kubectl top node k8s-node                             # 显示 my-node 的指标度量
    kubectl cluster-info dump --output-directory=/path/to/cluster-state           # 将当前集群状态输出到 /path/to/cluster-state
    

    部署管理

    kubectl scale                              # 实现水平扩展或收宿
    kubectl rollout status                     # 部署状态更状态检查
    kubectl rollout history                    # 部署的历史
    kubectl rollout undo                       # 回滚部署到最近或者某个版本
    

    横向扩容

    kubectl scale deploy nginx --replicas=3
    
    kubectl get deploy nginx 
    kubectl get rs 
    kubectl get po
    

    升级

    kubectl set image deploy nginx nginx=nginx:1.9.1
    kubectl rollout history deploy nginx
    可以看到滚动升级的过程 
    kubectl describe deploy nginx 
    

    升级一个错误的版本

    kubectl set image deploy nginx nginx=nginx:1.9.1
    kubectl rollout history deploy nginx 
    kubectl rollout history deploy nginx --version=3
    
    kubectl get rs 
    kubectl get po 
    kubectl describe po <pod id>
    

    回滚部署到最近或者某个版本

    kubectl rollout undo deploy nginx 
    kubectl get rs 
    kubectl get po 
    kubectl get ep
    kubectl delete po <pod id>
    
    kubectl get ep  
     
    kubectl delete svc <service id>
    

    更新

    kubectl rolling-update python-v1 -f python-v2.json                  # 滚动更新 pod frontend-v1
    kubectl rolling-update python-v1 python-v2 --image=image:v2         # 更新资源名称并更新镜像
    kubectl rolling-update python --image=image:v2                      # 更新 frontend pod 中的镜像
    kubectl rolling-update python-v1 python-v2 --rollback               # 退出已存在的进行中的滚动更新
    cat pod.json | kubectl replace -f -                                 # 基于 stdin 输入的 JSON 替换 pod
    kubectl replace --force -f ./pod.json                               # 强制替换,删除后重新创建资源。会导致服务中断。
    kubectl expose rc nginx --port=80 --target-port=8000                # 为 nginx RC 创建服务,启用本地 80 端口连接到容器上的 8000 端口
    

    更新单容器 pod 的镜像版本 (tag)v4

    kubectl get pod nginx-pod -o yaml | sed ‘s/(image: myimage):.*$/\1:v4/’ | kubectl replace -f -
    kubectl label pods nginx-pod new-label=awesome                      # 添加标签
    kubectl annotate pods nginx-pod icon-url=http://goo.gl/XXBTWq       # 添加注解
    kubectl autoscale deployment foo --min=2 --max=10                   # 自动扩展 deployment “foo”
    

    编辑资源

    kubectl edit svc/docker-registry                                    # 编辑名为 docker-registry 的 service
    KUBE_EDITOR=“nano” kubectl edit svc/docker-registry                 # 使用其它编辑器
    动态伸缩pod
    kubectl scale --replicas=3 rs/foo                                   # 将foo副本集变成3个
    kubectl scale --replicas=3 -f foo.yaml                              # 缩放“foo”中指定的资源。
    kubectl scale --current-replicas=2 --replicas=3 deployment/mysql    # 将deployment/mysql从2个变成3个
    kubectl scale --replicas=5 rc/foo rc/bar rc/baz                     # 变更多个控制器的数量
    kubectl rollout status deploy deployment/mysql                      # 查看变更进度
    

    其他

    k8s考试会用,答题前切换到考试用的k8s集群

    kubectl config use-context "集群名称"
    

    模拟用户发起请求:
    (模拟100个用户同时发起100000条请求,后面跟着ip地址)

    ab -c 100 -k 100000 http://23.23.23.1 -o wide
    
  • 相关阅读:
    Nginx配置文件
    SSM三层模型之间的参数传递
    Junit4用法
    常量类的设计
    初识Oracle
    sss
    sss
    sss
    sss
    sss
  • 原文地址:https://www.cnblogs.com/chuyiwang/p/16437087.html
Copyright © 2020-2023  润新知