3. 命名空间
[root@k8s-master pods]# kubectl create namespace abc //创建命名空间
namespace/abc created
[root@k8s-master pods]# kubectl get namespaces //查看命名空间
NAME STATUS AGE
abc Active 24s
default Active 10h
kube-node-lease Active 10h
kube-public Active 10h
kube-system Active 10h
kubernetes-dashboard Active 9h
[root@k8s-master pods]# kubectl create -f abc.json --namespace abc //使用文件创建pod并指定命名空间
pod/busybox-sleep000 created
或者在文件中指定,必须先在外面创建好命名空间才可以
[root@k8s-master pods]# vim abc.yaml
apiVersion: v1
kind: Pod
metadata:
name: busybox-sleep
namespace: abc
spec:
containers:
- name: busybox
image: busybox:1.28
args:
- sleep
- "1000"
[root@k8s-master pods]# kubectl create -f abc.yaml
pod/busybox-sleep created
[root@k8s-master pods]# kubectl delete namespaces abc //删除命名空间,同时也会删除命名空间下的pod
namespace "abc" deleted
4. kubectl delete
kubernetes 集群中,可通过指定配置文件(json/yaml)、stdin(标准输入)、资源名称或 label(标签)来删除资源。
Pod 支持平滑删除,因为这些资源一般是集群中的实体,所以删除无法立即生效,这些资源在强制终止之前默认定义了一个周期 (宽限期),但可以使用“-graceperiod flag”来覆盖该值,或通过“pass --now”设置该周期为 1.
如果托管 Pod 的 Node 节点已停止或无法连接 APIServer,使用 delete 删除 Pod 需等待时间更长,此时要
想强制删除,需指定“-force flag”,且设置周期为 0。
注意:执行delete命令时不会检查资源版本,如果在执行delete操作时有人进行了更新操作,那么更新操作将连同资源一起被删除。
语法
kubectl delete ([ -f 文件名 ] | TYPE [NAME | -l label | --all])
# 使⽤ pod.json中指定的资源类型和名称删除pod
kubectl delete -f ./pod.json
# 根据传⼊stdin的JSON所指定的类型和名称删除pod
cat pod.json | kubectl delete -f -
# 删除名为“baz”和“foo”的Pod和Service
kubectl delete pod,service baz foo
# 删除 Label name = myLabel的pod和Service
kubectl delete pods,services -l name=myLabel
# 强制删除dead node上的pod
kubectl delete pod foo --grace-period=0 --force
# 删除所有pod
kubectl delete pods --all
# 删除⼀个部署集
kubectl delete deployments nginx
5. kubectl get
语法:
kubectl get resource_name(资源名、类型)
常见 resource_name:
子命令 解释
all 获取 kubernetes 集群下所有资源,一般显示kubernetes 自身的 服务
certificatesigningrequests (缩写 csr) 获取集群中的证书签名请求
clusterrolebindings 获取控制 API Server 访问的绑定角色
clusterrol 获取集群级别的权限操作
componentstatuses (缩写 cs) 查看 master 及组件状态
configmaps (缩写 cm) 查看存储非机密数据的 kubernetes 资源,如配置信息 等
controllerrevisions 查看用于跟踪 controller历史版本的资源
cronjobs 查看 kubernetes 集群的周期性任务
customresourcedefinition (缩写 crd) 查看集群中所有 CRD 的列表,包括它们的名称、API 版本、类型、标签和描述等信息
daemonsets (缩写 ds) 查看kubernetes 守护进程状态
deployments (缩写 deploy) 获取Kubernetes 集群中所有的 Deployment 资 源,用于声明式地管理应用程序的副本数量和配置的资源
endpoints (缩写 ep) 获取Kubernetes 服务的端点,包含了访问服务的 IP地 址和端口信息
events (缩写 ev) 获取集群中默认命名空间的相关操作的事件列表,包括 增删改查等
horizontalpodautoscalers (缩写 hpa) 获取集群中所有的HorizontalPodAutoscaler资源:用于自动调整 Pod的副本数量以响应集群中的资源使用情况
ingresses (缩写 ing) 获取集群中所有的 Ingress 资源:用于定义如何将外 部流量路由到集群内部的应用程序
jobs 查看用于执行批处理任务或短生命周期的任务
limitranges (缩写 limits) 获取集群中所有的 LimitRange 资源:用于定义 Pod 的资源限制范围
namespaces (缩写 ns) 获取集群中已有的命名空间列表
networkpolicies (缩写 netpol) 获取定义网络流量访问规则的资源
nodes (缩写 no) 查看集群中所有节点
persistentvolumeclaims (缩写 pvc) 查看集群中用于申请持久卷的资源
persistentvolumes (缩写 pv) 查看集群中用于数据持久化的存储卷
poddisruptionbudgets (缩写 pdb) 获取该资源以查看限制集群中某个 Pod集合并发的删 除操作
podpreset 获取用于在创建 Pod 时注入其他运行时需要的信息,这些信息包 括secrets、volumemounts、environmentvariables 等
pods (缩写 po) 获取 pod 资源信息,不加参数获取的是当前默认命名 空间的资源
podsecuritypolicies (缩写 psp) 查看用于控制Pod 的安全相关配置
podtemplates 查看用于定义 pod 模板的资源对象
replicasets (缩写 rs) 查看目前所有的replica set,显示了所有的pod的副本 数,以及他们的可用数量以及状态等信息
replicationcontrollers (缩写 rc) 列出所有ReplicationControllers 的命令, ReplicationControllers 负责确保特定数量的 Pods始终在运行
resourcequotas (缩写 quota) 列出所有ResourceQuotas,ResourceQuota 是 一个资源限制对象,用于限制命名空间中资源的使用量
rolebindings RoleBinding 通过已经定义的 Role 权限授予到用户、用户组, 从而让用户获得在 NameSpace 对应的操作资源权限
roles 列出用于限制资源访问的权限对象
secrets 列出 Secrets 用于存储敏感信息,例如密码、令牌或 SSH 密钥
serviceaccounts (缩写 sa) 显示 service 的敏感信息数量及年龄(服务生成时间)
services (缩写 svc) 列出所有services 的名称、类型、IP、端口、年龄
statefulsets (缩写 sts) 列出所有可用StatefulSet 对象,包括其名称、状态和 任何相关的标签和注释
storageclasses (缩写 sc) 列出所有可用的StorageClass 对象,包括其名称、提 供程序、回收策略、卷绑定模式、是否允许卷扩展等信息
其他可选参数:
-o wide/json/yaml (用不同格式查看)
-l key=value (看指定标签的pods,⽀持‘=’, ‘==’,and ‘!=’操作符)
示例:
[root@master k8s]# kubectl get componentstatuses //查看Master状态
[root@master k8s]# kubectl get namespaces //查看所有命名空间
[root@master k8s]# kubectl get pods -n kube-system # 列出kube-system命名空间下的所有pod,不加-n参数查看default命名空间下的pod
[root@master k8s]# kubectl get pods -o wide # 显示更多的pods列表信息(例如 pod的ip和所处的node)
[root@master k8s]# kubectl get replicationcontroller web # 列出名字为web的rc
[root@master k8s]# kubectl get -o json pod nginx-7854ff8877-nphcf # 获取名字为nginx-7854ff8877-nphcf的pod的信息,并以json格式输出
[root@master k8s]# kubectl get -f busybox.yaml -o json # 根据pod⽂件查找pod,并以json格式输出,查询前确保目标pod存在于集群中
[root@master k8s]# kubectl get -o template pod/kube-dns-795f5f6f9c-ldxxs --template {{.status.phase}}
# 获取pod的kube-dns-795f5f6f9c-ldxxs容器的状态
[root@master k8s]# kubectl get rc,services # 同时获取所有的rc和service
[root@master k8s]# kubectl get rc/web service/frontend pods/web-pod-13je7 # 获取符合条件的所有rc,svc,pod,因为当前集群中没有这些资源,所以查不到便报错
[root@master k8s]# kubectl get all # 显示所有资源,包括pod、deployment、service、replicaset
[root@master k8s]# kubectl get pods nginx-7854ff8877-nphcf -o jsonpath='{.spec.containers[*].name}'
# 查看pod⾥的容器名
6. kubectl set
更新资源:
# 更新 "nginx" Deployment 的 "nginx" 容器镜像
kubectl set image deployment nginx nginx=nginx:v2
7. kubectl edit
编辑资源:
# 编辑名为nginx的集群管理器,进入一个如vim的文本编辑器,但不能使用鼠标滚轮滑动
kubectl edit deployment nginx
8. kubectl replace
更新资源:
# 强制替换,删除后重建资源。会导致服务不可⽤。
kubectl replace --force -f ./nginx.yaml
9. kubectl logs
输出 pod 中一个容器的日志。如果 pod 只包含一个容器则省略容器名。
语法:
kubectl logs [-f] [-p] POD [-c CONTAINER]
-c,--container="": 容器名。
-f,--follow[=false]: 指定是否持续输出日志
--interactive[=true]: 如果为true,当需要时提示用户进行输入。默认为true。
--limit-bytes=0: 输出日志的最大字节数。默认无限制。
-p,--previous[=false]: 如果为true,输出pod中曾经运行过,但目前已终止的容器的日志
--since=0: 仅返回相对时间范围,如5s、2m或3h,之内的日志。默认返回所有日志。只能司时 使用since和since-time中的一种。
--since-time="”: 仅返回指定时间 (RFC3339格式)之后的日志。默认返回所有日志。只能同时使用since 和since-time中的一种。
--tail=-1: 要显示的最新的日志条数。默认为-1,显示所有的日志。
--timestamps[=false]: 在日志中包含时间戳。
示例:
# 返回仅包含⼀个容器的pod nginx的⽇志快照
kubectl logs nginx
# 持续输出pod⽇志
kubectl logs -f nginx-7854ff8877-x8v6f
# 指定命名空间和pod查看⽇志
kubectl logs -f kube-apiserver-k8s-master -n kube-system
# 查看后⾯10⾏内容
kubectl logs -f kube-apiserver-k8s-master -n kube-system --tail 10
# 查看某个pod⾥某个容器的⽇志
kubectl logs -f nginx-7854ff8877-x8v6f -c nginx
10. kubectl exec
连接容器并可在容器内部执行命令
语法:
kubectl exec POD [-c CONTAINER] -- COMMAND [args...]
-c,--container="”: 容器名。如果未指定,使用pod中的一个容器。
-p,--pod="”: Pod名
-i,--stdin[=false]: 将控制台输入发送到容器
-t,--tty[=false]: 为容器分配一个伪终端
示例:
# 在pod的容器⾥执⾏ls指令
kubectl exec busybox-sleep -- ls
# 进⼊到pod容器⾥
kubectl exec -it busybox-sleep -- bash
kubectl exec -it busybox-sleep -- sh
# 进⼊到某个pod⾥的某个容器⾥
kubectl exec -it nginx-7854ff8877-x8v6f -c nginx -- bash
11. kubectl top
显示资源 cpu 内存 存储使⽤情况
# 查看节点的资源使⽤情况
kubectl top node
# 查看pod资源使⽤情况
kubectl top po
# 查看所有节点资源使⽤情况
kubectl top po -A
实例:
[root@k8s-master pods]# vim 0001pod.yaml
apiVersion: v1
kind: Pod
metadata:
labels:
run: nginx
name: nginx0001
namespace: pes
spec:
containers:
- name: nginx0001
image: nginx
ports:
- name: nginxport
containerPort: 80
[root@k8s-master pods]# kubectl create namespace pes
namespace/pes created
[root@k8s-master pods]# kubectl create -f 0001pod.yaml
pod/nginx0001 created
[root@k8s-master pods]# kubectl get pod -n pes
NAME READY STATUS RESTARTS AGE
nginx0001 1/1 Running 0 114s