点击蓝字 关注我们
NEWS TODAY
1 Service相关概念
1.1 什么是Service?
1.2 Service 的核心概念
1.2.1 Pod 和 Service
1.2.2 Service 和 Endpoints
1.3 Service 类型
1.3.1 ClusterIP(默认类型)
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app # 选择标签为 app=my-app 的 Pod
ports:
- protocol: TCP
port: 80 # 服务对外暴露的端口
targetPort: 8080 # 实际服务运行的 Pod 端口
clusterIP: 10.96.0.1 # 可以不指定,Kubernetes 会自动分配 ClusterIP
1.3.2 NodePort
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80 # 外部客户端访问的端口
targetPort: 8080 # Pod 上的目标端口
nodePort: 30001 # 每个 Node 暴露的端口,如果不指定,会动态分配
type: NodePort
1.3.3 LoadBalancer
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80 # 外部访问的端口
targetPort: 8080 # Pod 上的目标端口
type: LoadBalancer
1.3.4 ExternalName
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: ExternalName
externalName: www.liyb.com # 外部服务的 DNS 名称
2 Service 工作原理
2.1 Pod 的 IP 和生命周期管理
2.2 Service 的创建与标签选择器
2.3 DNS 解析
<ServiceName>.<Namespace>.svc.<ClusterDomain>
ServiceName:Service的名字。
Namespace:Service所在的命名空间(Namespace)。
svc:表示这是一个Kubernetes的Service。
ClusterDomain:Kubernetes集群的域名,默认是
cluster.local
,但可以由集群管理员自定义。
3 Service常用操作
3.1 创建service
# 命令行创建,通过暴露deployment创建Service
kubectl expose deployment <deployment-name> --type=<service-type> --port=<port> --target-port=<target-port>
kubectl expose deploy nginx --port=80 --target-port=80 --type=NodePort
# 创建
kubectl apply -f service.yaml
3.2 查看service
# 查看所有service信息
kubectl get svc
kubectl get svc -o wide -n prod
# 查看指定service的详细信息
kubectl get svc nginx -o yaml -n prod
kubectl describe svc nginx -n prod
# 查看Service的endpoint信息
kubectl get endpoints <service-name>
kubectl get ep nginx
3.3 编辑更新Service
kubectl edit service <service-name>
kubectl edit svc nginx -n prod
# 更新端口
kubectl patch service my-service -p '{"spec":{"ports":[{"port":80,"targetPort":8081}]}}'
3.4 删除Service
# 命令行删除
kubectl delete svc <service-name>
kubectl delete svc nginx
# 基于yaml文件删除
kubectl delete -f service.yaml
END
往期推荐
1 | |
2 | |
3 |
4 | |
5 | |
6 |