代码之家  ›  专栏  ›  技术社区  ›  Don Rhummy

为什么我的externalName类型服务配置在Kubernetes中不起作用?

  •  0
  • Don Rhummy  · 技术社区  · 4 年前

    • 命名空间:应用层
      • rest应用程序
      • 数据库服务外部名称
      • 数据库服务

    当我尝试从 rest-app ,我得到错误:

    MySql.Data.MySql客户端.MySqlException(0x80004005):无法连接到任何指定的MySQL主机。 ---&燃气轮机;System.AggregateException异常:发生一个或多个错误。(名称或服务未知)

    db-service 作为服务名称,并具有正确的user/pass。

    数据库服务

    apiVersion: v1
    kind: Service
    metadata:
      name: db-service
      namespace: data-layer
    spec:
      selector:
        app: db-service
      ports:
       - port: 3306
      clusterIP: None
    

    数据库服务外部名称

    apiVersion: v1
    kind: Service
    metadata:
      name: db-service
      namespace: app-layer
    spec:
      type: ExternalName
      externalName: db-service.data-layer.service.cluster.local
      ports:
        - port: 3306
    

    rest应用程序

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: rest-app
      namespace: app-layer
      labels:
        app: rest-app
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: rest-app
      template:
        metadata:
          labels:
            app: rest-app
        spec:
          containers:
            - name: rest-app
              image: restapp:latest
              imagePullPolicy: Always
              ports:
                - containerPort: 5000
              env:
                # These are from a secret I defined, and the logs show
                # the rest app gets them correctly
                - name: MYSQL_ROOT_USERNAME
                  valueFrom:
                    secretKeyRef:
                      name: db-credentials
                      key: db-username
                - name: MYSQL_ROOT_PASSWORD
                  valueFrom:
                    secretKeyRef:
                      name: db-credentials
                      key: db-password
                # I hard-coded this to the externalName I created. 
                # Is that right?
                - name: MYSQL_URL
                  value: db-service
    

    • 在应用层名称空间中创建externalName正确吗?
    • 我需要用不同的定义吗?
    • docker容器中的C#应用程序是否可以不引用 哪个是externalName服务的名称?
    1 回复  |  直到 4 年前
        1
  •  2
  •   Don Rhummy    4 年前

    这个 ExternalName 服务类型如下。注意用法 svc service .

    apiVersion: v1
    kind: Service
    metadata:
      name: db-service
      namespace: app-layer
    spec:
      type: ExternalName
      externalName: db-service.data-layer.svc.cluster.local
      ports:
        - port: 3306