本文介绍了GET_HOSTS_FROM变量的值是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在关注Kubernetes教程: https://kubernetes.io/docs/tutorials/stateless-application/guestbook/#creating-the-redis-master-service

I am following Kubernetes tutorial: https://kubernetes.io/docs/tutorials/stateless-application/guestbook/#creating-the-redis-master-service

但是我不明白这句话.在前端部署中,有GET_HOSTS_FROM变量.其值为"dns".是要进一步评估还是保留为"dns"?

However there is one line i do not understand. In frontend-deployment there is GET_HOSTS_FROM variable. Its value is "dns". Is it evaluated further or does it remain as "dns"?

这是整个对应的Yaml:

This is the whole corresponding yaml:

#application/guestbook/frontend-deployment.yaml 

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: frontend
  labels:
    app: guestbook
spec:
  selector:
    matchLabels:
      app: guestbook
      tier: frontend
  replicas: 3
  template:
    metadata:
      labels:
        app: guestbook
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: gcr.io/google-samples/gb-frontend:v4
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        env:
        - name: GET_HOSTS_FROM
          value: dns
          # Using `GET_HOSTS_FROM=dns` requires your cluster to
          # provide a dns service. As of Kubernetes 1.3, DNS is a built-in
          # service launched automatically. However, if the cluster you are using
          # does not have a built-in DNS service, you can instead
          # access an environment variable to find the master
          # service's host. To do so, comment out the 'value: dns' line above, and
          # uncomment the line below:
          # value: env
        ports:
        - containerPort: 80

推荐答案

GET_HOSTS_FROM的值不再进行评估-仍为"dns".

The value for the GET_HOSTS_FROM isn't evaluated any further - it remains as "dns".

在应用程序的源代码中此处GET_HOSTS_FROM用于确定Redis主服务器和从服务器的主机是否来自环境,或者默认为主要从属:

Looking at the application's source code here, GET_HOSTS_FROM is used to determine if the hosts for the Redis primary and slave will come from the environment or, by default, be the Kubernetes service names for the primary and the slave:

  $host = 'redis-master';
  if (getenv('GET_HOSTS_FROM') == 'env') {
    $host = getenv('REDIS_MASTER_SERVICE_HOST');
  }

当主机名是Kubernetes服务名时,将使用集群的 DNS .

When the host names are Kubernetes Service names, they will be resolved using cluster's DNS.

值得一提的是Pod如何在相同或不同命名空间中引用服务(摘录是从上面给出的文档的链接):

It is worth mentioning how pods can reference Services in the same vs. a different namespace (the excerpt is from the link to the docs given above):

这篇关于GET_HOSTS_FROM变量的值是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 02:54