沪ICP备2021032517号-1

kubectl常用命令

  |   0 评论   |   0 浏览
kubectl version

kubectl get cs

kubectl cluster-info

kubectl get nodes

kubectl get pods

kubectl get pods -w

kubectl get pods -l app=nginx

kubectl delete -n app pods -l app=nginx  #删除 app命名空间下 label为nginx的Pod

kubectl describe pods

kubectl describe node node01

kubectl describe services/services_name

kubectl logs pod_name

kubectl exec -ti -n cka mypod-file /bin/bash

kubectl exec pod_name env

kubectl exec -ti pod_name bash

kubectl explain pod.spec

kubectl explain deployment.spec

kubectl delete po <your-pod-name> -n <name-space> --force --grace-period=0   强制删除POD

kubectl get pods -n master-data-domain | grep Evic| awk '{print $1}'| xargs kubectl -n master-data-domain delete pod   #批量删除处于Evic状态的pod

kubectl taint -h 添加删除污点

kubectl cordon -h 封锁某个节点

kubectl uncordon -h  取消封锁某个节点(将该节点的状态设为 Unschedulable)

kubectl set resources deployment deployment_name -n app --limits=cpu=2000m,memory=16384Mi --requests=cpu=200m,memory=8192Mi

kubectl get namespace cattle-system -o json | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" | kubectl replace --raw /api/v1/namespaces/cattle-system/finalize -f - #强制删除 namespace

kubectl cp -n test-gateway-prd bt-test-app-ccb9dcc98-828jh:test.dump /root/test.dump

创建deployment应用

kubectl create deployment nginx -n app-test --image=nginx-1.18.0-tcp-tools:20200923 #创建deployment 

kubectl run redis --image=redis --restart=Never --dry-run  -o yaml > redis.yaml #这样创建的是pod

kubectl run redis --image=redis  --dry-run  -o yaml > redis.yaml #这样创建的是deployment 

--dry-run -o yaml > redis.yaml #加--dry-run -o yaml表示只生文件,不加的话创建对象并生成文件

restartPolicy 字段,可能的值为 Always、OnFailure 和 Never

  • Always:重启容器;Podphase 仍为 Running。
  • OnFailure:重启容器;Podphase 仍为 Running。
  • Never:Podphase 变成 Failed。

扩缩容

kubectl scale deployments nginx --replicas=4   #扩容加改大数字值即可

创建 service

使用expose为deployment的nginx创建service,通过Service的80端口转发至容器的8080端口上

kubectl expose deployment nginx --port=80 --target-port=8080 
kubectl expose deployment/b3log-solo -n app-dev --type="NodePort" --port=8080 --name=b3log-solo-nodeport

注意:创建service前,pod或者deployment必须要有labels

用run命令生成yaml文件

run 创建pod

kubectl run --image=nginx my-deploy -o yaml --dry-run > my-deploy.yaml

create 创建deployment

kubectl create deployment nginx -n app-test --image=nginx-1.18.0-tcp-tools:20200923 > my-deploy.yaml

get导出yaml文件

kubectl get statefulset/jenkins -o=yaml --export > new.yaml   #默认在default命名空间下

kubectl get statefulset/jenkins -n kube-system -o=yaml --export > new.yaml 

打印yaml文件内容

kubectl get statefulsets/jenkins -n kube-system --output=yaml

kubectl get pods/jenkins-0 -n kube-system --output=yaml

kubectl get deployment nfs-provisioner -o yaml

修改deloyment image

kubectl set image deployment/nginx nginx=nginx:1.12.1

编辑对象

kubectl edit deployment/nginx nignx

查看升级历史

kubectl rollout history deployment nginx

kubectl rollout history deployment nginx --version=2 #查看第二次升级的情况

回滚

kubectl rollout undo deployment nginx --to-version=1 #回滚到第一个版本

更新配置文件中定义的对象:

kubectl replace -f nginx.yaml
kubectl get pod -n andriy-dang --watch  #监控变化

查看日志

kubectl logs --tail=10 -f pods/b3log-solo-685bb8bdd-8sjh7 -n app-dev

imagePullPolicy

  • imagePullPolicy: IfNotPresent:仅当镜像在本地不存在时才被拉取。
  • imagePullPolicy: Always:每次启动 Pod 的时候都会拉取镜像。
  • imagePullPolicy 省略时,镜像标签为:latest 或不存在,使用Always 值。
  • imagePullPolicy 省略时,指定镜像标签并且不是:latest,使用IfNotPresent 值。
  • imagePullPolicy: Never:假设镜像已经存在本地,不会尝试拉取镜像。

kubens&kubectx

1. 安装kubectx和kubens

wget https://raw.githubusercontent.com/ahmetb/kubectx/master/kubectx

wget https://raw.githubusercontent.com/ahmetb/kubectx/master/kubens

标题:kubectl常用命令
作者:zifuy
地址:https://www.zifuy.cn/articles/2019/10/08/1570528926509.html