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
备注:由于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:查看客户端和服务端的版本
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)