kubernetes假设pod可与其他pod通信,不管他们在哪个主机上
kubernetes给每一个Pod分配一个集群私有ip地址
没必要在pod与pod之间创建链接或将容器的端口映射到主机端口
同一个pod内的所有容器都能通过localhost上的端口互相连通
集群中的所有pod也不需要通过nat转换就能够互相看到
创建Service
有一组在一个扁平的,集群范围的地址空间中运行nginx服务的pod
我们虽然可以直接链接到某个pod,但是如果某个节点关机,pod会终止,deployment内的replicaset将创建新的Pod,且使用不同的Ip,基于这种情况,所以要提出service
kubernetes service是集群中提供相同功能的一组pod的抽象表达
kubernetes service是集群中提供相同功能的一组pod的抽象表达
当每个service创建时,会被分配一个唯一的Ip地址,也称为clusterip
clusterip地址与service的生命周期绑定在一起,只要service存在,它就不会改变
只要service存在,它就不会改变
可以配置pod使它与service进行通信
pod知道与service通信将被自动的负载均衡到该service中的某些pod上
使用expose命令为nginx副本创建service
kubectl expose deployment/my-nginx
apiVersion: v1
kind: Service
metadata:
name: my-nginx
labels:
run: my-nginx
spec:
ports:
- port: 80
protocol: TCP
selector:
run: my-nginx
创建的Service会将具有标签run:my-nginx的Pod的TCP 80端口暴露到一个抽象的Service端口上
暴露service
将service暴露在一个外部ip地址有两种方式
NodePort和LoadBanlancer