• Docker Kubernetes 服务发现原理详解


    Docker Kubernetes  服务发现原理详解

    服务发现支持Service环境变量和DNS两种模式:

    一、环境变量 (默认)

    当一个Pod运行到Node,kubelet会为每个容器添加一组环境变量,Pod容器中程序就可以使用这些环境变量发现Service。

    环境变量名格式如下:

    {SVCNAME}_SERVICE_HOST
    {SVCNAME}_SERVICE_PORT

    注:其中服务名和端口名转为大写,连字符转换为下划线。

    限制:

    1)Pod和Service的创建顺序是有要求的,Service必须在Pod创建之前被创建,否则环境变量不会设置到Pod中。

    2)Pod只能获取同Namespace中的Service环境变量。

    案例:

    # 查看容器内的变量
    kubectl exec nginx-deployment-66579795d7-2thc9 env
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    HOSTNAME=nginx-deployment-66579795d7-2thc9
    NGINX_SERVICE_PORT=88
    NGINX_SERVICE_PORT_888_TCP_PROTO=tcp
    NGINX_SERVICE_PORT_888_TCP_ADDR=10.10.10.11
    KUBERNETES_PORT=tcp://10.10.10.1:443
    NGINX_PORT_88_TCP_PORT=88
    NGINX_DEPLOYMENT_SERVICE_HOST=10.10.10.12
    NGINX_DEPLOYMENT_PORT_80_TCP=tcp://10.10.10.12:80
    NGINX_SERVICE2_SERVICE_HOST=10.10.10.39
    HOME=/root
    ...
    环境变量

    注:Kubernetes将信息通过变量存入容器中

    注:每个容器间的通信地址都会再容器创建时记录到容器当中。


    二、DNS(推荐)

    DNS服务监视Kubernetes API,为每一个Service创建DNS记录用于域名解析。这样Pod中就可以通过DNS域名获取Service的访问地址。

    DNS服务发现

    放入kuber cstenmu默认的系统命名空间中。

    部署:www.kubernetes.io

    注:DNS需要下载DNS插件来提供服务。

  • 相关阅读:
    程序开发
    主方法
    日志
    node.js
    二维互换
    前台打断点
    具体的后台断点快捷键
    Jenkins
    断点
    循环
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/10019391.html
Copyright © 2020-2023  润新知