随心一记

一二三四五,上山打老鼠


  • 首页

  • 归档

  • 标签
ywcsb

ywcsb

游戏可以不玩,小说不能不看。

153 日志
3 分类
42 标签
RSS
GitHub 知乎 随心一记
Links
  • 随心一记
  • 追梦人物的
  • MSDN

K8s kubectl 常用命令总结

发表于 2022-01-20 | 阅读 1082 | 分类于 系统运维 |

1、kubectl用法详解

kubectl [command] [Type] [NAME] [flags]

  • command: 子命令,用于操作kubernetes集群资源对象的命令,例如:create, delete, describe, get, apply等等

  • TYPE: 资源对象的类型,区分大小写,能以单数,复数或者简写形式表示。例如以下3中TYPE是等价的。

kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1
  • NAME:资源对象的名称,区分大小写。如果不指定名称,系统则将返回属于TYPE的全部对象的列表,例如:kubectl get pods 将返回所有pod的列表

  • flags: kubectl 子命令的可选参数,例如使用 -s 指定api server的url地址而不用默认值。

kubectl可操作的资源对象类型以及缩写:

资源类型 缩写 说明
clusters 集群
componentstat uses cs 查看各组件信息
configmaps cm ConfigMap是用来存 储配置文件的kuberne tes资源对象
daemonsets ds DaemonSet 只管理 Po d对象,通过nodeAffi nity 和 Toleration 两个 调度器,保证每个节点 上只有一个Pod。集群 动态加入了新Node, DaemonSet 中的 Pod 也会添加在新加入Nod e上。删除一个Daemo nSet也会级联删除所 有其创建的Pod。
deployments deploy Deployment 为 pod 和 ReplicaSet 提供了一 个声明式定义方法,用 来替代以前的Replicat ionController 来方便 的管理应用
endpoints ep 节点
events ev Events 它是Kubelet 负责用来记录多个容器 运行过程中的事件,命 名由被记录的对象和时 间戳构成
horizontalpoda utoscalers hpa
ingresses ing
jobs
limitranges limits
namespaces ns
networkpolicies
statefulsets
persistentvolu meclaims pvc
persistentvolu mes PV
pods PO
podsecuritypoli cies psp
podtemplates
replicasets rs
replicationcont rollers rc
resourcequotas quota
conjob
secrets
serviceaccount s
services svs
storageclasses sc
thirdpartyresou rces

在一个命令行中也可以同时对多个资源对象进行操作,以多个TYPE和NAME的组合表示,示例如下:

  • 获取多个pod的信息:
kubectl get pods pod1 pod2
  • 获取多种对象的信息:
kubectl get pod/pod1  rc/rc1
  • 同时应用多个YAML文件,以多个-f file参数表示:
kubectl get pod -f pod1.yaml -f pod2.yaml
kubectl create -f pod1.yaml -f rc1.yaml -f service1.yaml

2、kubectl子命令详解

kebectl的子命令非常丰富,涵盖了对kubernetes集群的主要操作,包括资源对象的创建、删除、查看、修改、配置、运行等,详细的子命令如表:

子命令 语法 说明
annotate kubectl annotate (-f Filename | type name | type/name) kl=vl, k2=v2.... 添加或更新资源对象 的 annotation 信息
api-version kubectl api-version [flags] 列出当前系统版本支持的api版本列表,格式为"group/version"
apply kubectl apply -f flename [flags] 从配置文件或stdin中队资源对象进行配置更新
attach kubectl attach POD -c container [flags] 附着到一个正在运行的容器上
auth kubectl auth [flags] [optionins] 检测RBAC权限设置
autoscale kubectl antoscale (-f filename | tpye name | tpye/name) 对deployment, replicaSet或replicationController进行碎屏自动扩容和缩容的设置
cluster-info kubectl cluster-info [flags] 显示集群master和内置服务的信息
completion kubectl completion shell [flags] 输出shell命令的执行结果[bash/zsh]
config kubcetl config subcommand [flags] 修改kubeconfig文件
convert kubcetl convert -f filename [flags] 转换配置文件为不同的api版本
cordon kubectl cordon node[flags] 将noe标记为unschedulable, 即隔离出集群的调度范围
create kubectl create -f filename [flags] 从配置文件或stdin总创建资源对象
delete kubectl delete (-f filenname|type name |-l label)[flags] 从配置文件,stdin,资源名称或label selector 删除资源对象
describe kubectl describe (-f filename|type name)[flags] 描述一个或多个资源对象的详细信息
diff kubectl diff -f filename [options] 查看配置文件与当前系统中正在运行的资源对象的差异
drain kubectl drain node [flags] 首先将node设置为unschedulable,然后删除在该node上运行的所有pod,但不会上删除不由api server管理的pod
edit kubectl edit (-f filename | type name | type/name)[flags] 编辑资源对象的属性,在线更新
exec kubectl exec pod [-c container] [-i] [-t] [flags] [--command] [args...] 执行一个容器的命令
explain kubectl explain [--include-extended-apis=trye] [--recursive=false] [flags] 对资源对象的详细说明
expose kubectl expose (-f fliename| type name) [--port=port] [--prorocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type] 将已经存在的一个rc,service,deployment或Pod暴露为一个新的service
get kubcet get (-f filename| type name | -l label) [--watch] [--sort-by-FLELD] [[-o | --output]=OUTPUT_FORMAT] [flags] 显示一个或多个资源对象的信息概要
label kubect label (-f filename|type name) k1=v1...kn=vn [--overwrite] [--all] [--resource-version=version] [flags] 设置或资源对象的label
logs kubectl logs pod [-c container] [--follow] [flags] 在屏幕上打印一个容器的日志
patch kubectl patch [-f filename | tpye name ] --patch patch [flags] 以merge形式对资源对象的那部分字段的值进行修改
plugin kubectl plugin [flags] [optionins] 在kubectl命令行适用用户自定义的插件
port-forward kubectl port-forward pod [local_port:] remote_port [...[local_port_n:] remote_port_n] [flags] 将本机的某个端口映射到pod的端口号,通常用于测试
porxy kubectl porxy [--port=port] [--wwww=static-dir] [--wwww-prefix=prefix] [--api-prefix=prefix] [flags] 将本机某个端口号映射到api server
replace kubcetl replace -f filename [flags] 从配置文件或stdin替换资源对象
rolling-update kubectl rolling-updateold_controller_name ([new_controller_name] --image=new_contaioner_image | -f new_conteroller_spec) [flags] 对rc进行滚动升级
rollout kubectl rollout subcommand [flags] 对deployment 进行管理,可用操作包括: history,pause, resume,undo,status
run kubectl run name --image=image [-env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [flags] 基于一个镜像再kubernetes集群上启动一个deployment
scale kubectl scale (-f filename| type name) --replicas=count [--resource-version=version] [--current-replicas=count] [flags] 扩容,缩容一个deployment,replicaset,RC或job中的pod的数量
set kubectl set subcommand [flags] 设置资源对象的某个特定信息,目前仅支持修改容器的镜像
taint kubcet taint node namek1=v1:taint_effect_1...kv=vn:taint_effect_n [flags] 设置node的taint信息,用于将特定的pod调度到特定的node的操作,为alpha版本的功能
top kubect top node 查看node或pod的资源使用情况,需要在集群中运行metics server
uncordon kubectl uncordon Node
version kubectl version 打印系统的版本信息

3、kubectl 参数列表

kubectl 命令行的公共启动参数如下:

参数名和取值示例 说明
--alsolgtostderr=false 设置为true表示将日志输出到文件和同事输出到stderr
--as='' 设置本征操作的用户名
--certificate-authority='' 设置CA授权的cert文件路径
--client-certificate='' 用于TLS的客户端证书文件路径
--client-key='' 用于TLS的客户端KEY文件路径
--cluster='' 设置要使用的kubeconfig中的cluster名
--context='' 设置要系统的kubeconfig中的context名
--insecure-skip-tls-verify-false 设置为true表示跳过TLS安全验证模式,将使得https连接不安全
--kubeconfig='' kubeconfig配置文件路径,在配置文件中包括Master地址信息及必要的认证信息
--log-backtrace-at=:0 记录日志每到'file:行号'时打印一次stack trace
--log-dir='' 日志文件路径
--log-flush-frequency=5s 设置flush日志文件的时间间隔
--logtostderr=true 设置为true表示将日志输出到stderr,不输出到日志文件中
--match-server-version=false 设置为true表示客户端版本号需要与服务端一致
--namespace='' 设置本次操作所在的namespace
--password='' 设置apiserver的 basic authentication的密码
-s,--server='' 设置apiserver的url地址,默认值为localhost:8080
--stderrthreshold=2 在该threshold级别之上的日志将输出到stderr
--token='' 设置访问apiserver的安全token
--user='' 指定apiserver的basic authentication的用户名
--v=0 log日志级别
--vmodule= log基于模块的详细日志级别

4、kubectl输出格式

kubectl命令可以用多种格式对结果进行显示,输出的格式通过-o(不是零是o)参数指定

输出格式 说明
-o=custom-columns=\<spec> 根据自定义列明进行输出,以逗号分割
-o=custom-columns-file=\ 从文件中获取自定义列明进行输出
-o=json 以JSON格式显示结果
-o=jsonpath=\<template> 输出jsonpath表达式定义的字段信息
-o=jsonpath-file=\ 输出jsonpath表达式定义的字段信息,来源于文件
-o=name 近输出资源对象的名称
-o=wide 输出额外的信息,对于pod,将输出pod所在的Node所在的node名
-o=yaml 以yaml格式显示结果

5、kubectl操作示例

5.1、 根据yaml配置文件一次性创建service和rc

kubectl create -f my-service.yaml -f my-rc.yaml

5.2、 根据目录下所有.yaml、.yml、.json文件的定义进行创建操作

kubectl create -f <directory>

5.3、 查看所有的Pod列表

kubectl get pods -A 

5.4、 查看rc和service列表

kubectl get rc,service

5.5、 查看Node的详细信息

kubectl describe node <node-name>

5.6、 显示Pod的详细信息

kubectl describe pods <node-name>

5.7、 显示由RC管理的Pod信息

kubectl describe pods <rc-name>

5.8、 删除基于pod.yaml文件定义的Pod

kubectl delete -f pod.yaml

5.9、 删除所有包括某个label的Pod和Service

kubectl delete pods,services -l name=<label-name>   

5.10、 删除所有Pod

kubectl delete pods --all

5.11、 在Pod的容器里执行date命令,默认使用Pod的第一个容器执行

kubectl exec <pod-name> date

5.12、 指定Pod中某个容器执行date命令

kubectl exec <pod-name> -c <container-name> date

5.13、 以bash方式登录到Pod中的某个容器里

kubectl exec -ti <pod-name> -c <container-name> /bin/bash

5.14、 查看容器输出到stdout的日志

kubectl logs <pod-name>

5.15、 跟踪查看容器的日志,相当于tail -f命令的结果

kubectl logs -f <pod-name> -c <container-name>
觉得不错,支持一下!
geerniya WeChat Pay

微信打赏

geerniya Alipay

支付宝打赏

# 系统运维 # k8s
Ansible基于playbook批量修改主机名并安装zabbix-agent
常用shell脚本

发表评论

共 0 条评论

    暂无评论
© 2018 - 2022 ywcsb
冀ICP备17022045号-1
Supported by 腾讯云