• kubectl 常用命令


    查看

    • 查看所有kubelet节点
      kubectl get nodes
      kubectl get nodes -o wide --show-labels //可以看到所有节点的label

    • 查看所有pod
      kubectl get pods --all-namespaces
      kubectl get pods -o wide
      kubectl get pods -o wide -w //可以看到实时状态变化

    • 查看pod详情
      kubectl describe pod podname -n namespace
      kubectl get -o json pod podname -n namespace
      kubectl get pods/podname -n namespace
      kubectl get pods/podname -n namespace -o json

    • 查看所有daemonset
      kubectl get daemonset --all-namespaces

    • kubectl get rc,services

    • List one or more resources by their type and names.
      kubectl get rc/web service/frontend pods/web-pod-13je7

    namespace相关

    • 要使用新的namespace,必须先创建,然后才能写在yaml的metadata的字段里
      kubectl create namespace newname

    节点的label

    • 查看节点的所有label
      kubectl get node --show-labels
    • 给节点添加一个新label
      kubectl label nodes kube-node node=kube-node
    • 修改节点的label
      kubectl label nodes --overwrite k8s-slave node-network-driver=ovs
    • 删除节点的某个label
      kubectl label nodes kube-node node-

    yaml文件、配置相关

    • 查看资源的yaml
      kubectl get deploy/my-nginx --export -o yaml
      kubectl get deploy/my-nginx --export -o yaml > example.yaml

    • 生成yaml文件
      由于yaml文件格式不好记住,可以先通过kubectl命令生成yaml,再更改yaml。 –dry-run表示尝试,不真实执行。
      kubectl run --image=nginx my-nginx -o yaml --dry-run >> xxx.yaml

    • 修改API 资源的属性
      kubectl edit pod/testnew2-prd-123 -n testnew2

      //Update a container's image; spec.containers[*].name is required because it's a merge key.
      kubectl patch pod valid-pod -p '{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}'

      //Update a single-container pod's image version (tag) to v4
      kubectl get pod mypod -o yaml | sed 's/(image: myimage):.*$/1:v4/' | kubectl replace -f -

    对容器执行命令

    • 对单容器的pod执行命令,注意--后面必须有空格
      kubectl exec -it pod_name -n namespace -- ovs-vsctl show

      有的时候一个pod中有多个容器,只有针对整个pod的命令才有效,此时需要指定container,这里指定的是container-name(可以用kubectl describe pod查看所有的容器名称)
      kubectl exec -it podname -n namespace -c containername -- ovs-vsctl show

    • 文件拷贝
      kubectl cp pod-name:/path/to/file /tmp/localpath/file

    • 修改容器的镜像,如下是修改daemonset contiv-netplugin-ovs contiv-netplugin的镜像为新镜像,首先要先docker pull新镜像
      • kubectl set image ds/contiv-netplugin-ovs contiv-netplugin=new-image -n kube-system
        然后需要删除需要更新的daemonset中的pod,然后会重建pod,这个pod使用的就是新镜像. 这里的标签是container-name=new-image-name
    • 动态调整副本数
      • kubectl scale deployment.v1.apps/apitest-deployment --replicas=10 -n namespace

    常见问题

      • 计算节点状态为 Ready,SchedulingDisabled, 执行 kubectl uncordon node-name即可。

      • 根据node的label筛选节点
        kubectl label nodes kube-node node=kube-node
        kubectl label nodes --overwrite k8s-slave node-network-driver=sriov //修改节点k8s-slave的标签node-network-driver的值为sriov
        kubectl get node -a -l "node=kube-node"
        pod或者rc的配置项中添加如下配置,位置跟cotainer平行:
        nodeSelector:
        node: kube-node4

  • 相关阅读:
    golang删除数组某个元素
    golang用通道实现信号量,控制并发个数
    什么是ScaleIO中的forwards rebuild和backwards rebuild?
    SQL Server中的database checkpoint
    如何将thick provision lazy zeroed的VMDK文件转换为thick provision eager zeroed?
    LoadTestAgentResultsLateException in VS2010
    SQL Server Instance无法启动了, 因为TempDB所在的分区没有了, 怎么办?
    VMware vCenter中, 如何辩认虚机上Raw Device Mapping过了的一块物理磁盘?
    SQL Server AlwaysOn Setup Step-By-Step Guide
    TPC-E在populate测试Database时需要注意的一些事项
  • 原文地址:https://www.cnblogs.com/ExMan/p/12053677.html
Copyright © 2020-2023  润新知