一、背景
通过pod控制器Deployment创建的一组Pod来提供具有高可用性的服务。虽然每个Pod都会分配一个单独的Pod IP,然而却存在如下两问题:
- pod重建后,pod的ip会发生变化
- pod的ip仅仅是集群内可以访问的虚拟ip,外部无法访问
因此,kubernetes设计了Service来解决这个问题。Service可以看作是一组同类Pod对外的访问接口。借助Service,应用可以方便地实现服务发现和负载均衡。
二、创建集群内可以访问的service
#暴露service --pod
kubectl expose pod nginx-pod --type=ClusterIP --name=nginx-pod-svc --port=80 --target-port=80 -n test
#暴露service --deploy
kubectl expose deploy nginx-deploy --type=ClusterIP --name=nginx-deploy-svc --port=80 --target-port=80 -n test
三、创建外部可以访问的service
#创建外部也可以访问的Service,需要修改type为NodePort
kubectl expose pod nginx-pod --name=nginx-pod-svc2 --port=80 --target-port=80 --type=NodePort -n test
四、删除service
kubectl delete svc nginx-pod-svc -n test