kubectl相关命令

kubectl客户端的认识

kubectl是k8s集群内客户端程序,这个客户端程序是通过master节点上的AIPserver对应的应用程序,也是k8s集群内唯一的管理入口。kubectl就是集群管理入口的客户端工具,它能够连接apiserver实现各种k8s相关对象资源的增删改查等基本操作。

在k8s集群可管理的资源对象有很多,比如很重要的资源类别:node;pod,service,replicaset、deployment、statefulet、daemonset、job、cronjob

kubectl的子命令


 

集群相关的命令:

(1)cluster-info:查看集群信息,比如查看集群有哪些访问入口

具体的内容:

集群向外(集群的客户端)输出的apiserver地址

kubedns(现在是coredns)运行获取路径,从集群外部访问的转发代理的方式

拓展:

这里只有连个访问端点,在部署其他组件之后还有更多的访问端点。目前来说,整个集群部署的附件有三个,kube-proxy、coredns、flannel。其实重要附件不知这三个,重要的还有另外两个,extralctroller、heater监控组件

top:查看集群的资源使用情况

cordon:标志一个节点不可被调用

 

节点相关的命令:

tain:

给节点添加污点。如果你想要找一个对象,如果这个节点有污点,你两能不能成,取决于你能不能容纳这个污点,如果你能够容纳这个污点就能成,不能容纳这个污点就不能成。taint跟高级调度有关,给节点添加污点以后, 能容忍这个污点的Pod就可以调度到这个节点,如果不能就能调度到这个节点。其实master也有污点,这就是调度pod的时候无法调度到master,默认创建的所有pod都无法容忍master的污点。这样确保了master只运行scheduler,controll-manager,apiserver和etcd等重要组件

部署应用程序相关:

rollout:滚动

scale:手动改变应用程序的规模

autoscale:自动改变应用程序的规模

1、基础命令(初级)

(1)Create:从‘文件’(yaml文件)或标准输入创建资源

(2)run: 创建并运行一个特定的镜像;创建“deployment控制器或者作业”来管理创建的容器。

格式:kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool]

[--overrides=inline-json] [--command] -- [COMMAND] [args...] [options]

选项:

--name=用来运行的容器镜像

--labels=pod的标签

-replicas=1:为此容器创建的副本数。 默认值为 1。

--restart="Always":此 Pod 的重启策略。 合法值 [Always、OnFailure、Never]。 如果设置为“Always”,则为此 pod 创建部署,如果设置为“OnFailure”,则为此 pod 创建作业,如果设置为“Never”,则创建常规 pod。 对于后两个 --replicas 必须为 1。默认为 'Always'

--port=-1:此容器公开的端口( 如果 --expose 为真,这也是创建的服务使用的端口。expose默认为真)

--schedule= :表示创建的不是

2、基础命令(中级)

(1)Get: 获取列出一个或多个资源的信息

选项:

-o wide/json/yaml:查看更加详细的信息,比如pod所在的node节点/以json的格式输出/以yaml的格式输出

例如:以json格式查看输出一个pod

 

例如:以yaml格式查看输出一个pod

-n namespace的名称:如果不加namespace则默认名称空间为default,比较常用的名称空间为kube-system,可以通过kubectl get ns查看具体的名称空间

备注:使用kubectl api-resources查看完整的资源对象

-w(watch):监控

例如:监控deployment监控器

(2)Edit:使用edit编辑器编辑定义的资源

格式:kubectl edit (RESOURCE/NAME | -f FILENAME) [选项]

选项:

-f:用于编辑资源的文件名、目录或URL。

-o json:文件默认输出格式为yaml。要以json格式编辑,需要指定'-o json'选项。

--save-config:当前对象的配置保存在注释中。否则,注释将保持不变。以后想要在此对象上执行kubectl apply时,此标准很有用。

(3)Delete:

例子:

 

备注1:

非手动配置清单创建的pod,即由控制器控制器的pod,删除pod的时候会自动生成一个新的pod。删除掉控制器才能真正删除pod。

故障排查和调试子命令:

(1)Describe:查看详细信息。

1)比如查看一个节点的详细信息:kubectl describe node node01

 

 2)查看pod的详细信息: kubectl describe pod nginx-554b9c67f9-zv8bf

 

(2)查看容器的日志:kubectl logs

格式: kubectl logs [-f] [-p] (POD | TYPE/NAME) [-c CONTAINER] [options]

kubectl logs <pod-name>:如果pod中只有一个容器,可以忽略容器名

备注:由于logs只针对pod,因为只有pod运行才会有日志,所以这里不需要用指定pod资源类型

选项:

-f:‘持续’输出日志

-p:输出pod中曾经运行过,但目前'已经终止'的容器日志。

-c:指定容器名

--tail=20,仅输出最近的20条日志

--since-1h,输出最近一个小时内产生的所有日志。

备注:--help查看具体的用法

(3)进入Pod的容器:

Kubectl attach跟docker attach一样

Kubectl exec跟docker exec一样

Exec:进入容器交互,在容器中执行命令

格式:kubectl exec[] POD [-c CONTAINER] – COMMAND [

备注:由于edit只针对pod,因为Pod才需要用户手动编辑,所以这里不需要指定pod资源类型

选项;

-i(--stdin):将控制台输入发送到容器

-t(--tty):将标准输入控制台作为容器的控制台输入。

备注:一般-i与-t结合使用,-it,而且后面的命令为/bin/sh。如果不加-it,那么在容器执行命令的结果将输出到shell上。

-c:容器名。如果未指定,使用pod中的第一个容器

(4)Kubectl Port-forward端口转发

Kubctl  proxy代理

(5)cp在容器之间跨容器之间复制文件和目录

高级命令:

Apply:创建、应用

Patch:打补丁

设置命令:

Label:打标签

Annotate:注释。相比较label,annotate注释的范围更广,lable有程度性

Completion:用来做补全的命令

其他命令:

api-resources:查看资源对象那个 

 

Api-versions:查看api版本

Plugin:运行插件

Versioin:查看客户端和服务端的版本

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值