通过 kubectl 管理 Kubernetes
声明式方法管理 Kubernetes。
简介
可以使用 Kubectl 命令行工具管理 Kubernetes 集群。
kubectl 在 $HOME/.kube 目录中查找一个名为 config 的配置文件。可以通过设置 KUBECONFIG 环境变量或
设置 –kubeconfig 参数来指定其它 kubeconfig 文件。
参考文档:
命令
基础
1 | # 查看命令帮助文档 |
create
- 根据文本或者交互式输入创建资源
1 | # 规则 |
帮助文档,也可以直接阅读官方文档中的内容。
1 | kubectl create --help |
-
创建集群用户
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22# 规则
kubectl create clusterrole NAME --verb=verb --resource=resource.group [--resource-name=resourcename] \
[--dry-run=server|client|none]
# 创建一个集群用户,名称为 pod-reader,并赋予该用户 get/watch/list 的权限管理 pods
kubectl create clusterrole pod-reader --verb=get,list,watch --resource=pods
# 创建一个集群用户,名称为 pod-reader,并赋予该用户 get 的权限管理 pods,同时将集群资源命名为 readablepod、anotherpod
# --resource-name 支持列表数据
kubectl create clusterrole pod-reader --verb=get --resource=pods --resource-name=readablepod --resource-name=anotherpod
# 创建一个集群用户,名称为 foo,指定 API 组,并赋予该用户 get/watch/list 的权限管理
kubectl create clusterrole foo --verb=get,list,watch --resource=rs.extesions
# 创建一个集群用户,名称为 foo ,同时指定子资源
kubectl create cluseterrole foo --verb=get,list,watch --resource=pods,pods/status
# 创建一个集群用户,名称为 foo ,同时指定非资源 url
kubectl create clusterrol "foo" --verb=get --non-resource-url=/logs/*
# 创建一个集群用户,名称为 monitoring ,同时设定聚合规则
kubectl create clusterrole monitoring --aggregation-rule="rbac.exampke.com/agreaget-to-monitoring=true" -
clusterrollebinding
-
configmap
-
cronjob 创建定时任务
1
2
3
4
5
6
7
8# 规则
kubectl create cronjob NAME --image=iamge --schedule='0/5 * * * ?' -- [COMMAND] [args...]
# 创建一个定时任务
kubectl create crongjob my-job --image=busybox --schedule='*/1 * * * *'
# 创建一个定时任务指定命令
kubectl create crongjob my-job --image=busybox --schedule='*/1 * * * *' -- date -
deployment 创建一个部署任务
1
2
3
4
5
6
7
8
9
10
11
12
13
14# 规则
kubectl create deployment NAME --image=image -- [COMMNAD] [args...]
# 创建一个部署任务,名称为 my-dep,同时运行在 busybox 镜像中
kubectl create deployment my-dep --image=busybox
# 创建一个部署任务,名称为 my-dep,同时运行在 busybox 镜像中,且执行命令
kubectl create deployment my-dep --image=busybox --date
# 创建一个部署任务,名称为 my-dep,同时运行在 nginx 镜像中,且同时运行三个
kubectl create deployment my-dep --image=nginx --replicas=3
# 创建一个部署任务,名称为 my-dep,同时运行在 busybox 镜像中,且指定端口为 5701
kubectl create deployment my-dep --image=busybox --port=5701 -
ingress 创建一个入口
1
2
3
4
5
6
7
8# 规则
kubectl create ingress NAME --rule=host/path=service:port[,tils[=secret]]
# 创建一个单通道入口,名称为 simple
kubectl create ingress simple --rule="foo.com/bar=svc1:8080,tls=my-cert"
#
kubectl create ingress catch-all --class=otheringress --rule="/path=svc:port" -
job 创建一个任务
1
2
3
4
5
6
7
8
9
10
11# 规则
kubectl create job NAME --image=image [--from=crongjob/name] -- [COMMAND] [args..]
# 创建一个任务
kubectl create job my-job --image=busybox
# 创建一个任务,并指定命令
kubectl create job my-job --image=busybox -- date
# 从定时任务中获取一个任务
kubectl create job test-job --from=cronjob/a-cronjob -
namespace 创建一个命名空间
1
2
3
4
5# 规则
kubectl create namespace NAME [--dry-run=server|client|none]
# 创建一个命名空间
kubectl create namespace my-namespace # namespace 可简写为 ns查看名字空间
1
2
3
4# 获取特定名字空间的摘要
kubectl get namesapce <name>
# 获取所有名字空间的摘要
kubectl get namespace1
2
3
4
5NAME STATUS AGE
Active 3d22h
kube-node-lease Active 3d22h
kube- Active 3d22h
kube-system Active 3d22h注:
- default 无名字空间对象的默认名字空间
- kube-system 由 Kubernetes 系统创建的对象的名字空间
- kube-public 自动创建且被所有用户可读的名字空间(包括未经身份认证)。此名字空间通常在某些资源在整个集群中可见且可公开读取 时被集群使用。此名字空间的公共方面只是一个约定,而不是一个必要条件。
1
2# 获取详细信息
kubectl describe namespace <name>同时显示了资源配额(如果存在)以及资源限制区间。
资源配额跟踪并聚合 Namespace 中资源的使用情况,并允许集群运营者定义 Namespace 可能消耗的 Hard 资源使用限制。
限制区间定义了单个实体在一个 Namespace 中可使用的最小/最大资源约束。
名字空间可处于下列两个阶段中的一个:
- Active 名字空间正在被使用中
- Terminating 名字空间正在被删除,且不能被用于新对象。
-
poddisrupionbudget
-
priorityclass
-
quota
-
role 创建一个用户
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15# 规则
kubectl create role NAME --verb=verb --resource=resource.grou/subresource [--resource-name=resourcename] \
[--dry-run=server|client|none]
#
kubectl create role pod-reader --verb=get --verb=list --verb=watch --resource=pods
#
kubectl create role pod-reader --verb=get --resource=pods --resource-name=readablepod --resource-name=anotherpod
#
kubectl create role foo --verb=get,list,watch --resource=rs.extensions
#
kubectl crate role foo --verb=get,list,watch --resource=pod,pods/status -
rolebinding
-
secret
-
secret docker-registry
-
secret generic
-
secret tls
-
service 创建一个服务
1
2
3
4
5
6
7
8# 规则
kubectl create service
# 创建一个新的集群IP 服务,名称为 my-cs
kubectl create service clusterip my-cs --tcp=5678:8080
# 创建一个新的集群IP服务,名称为 my-cs
kubectl create service clusterip my-cs --clusterip="None" -
service clusterip
-
service externalname
-
service loadbalancer
-
service nodeport
-
serviceaccount
-
token
get
获取一个或多个资源信息
1 | kubectl get [(-o|--output)json|yaml|name|go-template|go-template-file|templatefile|jsonpath|jsonpath-as-json|jsonpath-file\ |
run
expose
delete
APP 管理
apply
annote
autoscale
debug
diff
eidt
kustomize
label
patch
replace
rollout
scale
set
wait
APP 运行维护
attach
auth
cp
describe
exec
logs
port-forward
proxy
top
集群管理
api-versions
certificate
cluster-info
cordon
drain
taint
uncordon
kubectl 配置和信息
alpha
api-resources
completion
config
explain
options
plugin
version
-
2021-03-01
Docker 部署安装
-
2022-05-16
学习新技术提升自我价值,Kubernetes 是 Google 开源的容器集群管理系统,对于容器运行时、编排、常规服务都抽象设计出标准完整的 API。
-
2023-08-24
-
2020-11-19
学习新技术提升自我价值,Kubernetes 是 Google 开源的容器集群管理系统,对于容器运行时、编排、常规服务都抽象设计出标准完整的 API。
-
2021-02-26
docker 容器学习