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地址