在kubectl的学习中,经常见到一些缩写,干脆整理一番,统一学习更加方便记忆。
简称 | 全称 | 中文释义 | 举例 |
ns | namespace | 命名空间 | kubectl get namespace 等价于 kubectl get ns |
-A | --all-namespaces | 全部命名空间 | kubectl get pods --all-namespace 等价于 kubectl get pods -A |
cs | componentstatus | 组建状态 | kubectl get cs |
rc | replicationcontroller | 副本控制器 | kubectl get rc |
svc | service | 服务 | kubectl get svc |
ds | daemonset | 守护进程集合 | kubectl get ds |
rs | replicaset | 副本集合 | kubectl get rs |
deploy | deployment | 部署 | kubectl get deploy 等价于 kubectl get deployments |
cm | config-map | 配置 | kubectl get cm |
在Kubernetes中,命名空间(Namespace)是一种用于隔离和组织集群资源的虚拟化机制。它可以将一个Kubernetes集群划分为多个逻辑部分,每个部分都有自己的资源和对象。
通过使用命名空间,可以将不同的应用程序、团队或环境隔离开来,使它们在同一个集群中运行时不会相互干扰。每个命名空间都拥有独立的一组资源,例如Pod、Service、Deployment等。
命名空间是Kubernetes中的一个核心概念,它可以帮助管理、监控和控制各种资源,提高集群的可管理性和安全性。同时,命名空间也使得在同一个集群中运行多个应用程序变得更加灵活和简便。
副本控制器(Replication Controller)是一种管理 Pod 副本(replica)的控制器。副本控制器会确保指定数量的 Pod 副本在集群中运行,并在 Pod 失效时启动新的副本来替换它们,从而提高集群的可用性和稳定性。
副本控制器实现了对 Pod 副本数量的自动化控制和恢复策略,可以不断监控 Pod 的运行状态,并根据策略自动进行副本的创建或删除。如果有任何一个 Pod 失效,副本控制器会立刻启动一个新的Pod副本,以确保集群中的Pod数量始终符合要求。
除了实现Pod的高可用和自愈,副本控制器还可以配合Service、Deployment等控制器一起使用,帮助用户管理集群中的应用程序。例如,使用Deployment控制器创建副本,再使用Service控制器进行负载均衡,从而实现应用程序的水平伸缩和高可用。
ReplicaSet 是一种控制器(Controller)对象,用于确保指定数量的 Pod 副本在集群中运行。
ReplicaSet 与前身 Replication Controller(RC)类似,但提供了更强大的选择器标签(selector label)和比 RC 更严格的副本控制功能。与 RC 不同,ReplicaSet 支持更加灵活的 Pod 副本调度,还支持滚动更新(Rolling Update)和自动扩容等功能。
滚动更新可以让我们平滑地、控制地对应用程序进行更新,而不会影响线上的稳定性和可用性。我们可以通过设置更新策略、更新时间等参数来控制滚动更新的行为。
自动扩容可以根据预设的指标,比如 CPU 利用率或内存利用率等,自动伸缩 Pod 的数量,以应对负载高峰。
ReplicaSet 和 Deployment(部署)等高级控制器一起使用的时候可以让应用程序受益。Deployment 可以管理 ReplicaSet,并提供滚动更新等特性,使得应用程序的部署和管理更加简单方便。
Service 是一种抽象的资源对象,用于定义一组 Pod 的访问方式和网络策略。它为一组 Pod 提供一个稳定的网络入口,并将这些 Pod 封装成一个逻辑服务。
Service 可以通过不同的方式提供服务的访问方式,例如 ClusterIP、NodePort、LoadBalancer 和 ExternalName 等。它们分别提供了不同的访问模式:
ClusterIP:将 Service 暴露到集群内部,只能在 ClusterIP 地址上进行访问。适用于集群内部的服务发现和通信。
NodePort:将 Service 暴露到每个节点的固定端口上,可以通过
的方式访问。适用于集群外部的访问。
LoadBalancer:通过云服务商(如 AWS、GCP)的负载均衡器将 Service 暴露到公网,并提供外部地址进行访问。
ExternalName:将 Service 映射到集群外部的任意域名,通过 CNAME 记录进行访问。
Service 的一个重要作用是提供服务发现和负载均衡。通过 Service,可以将请求分发到后端 Pod 的多个副本上,实现应用程序的高可用性和负载均衡。同时,Service 也使得应用程序的访问方式与具体的 Pod 实例解耦,方便管理和维护。
DaemonSet 是一种控制器(Controller),用于确保每个节点上运行一个相同的 Pod 副本。与副本控制器(Replication Controller)或 ReplicaSet 不同,它们通常用于在所有(或指定的)节点上运行系统级别的守护进程。
DaemonSet 可以确保集群中的每个节点都运行一个 Pod 副本,并随着节点的加入或离开自动调整副本的数量。当节点添加到集群时,会自动在该节点上启动一个 Pod 副本。而当节点从集群中删除时,相应的 Pod 也会被自动清理。
DaemonSet 通常用于在每个节点上运行一些独立的系统任务或者服务,例如日志收集、监控代理、网络插件等。通过 DaemonSet,可以确保每个节点都有相应的系统服务在运行,从而保证集群的正常运转和一致性。
与其他类型的控制器不同,DaemonSet 中的 Pod 不会随着副本数量的增加而扩展。每个节点上只会运行一个 Pod 副本。
如果希望在所有节点上都运行多个副本,应使用副本控制器ReplicationSet。
Deployments 是一种高级控制器(Controller)对象,用于管理 Pod 的部署和更新。
Deployments 提供了对 ReplicaSet 和 Pod 的抽象,并提供了一组声明式的配置和管理机制,以便简化应用程序的部署和管理。
通过 Deployments,我们可以指定应用程序的期望状态,例如要运行的 Pod 数量、镜像版本等。Kubernetes 会自动创建和管理相应的 ReplicaSet 和 Pod,以确保系统达到定义好的期望状态。
Deployments 还提供了滚动更新(Rolling Update)的功能,可以使应用程序在更新过程中实现平滑迁移,减少对应用程序的影响。滚动更新可以控制新旧 Pod 的创建和删除速度,以避免中断和故障。
此外,Deployments 还支持扩容和缩容操作。可以根据预设的指标(如 CPU 利用率、内存利用率等),自动伸缩 Pod 的数量,以适应负载变化。
简单理解:Deployments 提供了一种便捷的方式来定义、管理和更新应用程序的部署,比直接操作 ReplicaSet 更高级和灵活。
ConfigMap 是一种用于存储应用程序配置数据的对象,它将配置数据与容器剥离开来,以便配置的修改不会影响应用程序的镜像或 Pod 规格。
ConfigMap 可以存储键值对形式的配置数据,例如环境变量、命令行参数、配置文件等。它可以被多个 Pod 共享,并且可以随时更新而不需要重新启动 Pod。
使用 ConfigMap,可以将配置数据作为 Kubernetes 对象进行管理,从而实现配置的集中化管理、版本控制和变更跟踪。这样可以提高应用程序的可维护性和可扩展性。
可以通过两种方式将 ConfigMap 中的数据传递给 Pod:
挂载方式:可以将 ConfigMap 中的数据挂载为文件或目录,然后在 Pod 中使用。
环境变量方式:可以将 ConfigMap 中的数据作为环境变量注入到 Pod 中。
ConfigMap 可以通过命令行或配置文件进行创建和更新,也可以通过声明式方式,在 Pod 的配置文件中直接引用已存在的 ConfigMap。
总之,ConfigMap 是 Kubernetes 中一种方便管理应用程序配置数据的机制,可以提高应用程序的可维护性和灵活性。