CentOS 上 Kubernetes 服务发现实践
一 核心原理
二 方式一 DNS 名称解析
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
labels:
app: web
spec:
replicas: 2
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: nginx:1.25
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: web
namespace: default
spec:
selector:
app: web
ports:
- port: 80
targetPort: 80
kubectl run -it --rm dns-test --image=busybox:1.36 --restart=Never -- nslookup web
kubectl run -it --rm dns-test --image=busybox:1.36 --restart=Never -- curl http://web
三 方式二 环境变量注入
四 对外暴露与 7 层路由
kubectl expose deploy nginx --name=svc-nginx --type=NodePort --port=80 --target-port=80 -n dev
# 获取映射端口
kubectl get svc svc-nginx -n dev -o wide
# 外部访问示例:http://<任意节点IP>:<NodePort>
五 验证与常见问题
kubectl get pods -n kube-system -l k8s-app=coredns
kubectl logs -n kube-system deploy/coredns
kubectl run -it --rm dns-test --image=busybox:1.36 --restart=Never -- nslookup kubernetes.default.svc.cluster.local
kubectl get endpoints <svc-name> -n <namespace>