kubectl常用命令

1、kubectl get 显示资源

## 查看pod列表,若pod后不指定名称空间(namespace),则默认为default名称空间
kubectl get pod ## 查看当前rc和service信息
kubectl get rc,svc ## 查看当前deployment
kubectl get deployment ## -n 为指定名称空间(namespace)
kubectl get pod -n kube-system ## -o wide 表示查看pod详细信息,包括ip地址,node节点等
kubectl get pod -o wide ## -w 表示实时输出pod列表,类似于于tail -f命令名形式
kubectl get pod -o wide -w ## 将此命令的输出结果格式化显示,-o 指定输出格式
kubectl get pod <pod-name> -o yaml

2、kubectl describe 显示描述

## 查看某个node节点的详细描述
kubectl describe node <node-name> ## 查看某个pod的详细描述,特别是查看 pod 无法创建的时候的日志
kubectl describe pod <pod-name>

3、kubectl logs 输出容器在pod中的日志

## 查看某pod内的容器日志,-f 为持续输出
kubectl logs -f <pod-name> ## 查看pod内指定的某个容器的日志,-c 指定容器名称
kubectl log <pod-name> -c <container_name>

4、kubectl create 通过配置文件名或stdin创建一个集群资源对象

## 配置文件支持JSON 与 YAML格式
## 通过文件创建pod,-f 指定文件
kubectl create -f <FILENAME> ## 创建deployment/namespace/service等
kubectl create deployment/namespace/service ## 通过stdin创建一个pod
cat pod.json | kubectl create -f - ## API版本为v1的JSON格式的docker-registry.yaml文件创建资源
kubectl create -f docker-registry.yaml --edit --output-version=v1 -o json

5、kubectl run 创建并运行指定的镜像

## 语法描述
kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...] ## 启动一个nginx实例
## 并暴露端口80(此处仅仅是暴露端口,不同于docker中的-p)若不暴露,也能访问
## 指定副本数为5个,--replicas
kubectl run nginx --image=nginx --port=80 --replicas=5 ## 启动hazelcast实例,并设置环境变量
kubectl run hazelcast --image=hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"

6、kubectl expose 指定deployment、service、rs、replication controller或pod,并将它们暴露为一个新的Kubernetes Service

## 语法
kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]
## 为rc的nginx创建service,并通过service的80端口转发至容器的8000端口上
kubectl expose rc nginx --port=80 --target-port=8000 ## 为nginx-controller.yaml中所指定的type和name标识的RC创建service
kubectl expose -f nginx-controller.yaml --port=80 --target-port=8000 ## 为deployment的nginx-deployment创建service
kubectl expose deployment nginx-deployment --port=20000 --target-port=80

7、kubectl edit 编辑服务器中的资源

使用命令行工具获取的任何资源都可以使用edit命令编辑。edit命令会打开使用KUBE_EDITOR,GIT_EDITOR 或者EDITOR环境变量定义的编辑器,可以同时编辑多个资源,但所编辑过的资源只会一次性提交。edit除命令参数外还接受文件名形式。

文件默认输出格式为YAML。要以JSON格式编辑,请指定“-o json”选项。

如果在更新资源时报错,将会在磁盘上创建一个临时文件来记录。在更新资源时最常见的错误是几个用户同时使用编辑器更改服务器上资源,发生这种情况,你需要将你的更改应用到最新版本的资源上,或者更新保存的临时副本。

## 语法
kubectl edit (RESOURCE/NAME | -f FILENAME) ## 编辑名为docker-registry的service
## 或名为nginx的pod
## 或名为nginx-deployment的svc
kubectl edit svc/docker-registry
|| pod/nginx
|| svc/nginx-deployment ##编辑名为“myjob”的service,输出JSON格式 V1 API版本
kubectl edit job.v1.batch/myjob -o json

8、kubectl delete 通过配置文件名、stdin、资源名称或lable选择器删除资源

## 语法
kubectl delete ([-f FILENAME] | TYPE [(NAME | -l label | --all)]) ## 删除所有pod
kubectl delete pods --all ## 删除名为“baz”和“foo”的Pod和Service。
kubectl delete pod,svc baz foo ##删除 Label name = myLabel的pod和Service,-l 指定label
kubectl delete pod,svc -l name=myLabel ## 使用 pod.json中指定的资源类型和名称删除pod
kubectl delete -f ./pod.json ## 根据传入stdin的JSON所指定的类型和名称删除pod
cat pod.json | kubectl delete -f -

9、kubectl autoscale 自动设置在k8s集群中运行的pod数量(水平自动伸缩)

指定Deployment、ReplicaSet或ReplicationController,并创建已经定义好资源的自动伸缩器。使用自动伸缩器可以根据需要自动增加或减少系统中部署的pod数量。

## 语法
autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags] ## 设置名为foo的deployment,使用默认的自动伸缩策略,指定目标cpu使用率,使其pod数量在2-10之间
kubectl autoscale deployment foo --min=2 --max=10 ## 设置名为foo的RC,使其pod数量维持在1-5之间,CPU使用率维持在80%
kubectl autoscale rc foo --max=5 --cpu-percent=80

scale 手动指定k8s集群中副本的数量

## 语法
kubectl scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME) ## 设置名为foo的deployment的副本数量为5个
kubectl scale --replicas=5 deployment foo ## 将foo.yaml文件中的副本数修改为3
kubectl scale --replicas=3 -f foo.yaml ## 若deployment/mysql的副本数为2,则将它修改为3个
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql

10、kubectl label 更新(增加、修改或删除)资源上的label标签

label 必须以字母或数字开头,可以使用字母、数字、连字符、点和下划线,最长63个字符。

如果--overwrite 为 true,则可以覆盖已有的 label,否则尝试覆盖 label 将会报错。

如果指定了--resource-version,则更新将使用此资源版本,否则将使用现有的资源版本。

## 语法

## 给名为foo的Pod添加label unhealthy=true。
kubectl label pods foo unhealthy=true ## 给 namespace 中的所有 pod 添加 label
kubectl label pods --all status=unhealthy -n default ## 删除名为“bar”的label (使用“ - ”减号相连)
kubectl label pods foo bar-

11、kubectl exec 在一个container中执行一个命令

## 语法
kubectl exec -it <pod-name> -c <container-name> -n <namespace> -- shell command ## 创建目录
kubectl exec -it nginx -c nginx-master -n default -- mkdir -p /usr/local/nginx

12、kubectl cp 拷贝文件或目录

## 语法
kubectl cp /path/filename |namespace|/|pod-name|/:/container_path/

kubectl cp |namespace|/|pod-name|:/container_path/ /path/

参考资料链接:http://docs.kubernetes.org.cn/475.html

Kubernetes-4:kubectl常用命令总结的更多相关文章

  1. Kubernetes之kubectl常用命令

    最近项目有用到Kubernetes作集群配置,所以学习下相关命令,记录下以备下次使用... kubectl help 显示具体的用法 kubectl controls the Kubernetes c ...

  2. Kubernetes的kubectl常用命令速记

    文章转载自:https://mp.weixin.qq.com/s/0kqQzeA-MzCOhPMkmiR4_A kubectl是用来管理Kubernetes集群的命令行工具. kubectl默认在&q ...

  3. Kubernetes,kubectl常用命令详解

    kubectl概述 祭出一张图,转载至 kubernetes-handbook/kubectl命令概述 ,可以对命令族有个整体的概念. 环境准备 允许master节点部署pod,使用命令如下: kub ...

  4. kubernetes 知识点及常用命令

    一.附上一个Deployment文件 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selec ...

  5. K8s的kubectl常用命令

    一. 设置kubectl输入命令自动补全 依次执行一下命令: yum install -y bash-completion source /usr/share/bash-completion/bash ...

  6. k8s记录-kubectl常用命令

    kubectl kubectl annotate – 更新资源的注解.kubectl api-versions – 以“组/版本”的格式输出服务端支持的API版本.kubectl apply – 通过 ...

  7. kubectl 常用命令一

    1.kubectl logs <options>  <PodName> -f -p, --previous --since= No. --since-time= --tail ...

  8. kubectl 常用命令总结

    # 查看所有 pod 列表, -n 后跟 namespace, 查看指定的命名空间 kubectl get pod kubectl get pod -n kube # 查看 RC 和 service ...

  9. kubectl常用命令

    command kubectl kubectl 输出格式 显示Pod的更多信息 kubectl get pod <pod-name> -o wide 以yaml格式显示Pod的详细信息 k ...

  10. kubectl常用命令(个人记录)

    一.获取pod信息 1.获取当前集群运行的所有的pods的信息 kubectl get pod   2.获取当前集群运行的所有的pod运行在哪个节点 kubectl get pods -owide   ...

随机推荐

  1. .Net Core 全局捕获异常-过滤器

    1.代码版本 .Net Core 版本 2.2 2.自定义异常捕获类 新建一个类 CustomerExceptionFilter.cs 继承 Microsoft.AspNetCore.Mvc.Filt ...

  2. Spring定时任务和@Async注解异步调用

    Spring定时任务 1.@Scheduled注解方式 使用方式 @Scheduled的使用方式十分简单,首先在项目启动类添加注解@EnableScheduled. 编写定时任务方法,方法上添加注解@ ...

  3. java 高效递归查询树 find_in_set 处理递归树

    建表语句 DROP TABLE IF EXISTS `sys_dept`; CREATE TABLE `sys_dept` ( `id` bigint(20) NOT NULL AUTO_INCREM ...

  4. 解决方案 | win10任务栏假死,桌面鼠标可以动但是无法点击任务栏图标

    1 背景 今天电脑不知道什么原因,鼠标出现了无法点击任务栏图标的情况,但是桌面上可以晃动. 2 解决过程 (方法1-3对我无效,但是不代表对你们无效,) 方法1:重启资源管理器. 方法2:电脑重启.或 ...

  5. [oeasy]python0132_[趣味拓展]emoji_表情符号_抽象话_由来_流汗黄豆

    emoji表情符号 回忆上次内容 上次了解了unicode 和 utf-8 unicode是字符集 utf-8是一种可变长度的编码方式 utf-8是实现unicode的存储和传输的现实的方式   ​ ...

  6. [oeasy]python0104_指示灯_显示_LED_辉光管_霓虹灯

    编码进化 回忆上次内容 x86.arm.riscv等基础架构 都是二进制的 包括各种数据.指令   但是我们接触到的东西 都是屏幕显示出来的字符   计算机 显示出来的 一个个具体的字型   ​   ...

  7. 使用 useLazyAsyncData 提升数据加载体验

    title: 使用 useLazyAsyncData 提升数据加载体验 date: 2024/7/19 updated: 2024/7/19 author: cmdragon excerpt: 摘要: ...

  8. 使用 Doxygen 来生成 Box2d 的 API 文档

    对于 Doxygen 以前只听别人说过,而现在使用它也是一个偶然,缘分吧.前两天看 box2d 的官方 sdk 中,发现他有用户手册却没有说明,只是留下了一个 Doxygen 的文件.事情告一段落,然 ...

  9. JAVA课后谈1

    1.课程中动手动脑的问题 在本次课堂实验中,我暴露出了很多问题,尤其是逻辑思维方面,不能很好的处理数理运算问题.在实际生活中客户的要求千变万化,而我们作为一个合格的程序设计者应该顺应其要求,尽可能的去 ...

  10. 如何立刻读取在MySQL中自动生成的主键

    在写一个接口时,我们需要对两个表分别动刀,但是我们需要前一个表的主键作为下一个表的功能外键, 如果使用mybatisplus,insert完成之后便可以直接在对象中取出这个id值 如果使用mybati ...