centos7下kubernetes(12。kubernetes-service)

Service:定义了一个服务得访问入口地址,前端的应用通过这个入口地址访问其背后得一组由pod副本组成的集群实例;

service与后端的pod副本集群之间则是通过label selector来实现无缝对接

每个service分配了一个全局唯一的虚拟IP地址,这个虚拟IP被称为Cluster IP

service从逻辑上代表了一组pod,具体是哪些pod则是由label来挑选。service由自己的IP,而且是不变的,客户端只需要访问serviceIP。无论后端pod如何变化,对客户端不会有任何影响,因为service没变。

举个例子:

创建一个deployment

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: httpd
spec:
  replicas: 3
  template:
    metadata:
      labels:
        run: httpd
    spec:
      containers:
      - name: httpd
        image: httpd
        ports:
        - containerPort: 80

centos7下kubernetes(12。kubernetes-service)

启动了三个pod,运行httpd镜像,label是run:httpd ,service将会用这个label来挑选pod

centos7下kubernetes(12。kubernetes-service)

pod分配了各自的IP,这些IP只能被kubernetes Cluster中的容器和节点访问

centos7下kubernetes(12。kubernetes-service)

接下来创建service

apiVersion: v1
kind: Service
metadata:
  name: httpd-svc
spec:
  selector:
    run: httpd
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 80

centos7下kubernetes(12。kubernetes-service)

1.v1是service的apiversion

2.当前资源类型是service

3.service的名字是httpd-svc

4.selector知名挑选那些label为run:httpd的pod作为service后端的

5.将service的8080端口映射到pod的80端口,使用了TCP协议

执行kubectl apply创建service httpd-svccentos7下kubernetes(12。kubernetes-service)

查看service   kubectl  get service

centos7下kubernetes(12。kubernetes-service)

httpd-svc 分配到了一个cluster-IP10.105.215.156,可以通过该IP访问后端的pod

centos7下kubernetes(12。kubernetes-service)

我们注意到除了httpd-svc这个service,还有一个kubernetes的service,这个是cluster内部通过这个service访问kubernetes API server

通过kubectl describe service httpd-svc 查看service与pod的关系

centos7下kubernetes(12。kubernetes-service)

上一篇:侯捷STL学习(四)--allocator和容器时间的实现关系


下一篇:SQLSERVER事务日志已满 the transaction log for database 'xx' is full