资源介绍和常用命令

namespace

用于在集群中创建逻辑隔离的虚拟集群。命名空间允许将集群划分为多个独立的单元,每个单元具有自己的资源配额和访问控制策略

查看集群所有命名空间

kubectl get ns

设置命名空间变量,方便使用

OP_NAMESPACE=paas-ucrs

pod

是Kubernetes中最小的可调度和可管理的单元。它是一个或多个容器的集合,它们共享相同的网络和存储上下文。Pod提供了一种逻辑主机,容器共享相同的IP地址和端口空间

查看指定命名空间的所有pod

kubectl get pods -n ${OP_NAMESPACE} 

查看pod信息

kubectl describe pods -n ${OP_NAMESPACE} <pod_name>

删除/重启pod

kubectl delete pods -n ${OP_NAMESPACE} <pod_name>

进入pod

kubectl exec -it -n ${OP_NAMESPACE} <pod_name> bash

查看pod最新日志,打印200行

kubectl logs --tail=200 -n ${OP_NAMESPACE} <pod_name>

deployment

用于定义可扩展和自愈的应用程序副本集。Deployment对应于Pod的副本控制器,它负责管理Pod的创建、更新和删除,以确保所需的副本数一直保持在活动状态

编辑deployment

kubectl edit deployment -n ${OP_NAMESPACE}

删除deployment

kubectl delete deployment -n ${OP_NAMESPACE} 

获取deployment信息,yaml格式输出

kubectl get deployment -n ${OP_NAMESPACE} <deployment_name> -o yaml

调整副本数量

kubectl scale deployment --replicas=1 -n ${OP_NAMESPACE} <deployment_name>

查看历史

kubectl rollout history -n ${OP_NAMESPACE} deployment/<deployment_name>

回滚到指定版本

kubectl rollout undo -n ${OP_NAMESPACE} deployment/<deployment_name> --to-revision=<num>

创建资源

kubectl create -f <filename.yml>

更新/创建资源

kubectl apply -f <filename.yml>

service

定义了一组Pod的访问方式和网络终结点。Service具有稳定的IP地址和DNS名称,并通过标签选择器将流量路由到后端的Pod。它可以提供负载均衡、服务发现和连接到后端应用程序的稳定入口

编辑service

kubectl edit service -n ${OP_NAMESPACE} <service_name>

virtualService

查看所有vs

kubectl get vs -A

获取指定格式vs

kubectl get vs -n <nsname> <vsname> -o yaml

编辑vs

kubectl edit vs -n <nsname> <vsname>

configMap

于将非敏感的配置数据注入到Pod中。ConfigMap可以存储键值对、文件或目录,并可以在Pod中以环境变量、命令行参数或卷的形式使用

创建cm

kubectl create configmap -n ${OP_NAMESPACE} <cmname> --from-file=<filepath>

编辑cm

kubectl edit configmap -n ${OP_NAMESPACE} <cmname>

删除cm

kubectl delete configmap -n ${OP_NAMESPACE} <cmname>

image

更新镜像

kubectl set image deploy -n ${OP_NAMESPACE} <deployment_name> *=<image_url>

查看镜像版本,使用jsonpath模板来按指定格式输出结果

kubectl get pods -n ${OP_NAMESPACE}  -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.containers[*].image}{"\n"}{end}'
  • kubectl get pods -n ${OP_NAMESPACE}: 用于获取指定命名空间(${OP_NAMESPACE})中的所有Pods的信息
  • -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.containers[*].image}{"\n"}{end}': 使用jsonpath模板来输出结果
  • '{range .items[*]}:使用range关键字来迭代所有的Pods对象
  • {.metadata.name}: 输出每个Pod的名称
  • {"\t"}: 在名称和镜像之间添加一个水平制表符
  • {.spec.containers[*].image}: 输出每个Pod中所有容器的镜像信息
  • {"\n"}: 在每个Pod的信息之间添加一个换行符
  • {end}: 结束range循环

综合起来,命令将输出指定命名空间中所有Pods的名称和每个Pod中所有容器的镜像信息,每个Pod的信息用制表符分隔,每个Pod之间用换行符分隔

statefulSet

用于管理有状态应用程序的副本集。StatefulSet为每个Pod分配唯一的标识符和网络标识,以便在Pod重新启动或扩展时保持稳定

secret

用于安全地存储敏感信息,如密码、API密钥等。Secret以Base64编码的形式存储,并可以在Pod中以环境变量、命令行参数或卷的形式使用

persistentVolume

用于将持久化存储资源抽象为Kubernetes中的卷。它独立于Pod的生命周期,并提供了持久性和数据的跨Pod共享

job

用于在集群中运行一次性任务或批处理任务。它确保任务成功完成,并且可以设置重试和并行性。Job创建一个或多个Pod来运行任务,当任务完成时,它们会自动终止。Job适用于需要执行一次性任务或需要确保任务的完整性的场景

cronJob

基于类似于Unix cron的时间表达式来定期运行任务。它创建一个Job来运行预定义的任务,并可以设置任务的调度时间和重试策略。CronJob适用于需要定期执行的任务,如定时备份、数据清理等

ingress

将外部流量路由到集群内部服务的规则和配置。它充当了外部流量的入口点,并提供负载均衡、SSL终止和基于域名的路由等功能。Ingress通过定义规则和使用反向代理来将外部请求路由到相应的服务。它可以与不同的Ingress控制器配合使用,如Nginx Ingress Controller、Traefik等