如何体验Service所提供的功能

发布时间:2021-11-24 16:32:20 作者:柒染
来源:亿速云 阅读:143

这篇文章给大家介绍如何体验Service所提供的功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

创建

创建Service对象时,Kubernetes会根据spec.selector来查找拥有指定标签的Pod,查找到Pod就维护一组拓扑关系,如果查找不到也不会自动创建Pod(配置中没有Pod模版),所以本例中用到的Pod对象需要单独创建,在开始之前,假定我们已使用前面介绍Deployment时使用的配置创建了一组label为app: nginxPod对象,这些Pod通过端口80对外提供服务。

首先,我们将以下配置保存到名为service.yaml的文件中:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

然后,创建Service对象:

[root@ecs-d8b6 manifests]# kubectl create -f service.yaml 
service/nginx-service created

查看

接着查看刚刚创建的Service对象:

[root@ecs-d8b6 manifests]# kubectl get services nginx-service -o wide
NAME            TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE   SELECTOR
nginx-service   ClusterIP   10.0.0.83    <none>        80/TCP    56s   app=nginx

命令行输出中各字段含义如下:

当前Kubernetes支持多种Service类型,来应对不同的使用场景:

查看Pod 拓扑

尽管Service会通过selector来查找Pod,但查找到的Pod信息并不直接记录到Service对象中,而是记录到一个Endpoints对象中,进一步说当创建Service对象时,Kubernetes还会创建一个同名的Endpoints对象,来记录后端的Pod拓扑。 关于Endpoints,我们会在后续的章节中详细介绍,此处仅做初步介绍。

查看随Service一并创建的Endpoints对象:

[root@ecs-d8b6 manifests]# kubectl get endpoints nginx-service 
NAME            ENDPOINTS                                   AGE
nginx-service   172.17.0.4:80,172.17.0.5:80,172.17.0.6:80   20m

可以看到,该Endpoints对象记录了Service匹配到的所有Pod地址。

访问Service

在集群内部,可以直接访问ServiceCluster IP,流量将会被自动转发到后端的某个Pod中:

[root@ecs-d8b6 manifests]# curl 10.0.0.83
<!DOCTYPE html>
<html>
<head>
...
</head>
<body>
<h2>Welcome to nginx!</h2>
...
</body>
</html>

更新

当更新Servicespec.selector时,Kubernetes会自动按照新的spec.selector配置查找Pod,并更新Endpoints对象。

使用kubectl edit service nginx-service命令来修改Service,并指定一个无法匹配到任何Podspec.selector,可以看到 Endpoints对象中的Pod拓扑信息也会相应地消失掉,如下所示:

[root@ecs-d8b6 manifests]# kubectl get endpoints nginx-service 
NAME            ENDPOINTS   AGE
nginx-service   <none>      31m

删除

当删除Service对象时,随Service对象创建而自动创建的Endpoints对象也会一并删除,后端的Pod不会被删除,它仍然受相应的Pod控制器管理。

[root@ecs-d8b6 manifests]# kubectl delete service nginx-service 
service "nginx-service" deleted
[root@ecs-d8b6 manifests]# kubectl get endpoints nginx-service
Error from server (NotFound): endpoints "nginx-service" not found
[root@ecs-d8b6 manifests]# kubectl get pods 
NAME                               READY   STATUS    RESTARTS   AGE
nginx-deployment-5f67bd6bb-9nspj   1/1     Running   0          37m
nginx-deployment-5f67bd6bb-hl8xw   1/1     Running   0          37m
nginx-deployment-5f67bd6bb-pkv7h   1/1     Running   0          37m

关于如何体验Service所提供的功能就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. zookeeper客户端功能体验
  2. Oracle 12.2提供了什么功能

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

service

上一篇:微信小程序实战中位置闹铃如何利用条件渲染实现列表控件

下一篇:如何进行Service的分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》