资源介绍和常用命令
namespace
用于在集群中创建逻辑隔离的虚拟集群。命名空间允许将集群划分为多个独立的单元,每个单元具有自己的资源配额和访问控制策略
查看集群所有命名空间
设置命名空间变量,方便使用
pod
是Kubernetes中最小的可调度和可管理的单元。它是一个或多个容器的集合,它们共享相同的网络和存储上下文。Pod提供了一种逻辑主机,容器共享相同的IP地址和端口空间
查看指定命名空间的所有pod
查看pod信息
删除/重启pod
进入pod
kubectl exec -it -n ${OP_NAMESPACE} <pod_name> bash
查看pod最新日志,打印200行
deployment
用于定义可扩展和自愈的应用程序副本集。Deployment对应于Pod的副本控制器,它负责管理Pod的创建、更新和删除,以确保所需的副本数一直保持在活动状态
编辑deployment
删除deployment
获取deployment信息,yaml格式输出
调整副本数量
查看历史
回滚到指定版本
创建资源
更新/创建资源
service
定义了一组Pod的访问方式和网络终结点。Service具有稳定的IP地址和DNS名称,并通过标签选择器将流量路由到后端的Pod。它可以提供负载均衡、服务发现和连接到后端应用程序的稳定入口
编辑service
virtualService
查看所有vs
获取指定格式vs
编辑vs
kubectl edit vs -n <nsname> <vsname>
configMap
于将非敏感的配置数据注入到Pod中。ConfigMap可以存储键值对、文件或目录,并可以在Pod中以环境变量、命令行参数或卷的形式使用
创建cm
编辑cm
删除cm
image
更新镜像
查看镜像版本,使用jsonpath
模板来按指定格式输出结果
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等