Bootstrap

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

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地址加该端口都能访问到。

;