pod:Pod 是 Kubernetes 中的最小可部署单元,代表一组紧密耦合的容器。每个 Pod 包含一个或多个容器,这些容器共享网络和存储。通常,一个 Pod 运行一个主容器(比方,Web服务器),以及一些辅助容器(如日记收集、监控署理等)。
Pod 通常不直接创建,而是通过更高级别的控制器(如 Deployment)来管理。
相关操作:
# 查看Pod列表
kubectl get pods
# 查看指定命名空间下的Pod
kubectl get pods -n <namespace>
# 详细描述Pod:输出Pod的详细信息,包括事件、状态、配置信息等
kubectl describe pod <pod-name>
# 查看Pod的日志
kubectl logs <pod-name>
# 进入Pod的容器
kubectl exec -it <pod-name> -- /bin/bash
# 删除Pod
kubectl delete pod <pod-name> --force
复制代码
service:是一种用于定义一组 Pod 的网络访问策略的资源对象。它为外部系统或内部组件提供了稳定的访问入口,纵然这些 Pod 的 IP 地址会随着 Pod 的创建和销毁而变革。Service 通过将流量分发到符合选择条件的 Pod 来实现负载均衡。
Kubernetes 支持多种类型的 Service,不同类型的 Service 适用于不同的网络需求:
ClusterIP(默认类型):
仅在集群内部可访问。
为 Service 创建一个虚拟 IP(Cluster IP),用于在集群内部的其他服务间举行通讯。
适用于服务之间的内部通讯。
NodePort:
将服务暴露在每个节点的某个端口上(范围是 30000-32767),通过 : 访问。
适用于须要从集群外部直接访问服务的情况。
LoadBalancer:
在支持的云环境中(如 AWS、GCP),自动创建一个外部负载均衡器,并将其与 Service 关联。
将流量转发到 Service 对应的 NodePort 或 ClusterIP。
适用于须要自动创建云提供商的负载均衡器来暴露服务的情况。
ExternalName:
将服务的 DNS 名称映射到外部的 DNS 名称。
没有选择器,与其他服务类型不同,它不会选择集群中的 Pod,而是返回 CNAME 记载。
适用于访问集群外部的资源,如数据库服务。
相关操作:
# 查看Service列表:列出所有Service及其对应的ClusterIP、外部IP等信息
kubectl get services
# 查看Service详细信息
kubectl describe service <service-name>
# 删除service
kubectl delete service <service-name>
复制代码
deployment:Deployment 是一种用于管理应用程序的 Kubernetes 控制器。它提供声明式更新机制,使你可以大概管理应用的副本数量、更新策略等。Deployment 是管理 Pod 的常用方式,它确保指定数量的 Pod 始终运行,而且可以自动执行滚动更新和回滚操作。
相关操作: