创建对象

通过yaml文件创建:

kubectl create -f xxx.yaml (不建议使用,无法更新,必须先delete)kubectl apply -f xxx.yaml (创建+更新,可以重复使用)

删除对象

通过yaml文件删除:

kubectl delete -f xxx.yaml

查看kube-system namespace下面的pod/svc/deployment 等等

(-o wide 选项可以查看存在哪个对应的节点)

kubectl get pod/svc/deployment -n kube-system

查看所有namespace下面的pod/svc/deployment等等

kubectl get pod/svc/deployment --all-namcpaces

重启pod

(无法删除对应的应用,因为存在deployment/rc之类的副本控制器,删除pod也会重新拉起来)

kubectl get pod -n kube-system

查看pod描述:

kubectl describe pod XXX -n kube-system

查看pod 日志 (如果pod有多个容器需要加-c 容器名)

kubectl logs xxx -n kube-system

删除应用(先确定是由说明创建的,再删除对应的kind):

kubectl delete deployment xxx -n kube-system

根据label删除:

kubectl delete pod -l app=flannel -n kube-system

扩容

kubectl scale deployment spark-worker-deployment --replicas=8

导出配置文件:

导出proxykubectl get ds -n kube-system -l k8s-app=kube-proxy -o yaml>kube-proxy-ds.yaml导出kube-dnskubectl get deployment -n kube-system -l k8s-app=kube-dns -o yaml >kube-dns-dp.yamlkubectl get services -n kube-system -l k8s-app=kube-dns -o yaml >kube-dns-services.yaml导出所有 configmapkubectl get configmap -n kube-system -o wide -o yaml > configmap.yaml

查看集群信息

kubectl cluster-info

查看各组件信息

kubectl get componentstatuses

查看kubelet进程启动参数

ps -ef | grep kubelet

查看日志:

journalctl -u kubelet -f

设为不可调度状态:

kubectl cordon node1

将pod赶到其他节点:

kubectl drain node1

#解除不可调度状态
kubectl uncordon node1

master运行pod
kubectl taint nodes master.k8s node-role.kubernetes.io/master-

master不运行pod
kubectl taint nodes master.k8s node-role.kubernetes.io/master=:NoSchedule

显示和查找资源

Get commands with basic output
kubectl get services # 列出所有 namespace 中的所有 service
kubectl get pods --all-namespaces # 列出所有 namespace 中的所有 pod
kubectl get pods -o wide # 列出所有 pod 并显示详细信息
kubectl get deployment my-dep # 列出指定 deployment
kubectl get pods --include-uninitialized # 列出该 namespace 中的所有 pod 包括未初始化的

使用详细输出来描述命令

kubectl describe nodes my-node
kubectl describe pods my-pod
kubectl get services --sort-by=.metadata.name # List Services Sorted by Name

根据重启次数排序列出 pod

kubectl get pods --sort-by=’.status.containerStatuses[0].restartCount’

获取所有具有 app=cassandra 的 pod 中的 version 标签

kubectl get pods --selector=app=cassandra rc -o
jsonpath=’{.items[*].metadata.labels.version}’

获取所有节点的 ExternalIP

kubectl get nodes -o jsonpath=’{.items[*].status.addresses[?(@.type==“ExternalIP”)].address}’

列出属于某个 PC 的 Pod 的名字

“jq”命令用于转换复杂的 jsonpath,参考 https://stedolan.github.io/jq/
sel=KaTeX parse error: Expected '}', got 'EOF' at end of input: {(kubectl get rc my-rc --output=json | jq -j ‘.spec.selector | to_entries | .[] | “(.key)=(.value),”’)%?}echo ( k u b e c t l g e t p o d s − − s e l e c t o r = (kubectl get pods --selector=(kubectlgetpods−−selector=sel --output=jsonpath={.items…metadata.name})

查看哪些节点已就绪

$ JSONPATH=’{range .items[]}{@.metadata.name}:{range @.status.conditions[]}{@.type}={@.status};{end}{end}’
&& kubectl get nodes -o jsonpath="$JSONPATH" | grep “Ready=True”

列出当前 Pod 中使用的 Secret

$ kubectl get pods -o json | jq ‘.items[].spec.containers[].env[]?.valueFrom.secretKeyRef.name’ | grep -v null | sort | uniq

更新资源

$ kubectl rolling-update frontend-v1 -f frontend-v2.json # 滚动更新 pod frontend-v1
$ kubectl rolling-update frontend-v1 frontend-v2 --image=image:v2 # 更新资源名称并更新镜像
$ kubectl rolling-update frontend --image=image:v2 # 更新 frontend pod 中的镜像
$ kubectl rolling-update frontend-v1 frontend-v2 --rollback # 退出已存在的进行中的滚动更新
$ cat pod.json | kubectl replace -f - # 基于 stdin 输入的 JSON 替换 pod

强制替换,删除后重新创建资源。会导致服务中断。

$ kubectl replace --force -f ./pod.json

为 nginx RC 创建服务,启用本地 80 端口连接到容器上的 8000 端口
$ kubectl expose rc nginx --port=80 --target-port=8000

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

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

修补资源

使用策略合并补丁并修补资源。

$ kubectl patch node k8s-node-1 -p ‘{“spec”:{“unschedulable”:true}}’ # 部分更新节点

更新容器镜像; spec.containers[*].name 是必须的,因为这是合并的关键字

$ kubectl patch pod valid-pod -p ‘{“spec”:{“containers”:[{“name”:“kubernetes-serve-hostname”,“image”:“new image”}]}}’

使用具有位置数组的 json 补丁更新容器镜像

$ kubectl patch pod valid-pod --type=‘json’ -p=’[{“op”: “replace”, “path”: “/spec/containers/0/image”, “value”:“new image”}]’

使用具有位置数组的 json 补丁禁用 deployment 的 livenessProbe

$ kubectl patch deployment valid-deployment --type json -p=’[{“op”: “remove”, “path”: “/spec/template/spec/containers/0/livenessProbe”}]’

编辑资源

在编辑器中编辑任何 API 资源。

$ kubectl edit svc/docker-registry # 编辑名为 docker-registry 的 service
$ KUBE_EDITOR=“nano” kubectl edit svc/docker-registry # 使用其它编辑器
Scale 资源
$ kubectl scale --replicas=3 rs/foo # Scale a replicaset named ‘foo’ to 3
$ kubectl scale --replicas=3 -f foo.yaml # Scale a resource specified in “foo.yaml” to 3
$ kubectl scale --current-replicas=2 --replicas=3 deployment/mysql # If the deployment named mysql’s current size is 2, scale mysql to 3
$ kubectl scale --replicas=5 rc/foo rc/bar rc/baz # Scale multiple replication controllers

删除资源

$ 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,包括尚未初始化的
与运行中的 Pod 交互
$ kubectl logs my-pod # dump 输出 pod 的日志(stdout)
$ kubectl logs my-pod -c my-container # dump 输出 pod 中容器的日志(stdout,pod 中有多个容器的情况下使用)
$ kubectl logs -f my-pod # 流式输出 pod 的日志(stdout)
$ kubectl logs -f my-pod -c my-container # 流式输出 pod 中容器的日志(stdout,pod 中有多个容器的情况下使用)
$ kubectl run -i --tty busybox --image=busybox – sh # 交互式 shell 的方式运行 pod
$ kubectl attach my-pod -i # 连接到运行中的容器
$ kubectl port-forward my-pod 5000:6000 # 转发 pod 中的 6000 端口到本地的 5000 端口
$ kubectl exec my-pod – ls / # 在已存在的容器中执行命令(只有一个容器的情况下)
$ kubectl exec my-pod -c my-container – ls / # 在已存在的容器中执行命令(pod 中有多个容器的情况下)
$ kubectl top pod POD_NAME --containers # 显示指定 pod 和容器的指标度量

与节点和集群交互

$ kubectl cordon my-node # 标记 my-node 不可调度
$ kubectl drain my-node # 清空 my-node 以待维护
$ kubectl uncordon my-node # 标记 my-node 可调度
$ kubectl top node my-node # 显示 my-node 的指标度量
$ kubectl cluster-info # 显示 master 和服务的地址
$ kubectl cluster-info dump # 将当前集群状态输出到 stdout
$ kubectl cluster-info dump --output-directory=/path/to/cluster-state # 将当前集群状态输出到 /path/to/cluster-state

如果该键和影响的污点(taint)已存在,则使用指定的值替换
$ kubectl taint nodes foo dedicated=special-user:NoSchedule

Kubectl(完整)基本操作命令相关推荐

  1. config kubectl_使用kubectl管理k8s集群(三十)

    前言 Foreword 在搭建k8s集群之前,我们需要先了解下kubectl的使用,以便在集群部署出现问题时进行检查和处理.命令和语法记不住没有关系,但是请记住主要的语法和命令以及帮助命令的使用. 在 ...

  2. 使用kubectl管理k8s集群(三十)

    前言 Foreword 在搭建k8s集群之前,我们需要先了解下kubectl的使用,以便在集群部署出现问题时进行检查和处理.命令和语法记不住没有关系,但是请记住主要的语法和命令以及帮助命令的使用. 在 ...

  3. delete kubectl pod_使用kubectl管理k8s集群(三十)

    原标题:使用kubectl管理k8s集群(三十) 前言 Foreword 在搭建k8s集群之前,我们需要先了解下kubectl的使用,以便在集群部署出现问题时进行检查和处理.命令和语法记不住没有关系, ...

  4. hbase的shell客户端中不同符号的含义

      意义 hbase(main):021:0* 表示还没输入完整的操作命令 hbase(main):021:0' hbase(main):021:0" 表示操作命令中的单引号或者双引号没有成 ...

  5. 企业运维经典面试题汇总(2)

    1.写一个脚本查找最后创建时间是三天前,后缀是*.log的文件并删除 find .-ctime +3 -name '*.log' | rm -rf 2.统计ip访问情况,要求分析nginx访问日志,找 ...

  6. 图解Redis中的9种数据结构(高级面试,必备)

    如图所示,Redis中提供了9种不同的数据操作类型,他们分别代表了不同的数据存储结构. 图2-17 数据类型 String类型 String类型是Redis用的较多的一个基本类型,也是最简单的一种类型 ...

  7. 运维的一些日常知识点

    1.查看CPU.内存.磁盘.进程使用情况 查看CPU负载使用uptime.查看CPU信息cat /proc/cpuinfo.查看磁盘使用情况df -Th.查看进程ps -aux\top\netstat ...

  8. celery基础知识

    网络上有各种celery的资料,但看着眼花缭乱,以下资料自己通过各种网站搜索,整理汇总的,只作为自己笔记使用,外人看着会有点乱. 另外,说是celery使用redis作为broker,会出现任务重复执 ...

  9. 【软考】--计算机组成体系结构(下)

    计算机组成体系结构(下) 第九节 指令系统 一.指令执行方式 二.指令地址结构 三.寻址方式 第十节 存储体系 一.层次化存储体系 二.Cache 三.主存储器:ROM和RAM 四.主存储器:存储容量 ...

最新文章

  1. 8-12-COMPETITION
  2. python web 框架的flash消息_Flask flash 消息闪现
  3. java中byte,String,InputStream之间的转换
  4. 吊炸天!一行命令快速部署大规模K8S集群!!!
  5. 海康威视监控工具-IVMS-4200不同系统兼容性问题汇总
  6. Java根据中国姓氏的拼音的首字母进行数组的排序
  7. MapGIS10.3新功能
  8. Vue - 引入集成 Tinymce 富文本编辑器(详细步骤及运行Demo),在 Vue.js 项目中使用富文本插件详细教程,附带超级详细的注释说明
  9. Matlab作图格式设置
  10. 中级微观经济学 复习框架思维导图-平狄克
  11. 相亲APP源码开发搭建应用场景及解决方案
  12. python报考软考哪个比较好_软考考什么比较好?
  13. 报错WARNING: Ignoring invalid distribution -pencv-python
  14. catkin_make报错: ROS Base path和Source space不一致问题,
  15. Java的集合有什么?
  16. PC版小米cc机器人自定义api接口插件PJ版
  17. linux 设置开机自启动服务命令,linux开机自启动服务优化设置命令
  18. linux vi 选中某一列,在 Vim 中进行文本选择操作和使用标志
  19. 如何创建一颗“山楂树”
  20. java初级工程师工资多少,2年以上经验必看

热门文章

  1. Python数据可视化的3大步骤!
  2. 2018最新苹果公司开发者账号设置税务
  3. Log BERT 日志异常检测
  4. executors与threadPoolExecutor区别
  5. This inspection performs unresolved SQL references check.
  6. android studio抛出,Android Studio升级到3.0,抛出Aapt2Exception异常
  7. Spring @Scheduled 使用详解
  8. 探秘app.asar
  9. 如何理解YUV的各种格式
  10. ps—选择连续的多个图层、同时操作多个图层、选择所有图层与取消选择图层、锁定图层、锁定透明像素、锁定图像像素、锁定位置、锁定全部