title:
style: nestedList # TOC style (nestedList|nestedOrderedList|inlineFirstLevel)
minLevel: 0 # Include headings from the specified level
maxLevel: 0 # Include headings up to the specified level
includeLinks: true # Make headings clickable
debugInConsole: false # Print debug info in Obsidian consoleTerminology
1. Pod
定义:
- Pod 是 Kubernetes 中的基本计算单元,包含一个或多个容器。这些容器共享网络和存储资源。
功能:
- 运行应用程序:Pod 实际上承载着运行应用程序的容器。
- 共享资源:Pod 内的容器共享相同的网络和存储卷。
联系:
- 与 Service 的联系:Service 可以将流量路由到运行在 Pod 中的容器。
- 与 Deployment/StatefulSet 的联系:Deployment 和 StatefulSet 控制和管理 Pods 的创建和更新。
2. Service
定义:
- Service 是一种 Kubernetes 资源,用于定义如何访问运行在 Pods 中的应用程序。它提供了一个稳定的访问点来访问 Pods,无论 Pods 的 IP 地址如何变化。
功能:
- 负载均衡:在多个 Pods 之间分配流量。
- 服务发现:为 Pods 提供稳定的访问地址(ClusterIP、NodePort、LoadBalancer)。
联系:
- 与 Pod 的联系:Service 将流量路由到符合选择器条件的 Pods。
- 与 Ingress 的联系:Ingress 通过路由规则将外部流量转发到 Service,Service 再将流量分发到 Pods。
3. Ingress
定义:
- Ingress 是 Kubernetes 中的一个资源,用于管理集群外部的 HTTP 和 HTTPS 流量。它定义了如何将外部流量路由到集群内部的 Service。
功能:
- 路由控制:根据主机名和路径将外部请求路由到不同的 Service。
- TLS 终止:提供 HTTPS 访问的能力。
联系:
- 与 Service 的联系:Ingress 通过定义路由规则将外部流量转发到 Service。Service 进一步将流量分发到 Pods。
4. Deployment
定义:
- Deployment 是一种 Kubernetes 控制器,用于管理 Pods 的生命周期。它确保指定数量的 Pods 始终运行,并支持滚动更新和回滚。
功能:
- 管理 Pods:自动创建、更新和删除 Pods。
- 滚动更新和回滚:逐步更新 Pods 并支持恢复到旧版本。
联系:
- 与 Pod 的联系:Deployment 创建和管理 Pods,并确保它们的健康状态。
- 与 Service 的联系:Deployment 管理的 Pods 可以通过 Service 暴露和访问。
5. StatefulSet
定义:
- StatefulSet 是 Kubernetes 控制器,用于管理有状态应用程序。它提供稳定的网络标识和持久化存储。
功能:
- 有序部署和滚动更新:有序地启动和停止 Pods。
- 稳定的网络标识:每个 Pod 有一个稳定的名字。
联系:
- 与 Pod 的联系:StatefulSet 管理有状态的 Pods。
- 与 Service 的联系:StatefulSet 通常与 Headless Service 一起使用,以便为 Pods 提供稳定的网络标识。
6. ConfigMap
定义:
- ConfigMap 是一种 Kubernetes 资源,用于存储非敏感的配置信息。
功能:
- 配置管理:将配置信息分离出来,使应用程序能够动态读取这些配置。
联系:
- 与 Pod 的联系:Pod 可以从 ConfigMap 中读取配置信息。
7. Secret
定义:
- Secret 是一种 Kubernetes 资源,用于存储敏感信息,如密码和密钥。
功能:
- 安全存储:保护敏感数据,避免在容器镜像中硬编码敏感信息。
联系:
- 与 Pod 的联系:Pod 可以从 Secret 中读取敏感信息,并用作环境变量或挂载到容器内的文件。
8. Namespace
定义:
- Namespace 是 Kubernetes 中的一个逻辑隔离机制,用于将资源分组到不同的虚拟环境中。
功能:
- 资源隔离:在同一个集群中创建多个 Namespace,以隔离不同的环境(如开发、测试、生产)。
联系:
- 与其他组件的联系:所有的 Kubernetes 资源(Pod、Service、Deployment 等)都可以在 Namespace 内部定义和使用,以实现资源的组织和隔离。
9. Horizontal Pod Autoscaler (HPA)
定义:
- HPA 是 Kubernetes 控制器,用于根据 CPU 使用率或其他指标自动调整 Pods 的副本数。
功能:
- 自动扩缩容:根据负载自动调整 Pods 的副本数,以保持应用程序的性能和可用性。
联系:
- 与 Deployment 的联系:HPA 可以自动扩缩容由 Deployment 管理的 Pods。
总结
- Pod 是 Kubernetes 中的基础计算单元,实际运行应用程序的容器。
- Service 提供稳定的访问点来访问 Pods,负责负载均衡和服务发现。
- Ingress 管理外部 HTTP/HTTPS 流量的路由,将流量转发到 Service。
- Deployment 和 StatefulSet 负责 Pods 的管理,前者适用于无状态应用,后者适用于有状态应用。
- ConfigMap 和 Secret 提供了配置和敏感数据的管理。
- Namespace 用于资源的逻辑隔离。
- HPA 自动调整 Pods 的副本数以应对负载变化。
这些组件和概念在 Kubernetes 中互相协作,共同实现容器化应用程序的高效部署和管理。掌握它们将帮助你更好地设计和维护 Kubernetes 集群。
Useful Commands
Namespace
- Save Namespace for subsequent
kubectlcommands: `kubectl config set-context —current —namespace=
Ingress
Use the below two commands to check if the access name is unique in the cluster.
kubectl get ingresskubectl describe ingress/<INGRESS_NAME>
Pods
To see if your pods are deploying, run:
kubectl get podsIf no pods are listed, check events:
kubectl get eventsTo see your status on the deployment, run:
kubectl get deploymentsTo see your service, run:
kubectl get servicesAll traffic is blocked by default, so we added NetworkPolicy to enable you to connect to your application.
To enter your service, run:
kubectl exec -it my-pod --container my-container -- /bin/bash
Ignore container parameter if you only want to enter the first container.
Scale
kubectl scale deployment your_app --replicas=5To watch your pods, run:
kubectl get pods -wTry scaling up or down a few times to see the deployment behavior.