zoukankan      html  css  js  c++  java
  • 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插件来提供服务。

  • 相关阅读:
    用iptables封杀内网的bt软件
    FreeBSD 利用IPFW实现限制局域网使用QQ
    网络安全设备Bypass功能介绍及分析
    活用Windows Server 2008系统的几种安全功能
    恢复mysql管理员密码
    远程控制Windows2003下安装Pcanywhere导致Awgina.dll出错的解决办法
    Ubuntu 11.04 LAMP+JSP环境安装过程
    hbase首次导入大批次的数据成功!
    Chubby是什么?
    DP-Triangle
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/10019391.html
Copyright © 2011-2022 走看看