kubectl

kubectl doc

常用命令

  • 创建命令

    • +create
    • apply
    • run
    • set
  • 操作命令

    • get
    • edit
    • delete
  • 查看命令

    • describe
    • exec
    • logs
  • 可选参数

    -n --namespaces 不加命名空间默认default命名空间

使用命令示例

资源操作

其他资源deployment、service、job等与pod操作一样

  • 创建pod

    默认是创建pod,其他资源可以增加相应名称,jobdeploymentservice

    kubectl create -f {filename}

    示例

    kubectl create -f ./pod.json

    创建pod并启动指定容器

    kubectl run {pod-name} --image={image-name}

    示例

    kubectl run nginx --image=nginx

    声明式创建pod

    kubectl apply (-f {filename} | -k {directory})

    示例

    kubectl apply -f ./pod.json

  • 查看pod

    kubectl get pod {pod-name} -n {namespace}

    示例

    查看一个pod

    kubectl get pods metrics-server-6d684c7b5-n9zr4

    查询所有pod

    kubectl get pods

  • 查看pod详情

    kubectl describe pods {pod-name}

    示例

    kubectl describe pods metrics-server-6d684c7b5-n9zr4

  • 查看pod内容器日志

    kubectl logs {pod-name} -c {container-name}

    示例

    如果pod只有一个容器可以省略容器名

    kubectl logs metrics-server-6d684c7b5-n9zr4

  • 在Pod容器内执行命令

    kubectl exec {pod-name} -c {container-name} [-it] -- {command}

    示例

    如果pod只有一个容器可以省略容器名

    kubectl exec metrics-server-6d684c7b5-n9zr4 -it -- /bin/bash

  • 重启pod

    方法一

    有最新的 yaml 文件。

    在有 yaml 文件的情况下可以直接使用kubectl replace --force -f xxxx.yaml 来强制替换Pod 的 API 对象,从而达到重启的目的

    方法二

    没有 yaml 文件,但是使用的是 Deployment 对象。
    kubectl scale deployment esb-admin --replicas=0

    kubectl scale deployment esb-admin --replicas=1

    由于 Deployment 对象并不是直接操控的 Pod 对象,而是操控的 ReplicaSet 对象,而 ReplicaSet 对象就是由副本的数目的定义和Pod 模板组成的。所以这条命令分别是将ReplicaSet 的数量 scale 到 0,然后又 scale 到 1,那么 Pod 也就重启了。

    方法三

    kubectl delete pod {podname}

    这个方法就很简单粗暴了,直接把 Pod 删除,因为 Kubernetes 是声明式 API,所以删掉了之后,Pod API 对象就与预期的不一致了,所以会自动重新创建 Pod 保持与预期一致,但是如果ReplicaSet 管理的 Pod 对象很多的话,那么要一个个手动删除,会很麻烦,所以可以使用

    kubectl delete replicaset {rs_name}

    方法四

    kubectl get pod {podname} -o yaml | kubectl replace --force -f -

    这种情况下,由于没有 yaml 文件,且启动的是 Pod 对象,那么是无法直接删除或者 scale 到 0 的,但可以通过上面这条命令重启。这条命令的意思是 get 当前运行的 pod 的 yaml声明,并管道重定向输出到 kubectl replace命令的标准输入,从而达到重启的目的。

  • 删除pod

    kubectl delete {pod-name}

    示例

    kubectl delete -f ./pod.json

清除k8s环境

sudo docker kill $(sudo docker ps -q)

#remove all containers
sudo docker rm –force $(sudo docker ps -a -q)

#remove all docker images
sudo docker rmi –force $(sudo docker images -q)

#remove all unused volumes
sudo docker volume prune –force

#k8s
sudo service docker stop

sudo rm -rf /etc/cni
rm -rf /etc/kubernetes
rm -rf /opt/cni
rm -rf /var/lib/calico/
rm -rf /var/lib/cni/
rm -rf /var/lib/etcd/
rm -rf /var/lib/rancher/*
rm -rf /var/run/calico

sudo service docker start

通过rke安装
https://www.jianshu.com/p/b082ebdc93bf

rke remove