k8s--基础--10.2--命令--kubectl--常用命令
编辑 pod中,名称为etcd-master1的定义。
·
k8s–基础–10.2–命令–kubectl–常用命令
前提
使用root用户
1、api-versions
1.1、语法
kubectl api-versions [flags]
列出可用的api版本
1.2、案例
root@master1 k8s]# kubectl api-versions
admissionregistration.k8s.io/v1
admissionregistration.k8s.io/v1beta1
.
.
.
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1
2、apply
2.1、语法
kubectl apply -f FILENAME [flags]
使用文件或者标准输入来创建或者更新k8s的资源
2.2、案例:指定文件创建资源
# 使用kubernetes-dashboard.yaml 创建dashboard资源
kubectl apply -f /root/k8s/kubernetes-dashboard.yaml
2.3、案例:指定目录创建资源
# 使用 /root/k8s/test 路径下的任意 .yaml, .yml, 或 .json 文件 创建资源
kubectl apply -f /root/k8s/test
3、get
3.1、语法
kubectl get (-f FILENAME | TYPE NAME | TYPE/NAME | TYPE -l label ) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags]
列出一个或多个资源。
3.2、案例:列出所有pod
kubectl -n kube-system get pods
3.3、案例:列出所有pod,并包含附加信息(如节点名)
kubectl -n kube-system get pods -o wide
3.4、案例:列出具有指定名称的副本控制器类型 的pod
你可以使用别名 'rc’替换 ‘replicationcontroller’ 类型的资源。
# 列出 replicationcontroller 类型的资源
kubectl get replicationcontroller <rc-name>
3.5、案例:列出所有 副本控制器和服务类型 的pod
kubectl get rc,services
3.6、案例:列出所有 守护程序集类型 的pod
kubectl -n kube-system get ds
3.7、案例:列出 节点master1 上运行的所有 pod
kubectl -n kube-system get pods --field-selector=spec.nodeName=master1
4、delete
4.1、语法
kubectl delete (-f FILENAME | TYPE NAME | TYPE/NAME | -l label | --all]) [flags]
从文件、标准输入或指定标签选择器、名称、资源选择器或资源中删除资源。
4.2、案例:使用 指定文件 删除资源
使用kubernetes-dashboard.yaml 文件中指定的类型和名称删除 pod。
kubectl delete -f /root/k8s/kubernetes-dashboard.yaml
4.3、案例:使用 标签名 删除资源
# 可以通过describe获取标签
# 删除标签名= <label-name> 的所有pod 和服务。
kubectl -n kube-system delete pods,services -l name=<label-name>
4.4、案例:使用 标签名 删除pod,包括未初始化的 pod
# 删除所有具有标签名称= <label-name> 的 pod 和服务,包括未初始化的那些。
kubectl delete pods,services -l name=<label-name> --include-uninitialized
4.5、案例:删除所有 pod,包括未初始化的 pod
kubectl -n kube-system delete pods --all
5、describe
5.1、语法
kubectl describe (-f FILENAME | TYPE NAME_PREFIX | TYPE/NAME | TYPE -l label ) [flags]
显示一个或多个资源的详细状态,默认情况下包括未初始化的资源。
5.2、案例:显示 节点的详细信息
kubectl describe nodes <node-name>
显示 master1 节点的详细信息
kubectl describe nodes master1
5.3、案例:显示pod名称为 podName 的详细信息。
kubectl -n kube-system describe pod podName
显示pod名称为 etcd-master1 的详细信息。
kubectl -n kube-system describe pod etcd-master1
5.4、案例:显示由名为 的副本控制器管理的所有 pod 的详细信息
# 记住:副本控制器创建的任何 pod 都以复制控制器的名称为前缀。
kubectl describe pods <rc-name>
5.5、案例:显示所有的 pod的详细信息
内容非常多,我只截了一点点
kubectl -n kube-system describe pods
6、edit
6.1、语法
kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags]
- 编辑和更新服务器上一个或多个资源的定义
- 编辑后就生效
6.2、案例:编辑某个pod的定义
# 编辑 pod中,名称为etcd-master1的定义
kubectl -n kube-system edit pod etcd-master1
7、exec
7.1、语法
kubectl exec pod-name [-c CONTAINER-name] [-i] [-t] [flags] [-- COMMAND [args...]]
对pod中的容器执行命令。
7.2、案例: 进入名称为etcd-master1的pod,执行date命令
进入名称为etcd-master1的pod,执行date命令
kubectl -n kube-system exec etcd-master1 -- date
7.3、案例: 进入容器,执行date命令
进入名称为etcd-master1的pod,名称为etcd的容器,执行date命令
kubectl -n kube-system exec etcd-master1 -c etcd -- date
7.4、案例: 进入POD
kubectl -n kube-system exec -it etcd-master1 -- /bin/sh
8、logs
8.1、语法
kubectl logs POD [-c CONTAINER] [--follow] [flags]
在pod中打印容器的日志。
8.2、案例:打印日志
kubectl logs <pod-name>
# 打印etcd-master1中容器的日志
kubectl -n kube-system logs etcd-master1
8.3、案例:打印日志
类似于 ‘tail -f’ 命令
kubectl logs -f <pod-name>
# 打印etcd-master1中容器的日志
kubectl -n kube-system logs -f etcd-master1
9、explain
9.1、语法
kubectl explain [--recursive=false] [flags]
- 获取多种资源的文档。例如pod, node, service 等
- 相当于帮助命令,告诉我们怎么创建资源
9.2、案例:获取pod的文档
kubectl explain pod
10、expose
10.1、语法
kubectl expose (-f FILENAME | TYPE NAME | TYPE/NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type] [flags]
- 将一个资源(replication controller、service、deployment和pod)作为新的K8s服务。
- expose按名称查找deployment、service、RS、RC或pod,并将该资源的选择器用作指定端口上新服务的选择器。
- 只有当选择器仅包含matchLabels组件时,才会暴露为服务。
10.2、案例
kubectl expose rc nginx --port=80 --target-port=8000
- port表示Service暴露在Cluster IP上的端口,提供给集群内部访问的Service的入口
- targetPort是Pod上的端口,数据从port或者nodePort流入,经过kube-proxy最后到Pod的targetPort上进入容器。
11、run
11.1、语法
kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server | client | none] [--overrides=inline-json] [flags]
在集群上运行指定的镜像
11.2、案例:启动nginx实例
启动nginx实例
kubectl run nginx --image=nginx
因为我命令里面没有指定空间,所以是在默认空间
12、autoscale
12.1、语法
kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]
自动调整deployment、rs或者rc的副本数量
12.2、案例:使用默认的自动伸缩策略,指定目标CPU使用率,使其Pod数量在2到10之间。
# 使用 Deployment "foo"设定,使用默认的自动伸缩策略,指定目标CPU使用率,使其Pod数量在2到10之间
kubectl autoscale deployment foo --min=2 --max=10
12.3、案例:使用默认的自动伸缩策略,使其Pod的数量介于1和5之间,CPU使用率维持在80%。
kubectl autoscale rc foo --max=5 --cpu-percent=80
13、用户角色绑定
kubectl create rolebinding lucky-admin-rolebinding -n lucky --clusterrole=cluster-admin --serviceaccount=lucky:lucky-admin
- 在lucky名称空间下创建一个rolebinding,名字叫做lucky-admin-rolebinding
- 将lucky名称空间下的lucky-admin账号通过clusterrole绑定集群角色cluster-admin,这样lucky-admin账号就有了cluster-admin角色的权限。
- lucky-admin账号的权限只能限制在lucky名称空间下
14、切换账号
# 切换账号到 集群用户,有任何权限(因为后面操作需要这个用户权限)
kubectl config use-context kubernetes-admin@kubernetes
15、创建 monitor-sa 名称空间
kubectl create ns monitor-sa
更多推荐
已为社区贡献55条内容
所有评论(0)