1. Kubernetes服务暴露基础解析
在容器化部署环境中,服务暴露是连接集群内外流量的关键环节。Kubernetes提供了多种服务类型来实现不同层级的网络访问:
- ClusterIP:默认服务类型,分配集群内部IP,仅限集群内访问
- NodePort:在每个节点上开放静态端口,将流量转发到服务
- LoadBalancer:使用云提供商的负载均衡器暴露服务到外部
- ExternalName:通过返回CNAME记录映射到外部服务
实际生产中最常用的组合是LoadBalancer配合Ingress Controller,以提供L7路由和TLS终止能力。例如使用Nginx Ingress时,典型的服务定义如下:
yaml复制apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app: web-app
ports:
- protocol: TCP
port: 80
targetPort: 9376
type: LoadBalancer
重要提示:在公有云环境部署LoadBalancer时,会自动创建云厂商的负载均衡器资源,可能产生额外费用。测试环境建议使用NodePort配合端口转发。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. CoreDNS工作原理深度剖析
CoreDNS作为Kubernetes默认的DNS服务,采用插件化架构处理DNS查询。其核心工作流程包含:
- 查询拦截:kubelet配置容器的/etc/resolv.conf指向CoreDNS服务IP
- 插件链处理:通过配置的插件序列逐步处理DNS请求
- 记录返回:根据查询类型返回A记录、SRV记录或CNAME
典型的CoreDNS配置示例(ConfigMap形式):
yaml复制apiVersion: v1
kind: ConfigMap
metadata:
name: coredns
namespace: kube-system
data:
Corefile: |
.:53 {
errors
health {
