Kubernetes Cluster IP Service 内部反向代理

后台应用间通信的传统反向代理

在这里插入图片描述

后台应用间通信的K8S反向代理

在这里插入图片描述

实验文件

本实验要创建两个POD,两个服务。下面开始准备发布文件。

  1. mysql-pod.yml - pod有状态的应用,一般只部署一个pod。实际生产环境,对可用性可靠新要求高的服务,一般不部署在K8S环境当中,而是独立的使用数据库服务。
  2. mysql-service.yml
  3. petclinic-deployment.yml - pod无状态
  4. petclinic-service.yml

mysql-pod.yml内容如下:

apiVersion: v1
kind: Pod
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  containers:
    - name: mysql
      #mysql官方5.7镜像
      image: mysql:5.7
      env:
        #支持启动的时候配置数据库
        - name: MYSQL_ROOT_PASSWORD
          #root用户密码,实际生产环境要配置在ConfigMap/Secret中。
          value: petclinic
        - name: MYSQL_DATABASE
          #创建数据库
          value: petclinic

mysql-service.yml文件内容如下:

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  selector:
    app: mysql
  ports:
    - name: tcp
      port: 3306
      targetPort: 3306
  type: ClusterIP

petclinic-deployment.yml文件内容如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: petclinic
spec:
  replicas: 1
  selector:
    matchLabels:
      app: petclinic
  template:
    metadata:
      labels:
        app: petclinic
    spec:
      containers:
      - name: petclinic
        # Run this image
        image: spring2go/spring-petclinic:1.0.0.RELEASE
        env:
          - name: SPRING_PROFILES_ACTIVE
            value: mysql
          - name: DATASOURCE_URL
            # 直接使用服务名mysql,即://后面的mysql,后面为数据库名。
            value: jdbc:mysql://mysql/petclinic
          - name: DATASOURCE_USERNAME
            value: root
          - name: DATASOURCE_PASSWORD
            value: petclinic
          - name: DATASOURCE_INIT_MODE
            value: always

petclinic-service.yml内容如下:

apiVersion: v1
kind: Service
metadata:
  # Unique key of the Service instance
  name: petclinic
spec:
  ports:
    # Accept traffic sent to port 80
    - name: http
      # port为集群内部服务前通信的端口
      port: 8080
      targetPort: 8080
      nodePort: 31080
  selector:
    # 下面标签app: petclinic表示本服务会路由指向所有app标签为petclinic的pod。
    app: petclinic
  type: NodePort

发布命令

由于petclinic应用依赖mysql,所以应该先启动mysql。

kubectl get all
#如果本地没有mysql镜像,还需要下载镜像,时间会长点
kubectl apply -f mysql-pod.yml
kubectl apply -f mysql-service.yml
kubectl get all

kubectl apply -f petclinic-deployment.yml
kubectl apply -f petclinic-service.yml

kubectl get all

查看petclinic应用日志

校验petclinic应用是否正常启动。

kubectl get all
#复制petclinic Pod Name

kubectl logs pod_name
#查看日志

浏览器校验 http://localhost:31080

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值