1、Service将同类型一组应用统一IP访问
将一组 Pods 网络服务的抽象方法。统一Ip后,默认就实现了负载均衡。
1、只在Pod内部任意机器访问的ClusterIp类型
在命令行操作生成一个ClusterIp地址。这种ClusterIp只能在Pod内部访问。
生成了ClusterIp之后,这时也可以使用应用名加命名空间的形式访问,如下
2、可以在公网上访问的NodePort类型
在命令行操作生成一个ClusterIp地址,并多了一个随机外网访问的端口。
这个端口生成是随机的,范围如下:
相当于在这个应用的所有副本都开了这个端口,所以使用任意台机器的IP地址加该端口都能访问到。包括node/master机器IP,只要加上了外网访问的端口即可实现。
2、具体看命令行操作中说明。
2、命令行操作
1、将Deployment应用统一ClusterIp地址访问
–port 集群里访问的端口, --target-port 应用运行的的端口
kubectl expose deployment my-dep --port=8000 --target-port=80 --type=ClusterIP
等同于没有–type的
注意ClusterIp只能在Pod内部访问,不能外网访问
同样可以使用yaml文件形式来设置,内容如下,使用 kubectl apply -f dd.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: my-dep
name: my-dep
spec:
ports:
- port: 8000
protocol: TCP
targetPort: 80
selector:
app: my-dep
type: ClusterIP
2、查询Deployment应用集群的Service信息
简写形式
- 只设置了ClusterIp类型的应用的Service信息查询结果。
my-dep应用Pod内部访问地址就是10.96.8.0:8000
- 设置了NodePort类型的应用的Service信息查询结果
如下展示了不仅有ClusterIp,多了30948端口。这个端口可以在外网进行访问了。
查所有kubectl get svc -A
如果根据名字过滤则 kubectl get svc -n ingress-nginx
3、根据Deployment应用标签名称查询应用
使用标签检索Pod
kubectl get pod -l app=my-dep
4、删除Deployment应用的ClusterIp访问
5、查询所有应用的标签
6、将Deployment应用统一NodePort地址访问
同样可以使用yaml文件形式,内容如下,使用 kubectl apply -f dd.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: my-dep
name: my-dep
spec:
ports:
- port: 8000
protocol: TCP
targetPort: 80
selector:
app: my-dep
type: NodePort
这个端口生成是随机的,范围如下:
相当于在这个应用的所有副本都开了30948端口,所以使用任意台机器的IP地址加该端口都能访问到。