当前位置:   article > 正文

Kubernetes Cluster IP Service 内部反向代理_kubectl内部代理

kubectl内部代理

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

在这里插入图片描述

后台应用间通信的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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

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

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  selector:
    app: mysql
  ports:
    - name: tcp
      port: 3306
      targetPort: 3306
  type: ClusterIP
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

发布命令

由于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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/764501
推荐阅读
相关标签
  

闽ICP备14008679号