概念
将一组 Pods 公开为网络服务的抽象方法。
ClientIP
模型
集群内访问类型。
命令行
# 暴露端口
kubectl expose deployment my-dep-nginx --port=8000 --target-port=80
Yml文件
apiVersion: v1
kind: Service
metadata:
labels:
app: my-dep-nginx
name: my-dep-nginx
spec:
selector:
app: my-dep-nginx
ports:
- port: 8000
protocol: TCP
targetPort: 80
验证
- 修改deploy中的3个副本的index.html页面内容分别为:111、222、333
- 使用命令行或者Yml文件创建svc
- 调用svc的地址,可以看到实现了负载均衡
注意
在pod内部也可以使用 服务名.namespace.svc进行访问,只能在Pod内调用
eg: my-dep-nginx.default.svc
NodePort
模型
可以在公网调用通的类型。该类型k8s会在 30000-32767之间开放一个端口
命令行
# 暴露端口
kubectl expose deployment my-dep-nginx --port=8000 --target-port=80 --type=NodePort --name=out-nginx
Yml文件
apiVersion: v1
kind: Service
metadata:
labels:
app: my-dep-nginx
name: out-nginx
spec:
ports:
- port: 8000
protocol: TCP
targetPort: 80
selector:
app: my-dep-nginx
type: NodePort
验证
- 保持上面文件中3个副本的index.html页面内容
- 创建out-nginx svc
- 使用svc:新的端口进行调用,可以看到达到负载均衡
参考
- 笔记