> 文章列表 > 轻松掌握k8s的kubectl使用命令行操作Service知识点02

轻松掌握k8s的kubectl使用命令行操作Service知识点02

轻松掌握k8s的kubectl使用命令行操作Service知识点02

1、Service将同类型一组应用统一IP访问

将一组 Pods 网络服务的抽象方法。统一Ip后,默认就实现了负载均衡。

1、只在Pod内部任意机器访问的ClusterIp类型

在命令行操作生成一个ClusterIp地址。这种ClusterIp只能在Pod内部访问。
轻松掌握k8s的kubectl使用命令行操作Service知识点02

生成了ClusterIp之后,这时也可以使用应用名加命名空间的形式访问,如下

轻松掌握k8s的kubectl使用命令行操作Service知识点02

2、可以在公网上访问的NodePort类型

轻松掌握k8s的kubectl使用命令行操作Service知识点02

在命令行操作生成一个ClusterIp地址,并多了一个随机外网访问的端口

这个端口生成是随机的,范围如下:
轻松掌握k8s的kubectl使用命令行操作Service知识点02

相当于在这个应用的所有副本都开了这个端口,所以使用任意台机器的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的
轻松掌握k8s的kubectl使用命令行操作Service知识点02

注意ClusterIp只能在Pod内部访问,不能外网访问

同样可以使用yaml文件形式来设置,内容如下,使用 kubectl apply -f dd.yaml

apiVersion: v1
kind: Service
metadata:labels:app: my-depname: my-dep
spec:ports:- port: 8000protocol: TCPtargetPort: 80selector:app: my-deptype: ClusterIP
2、查询Deployment应用集群的Service信息

简写形式

轻松掌握k8s的kubectl使用命令行操作Service知识点02

  • 只设置了ClusterIp类型的应用的Service信息查询结果。

my-dep应用Pod内部访问地址就是10.96.8.0:8000
轻松掌握k8s的kubectl使用命令行操作Service知识点02

  • 设置了NodePort类型的应用的Service信息查询结果

如下展示了不仅有ClusterIp,多了30948端口。这个端口可以在外网进行访问了。

轻松掌握k8s的kubectl使用命令行操作Service知识点02

查所有kubectl get svc -A 如果根据名字过滤则 kubectl get svc -n ingress-nginx

3、根据Deployment应用标签名称查询应用

使用标签检索Pod
kubectl get pod -l app=my-dep

4、删除Deployment应用的ClusterIp访问

轻松掌握k8s的kubectl使用命令行操作Service知识点02

5、查询所有应用的标签

轻松掌握k8s的kubectl使用命令行操作Service知识点02

6、将Deployment应用统一NodePort地址访问

轻松掌握k8s的kubectl使用命令行操作Service知识点02

同样可以使用yaml文件形式,内容如下,使用 kubectl apply -f dd.yaml

apiVersion: v1
kind: Service
metadata:labels:app: my-depname: my-dep
spec:ports:- port: 8000protocol: TCPtargetPort: 80selector:app: my-deptype: NodePort

轻松掌握k8s的kubectl使用命令行操作Service知识点02

这个端口生成是随机的,范围如下:

轻松掌握k8s的kubectl使用命令行操作Service知识点02

相当于在这个应用的所有副本都开了30948端口,所以使用任意台机器的IP地址加该端口都能访问到。