一、Services作用
我们已经能够通过Deployment来创建一组Pod来提供具有高可用性的服务。虽然每个Pod都会分配一个单独的Pod IP,然而却存在如下两个问题:
- Pod IP仅仅是集群内可见的虚拟IP,外部无法访问。
- Pod IP会随着Pod的销毁而消失,当ReplicaSet对Pod进行动态伸缩时,Pod IP可能随时随地都会变化,这样对于我们访问这个服务带来了难度。
service是一组pod的服务抽象,相当于一组pod的LB,负责将请求分发给对应的pod。service会为这个LB提供一个IP,一般称为cluster IP 。使用Service对象,通过selector进行标签选择,找到对应的Pod
二、Svc的创建(关联对应的deployment)
1、yaml文件
apiVersion: v1
kind: Service
metadata:
name: myblog
namespace: kang
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8002
selector:
app: myblog #此处需与deployment的标签选择器一致
type: ClusterIP
2、创建查看状态
三、为mysql deployment 创建svc(用于app应用直接通过svc name 访问)
1、mysql svc 文件
apiVersion: v1
kind: Service
metadata:
name: mysql
namespace: kang
spec:
ports:
- port: 3306
protocol: TCP
targetPort: 3306
selector:
app: mysql #此处需与mysql deployment的标签选择器一致
type: ClusterIP