k8s学习第12天

Service

Service的主要功能用提供服务网格功能,通过service能够为客户端应用提供稳定的访问地址和负载均衡能力,以及屏蔽后端Endpoint的变化,是k8s实现微服务的核心资源。下面给出案例:

pod集群

启动了两个tomcat副本

apiVersion: apps/v1
kind: Deployment
metadata:
   name: webapp
spec:
   replicas: 2
   selector:
     matchLabels:
       app: webapp
   template:
       metadata:
          labels:
            app: webapp
       spec:
          containers:
          - name: webapp
            image: kubeguide/tomcat-app:v1
            ports:
            - 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   <none>           <none>
webapp-5759bc56f7-t8z62   1/1     Running   0          24m   192.168.61.31   scms01   <none>           <none>

分别访问2个机器的地址

 curl 192.168.61.30:80
...
 curl 192.168.61.31:80



<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Apache Tomcat/8.0.35</title>
        <link href="favicon.ico" rel="icon" type="image/x-icon" />
        <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
        <link href="tomcat.css" rel="stylesheet" type="text/css" />
    </head>

    <body>
...

创建service

  •  expose
  • kubectl expose deployment webapp

  • 使用yaml文件
  • apiVersion: v1
    kind: Service
    metadata:
       name: webapp
    spec:
    
       ports:
       #通信协议   
       - protocol: TCP
         #service的端口
         port: 8080
         #目标端口
         targetPort: 8080
       selector:
         #选择对应的标签
         app: webapp
    ~                 
    [root@scms01 day10]# kubectl get svc |grep webapp
    webapp          ClusterIP   10.97.164.74     <none>        8080/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:            <none>
    Annotations:       <none>
    Selector:          app=webapp
    Type:              ClusterIP
    IP Family Policy:  SingleStack
    IP Families:       IPv4
    IP:                10.97.164.74
    IPs:               10.97.164.74
    Port:              <unset>  8080/TCP
    TargetPort:        8080/TCP
    Endpoints:         192.168.61.30:8080,192.168.61.31:8080
    Session Affinity:  None
    Events:            <none>

实际上,k8s会自动创建service和Endpoint资源对象的关联关系,通过一下命令查看

[root@scms01 day10]# kubectl get endpoints |grep  webapp
webapp          192.168.61.30:8080,192.168.61.31:8080  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值