K8s内部反向代理~ClusterIP Service
文章目录1.内部服务之间如何相互访问?2.传统内部反向代理3.K8s内部反向代理4.编写Mysql Pod5.编写Mysql Service6.编写PetClinic Deployment7.编写PetClinic Service8.应用资源配置清单9.校验PetClinic应用正常启动10.校验PetClinic应用11.总结1.内部服务之间如何相互访问?为了解决集群内Pod相互访问,我们需要引
文章目录
1.内部服务之间如何相互访问?
为了解决集群内Pod相互访问,我们需要引入一个反向代理服务。
2.传统内部反向代理
在传统的数据中心,除了在网络边界部署反向代理,其实在内部也可以部署反向代理服务,来实现内部服务之间的反向路由与负载均衡调用,内部服务发现的做法有很多,除了部署负载均衡之外,还可部署服务注册中心+客户端配合的方式,例如Eureka+Ribbon
3.K8s内部反向代理
在K8S集群内部,服务之间互联也可以走Service代理,不过type采用ClusterIP,k8s会自动分配一个ClusterIP,有了这个IP之后,集群内部的Pod就可以通过这个IP,来访问目标服务,同时内部的Service同样具备屏蔽后端Pod ip的变化及负载均衡机制,其实在不通场景下部署Cluserip时也会发生变化,为了保证Cluster ip的变化,在k8s集群内部调用一般采用服务名称,运行时,k8s内部域名解析机制,会解析出服务名称对应的Cluster ip,本次Petclinic项目可对接嵌入式数据库,也可对接独立的数据库MySQL
4.编写Mysql Pod
[root@k8s7-200.host.com /data/k8s-yaml/k8s-msa-in-action/ch05/08]# cat mysql-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: mysql
labels:
app: mysql
spec:
containers:
- name: mysql
image: harbor.od.com/bobo/mysql:5.7.30
env:
- name: MYSQL_ROOT_PASSWORD
value: petclinic
- name: MYSQL_DATABASE
value: petclinic
一般在生产环境中将一些敏感信息存储在ConfigMap或者Secret,当然,MySQL一般也不会交付到我们的K8S环境中,会使用独立的数据库集群服务。
5.编写Mysql Service
[root@k8s7-200.host.com /data/k8s-yaml/k8s-msa-in-action/ch05/08]# cat mysql-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
selector:
app: mysql
ports:
- name: tcp
port: 3306
targetPort: 3306
type: ClusterIP
6.编写PetClinic Deployment
spring-petclinic-mono项目源码:https://github.com/chengyinwu-hash/spring-petclinic-mono
[root@k8s7-200.host.com /data/k8s-yaml/k8s-msa-in-action/ch05/08]# cat petclinic-dp.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: petclinic
spec:
selector:
matchLabels:
app: petclinic
replicas: 1
template:
metadata:
labels:
app: petclinic
spec:
containers:
- name: petclinic
image: harbor.od.com/bobo/spring-petclinic:1.0.1.RELEASE
env:
- name: SPRING_PROFILES_ACTIVE
value: mysql
- name: DATASOURCE_URL
value: jdbc:mysql://mysql/petclinic
- name: DATASOURCE_USERNAME
value: root
- name: DATASOURCE_PASSWORD
value: petclinic
- name: DATASOURCE_INIT_MODE
value: always
7.编写PetClinic Service
8.应用资源配置清单
运行mysql pod和service
[root@k8s7-22.host.com ~]# kubectl apply -f http://k8s-yaml.od.com/k8s-msa-in-action/ch05/08/mysql-pod.yaml
pod/mysql created
[root@k8s7-22.host.com ~]# kubectl apply -f http://k8s-yaml.od.com/k8s-msa-in-action/ch05/08/mysql-svc.yaml
service/mysql created
运行petclinic deployment和service
[root@k8s7-22.host.com ~]# kubectl apply -f http://k8s-yaml.od.com/k8s-msa-in-action/ch05/08/petclinic-dp.yaml
deployment.apps/petclinic created
[root@k8s7-22.host.com ~]# kubectl apply -f http://k8s-yaml.od.com/k8s-msa-in-action/ch05/08/petclinic-svc.yaml
service/petclinic created
9.校验PetClinic应用正常启动
10.校验PetClinic应用
11.总结
更多推荐
所有评论(0)