• 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
    
  • 相关阅读:
    HTML5然还在草案阶段
    简单的JS动态加载单体
    步步为营 C# 技术漫谈 五、事件与委托机制
    .NET简谈脚本引擎系列(一:认识脚本引擎)
    微软一站式示例代码库 6月再次更新14个新示例代码
    CLR(公共语言运行时)到底藏在哪?
    .NET简谈构件系统开发模式
    项目管理理论与实践系列文章索引
    .Net调试技巧
    Lucene.Net
  • 原文地址:https://www.cnblogs.com/ifme/p/11978214.html
Copyright © 2020-2023  润新知