1.4.9

每个service其实就是我们常提及的“微服务”
服务非常非常关键!!!

每个POD都会被分配一个单独的IP地址
而且每个POD都提供了一个独立的ENpoint(Pod IP + ContainnerPort)以被客户访问

[root@localhost conf]# cat tomcat-service.yaml 
apiVersion: v1
kind: Service
metadata:
  name: tomcat-service
spec:
  ports:
  - port: 8080
  selector:
    tier: frontend

[root@localhost conf]# 

kubectl create -f tomcat-serviceyaml

kubectl get endpoints
kubectl get svc tomcat-service -o yaml
[root@localhost conf]# kubectl get svc tomcat-service -o yaml
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: 2021-04-23T10:10:23Z
  name: tomcat-service
  namespace: default
  resourceVersion: "300378"
  selfLink: /api/v1/namespaces/default/services/tomcat-service
  uid: 1e1fb6d1-a41c-11eb-9e43-000c29ec1634
spec:
  clusterIP: 10.254.244.96
  ports:
  - port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    tier: frontend
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}
[root@localhost conf]#




service的多端口问题:
比如说一个tomcat的HTTP SHUTDOWN AJP端口等

[root@localhost conf]# kubectl get endpoints
NAME                      ENDPOINTS                         AGE
kubernetes                192.168.1.168:6443                4d
mysql                     172.17.0.3:3306                   4d
myweb                     172.17.0.2:8080                   4d
tomcat-service            172.17.0.4:8080                   1d
tomcat-service-mutiport   172.17.0.4:8080,172.17.0.4:8005   1m
[root@localhost conf]# kubectl get pods -o wide
NAME                       READY     STATUS    RESTARTS   AGE       IP           NODE
frontend-141477217-bc4fk   1/1       Running   0          1d        172.17.0.4   127.0.0.1
mysql-dsnp6                1/1       Running   0          4d        172.17.0.3   127.0.0.1
myweb-l9gcj                1/1       Running   0          4d        172.17.0.2   127.0.0.1
[root@localhost conf]# 

kubernetes的服务发现机制:
早期的环境变量/add=on

外部系统访问servce的问题
需要弄明白kubernetes里的三种IP
*Node IP:Node节点的IP地址
*Pod IP:POD的IP地址
*Cluster IP::service的IP地址