k8s学习第12天
Service
Service的主要功能用提供服务网格功能,通过service能够为客户端应用提供稳定的访问地址和负载均衡能力,以及屏蔽后端Endpoint的变化,是k8s实现微服务的核心资源。下面给出案例:
pod集群
启动了两个tomcat副本
apiVersion: apps/v1
kind: Deployment
metadata:name: webapp
spec:replicas: 2selector:matchLabels:app: webapptemplate:metadata:labels:app: webappspec:containers:- name: webappimage: kubeguide/tomcat-app:v1ports:- containerPort: 8080
kubectl get pods -l app=webapp -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
webapp-5759bc56f7-9cbzl 1/1 Running 0 24m 192.168.61.30 scms01
webapp-5759bc56f7-t8z62 1/1 Running 0 24m 192.168.61.31 scms01
分别访问2个机器的地址
curl 192.168.61.30:80
...curl 192.168.61.31:80
Apache Tomcat/8.0.35
...
创建service
- expose
-
kubectl expose deployment webapp - 使用yaml文件
-
apiVersion: v1 kind: Service metadata:name: webapp spec:ports:#通信协议 - protocol: TCP#service的端口port: 8080#目标端口targetPort: 8080selector:#选择对应的标签app: webapp ~[root@scms01 day10]# kubectl get svc |grep webapp webapp ClusterIP 10.97.164.748080/TCP 21m [root@scms01 day10]# 直接访问这个地址就可以实现负载均衡
curl 10.97.164.74:8080如果pod列表出现变化,则k8s会实时更新service对应的后端pod列表。一个service对应的后端由pod和IP和容器端口号组成,即一个完整的IP:PORT访问地址,这在k8s中叫Endpoint
-
查看Endpoint列表
-
[root@scms01 day10]# kubectl describe svc webapp Name: webapp Namespace: default Labels:Annotations: Selector: app=webapp Type: ClusterIP IP Family Policy: SingleStack IP Families: IPv4 IP: 10.97.164.74 IPs: 10.97.164.74 Port: 8080/TCP TargetPort: 8080/TCP Endpoints: 192.168.61.30:8080,192.168.61.31:8080 Session Affinity: None Events:
实际上,k8s会自动创建service和Endpoint资源对象的关联关系,通过一下命令查看
[root@scms01 day10]# kubectl get endpoints |grep webapp
webapp 192.168.61.30:8080,192.168.61.31:8080
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
