Skip to content

Latest commit

 

History

History
136 lines (95 loc) · 4.44 KB

README-zh.md

File metadata and controls

136 lines (95 loc) · 4.44 KB

Polaris Sidecar

English | 中文

介绍

polaris-sidecar 作为 polaris 的本地边车代理,提供两个可选功能模式:

  • 本地 DNS:使用 DNS 解析的方式访问北极星上的服务
  • 服务网格:通过劫持流量的方式实现服务发现和治理,开发侵入性低

用户可以选择其中一种模式进行接入polaris-sidecar,本文档介绍如何在虚拟机或者容器环境中安装和使用 polaris-sidecar。

本地DNS模式

架构图

架构图

提供功能

  • 基于DNS的服务发现能力:直接通过域名<service>.<namespace>进行拉取服务实例地址列表。
  • 故障节点剔除能力:自动剔除不健康和隔离实例,保障业务可靠性。
  • 标签路由能力:通过配置标签,通过标签筛选并返回满足标签规则的服务实例地址列表。

当前支持的DNS请求类型

  • A/AAAA
  • SRV

安装说明

前提条件

虚拟机环境下安装

  1. 虚拟机安装过程需要使用root用户或者具有超级管理员权限的用户来执行,并且确保53(udp/tcp)端口没有被占用。
  2. 需要从Releases下载最新版本的安装包。
  3. 上传安装包到虚拟机环境中,并进行解压,进入解压后的目录。
unzip polaris-sidecar-release_$version.$os.$arch.zip
  1. 修改polaris-sidecar.yaml,写入北极星服务端的地址,端口号使用8091(GRPC端口)。
polaris
  addresses:
    - 127.0.0.1:8091
  1. 进入解压后的目录,执行tool/start.sh进行启动,然后执行tool/p.sh查看进程是否启动成功。
# bash tool/start.sh
# bash ./tool/p.sh
root     15318     1  0 Jan22 ?        00:07:50 ./polaris-sidecar start
  1. 修改/etc/resolv.conf,在文件中添加nameserver 127.0.0.1,并且添加到所有的nameserver记录前面,如下:
; generated by /usr/sbin/dhclient-script
nameserver 127.0.0.1
nameserver x.x.x.x
  1. 验证安装,使用格式为<service>.<namespace>的域名进行访问,可以获得服务的IP地址。
# dig polaris.checker.polaris

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.2 <<>> polaris.checker.polaris
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10696
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;polaris.checker.polaris. IN        A

;; ANSWER SECTION:
polaris.checker.polaris. 10 IN AAAA ::ffff:1.1.1.1

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Jan 26 00:21:34 CST 2022
;; MSG SIZE  rcvd: 127

备注:如果需要使用域名的方式进行服务发现,则必须保证命名空间和服务名在北极星上都是以全小写字母进行注册,否则会寻址失败。

容器环境下安装

polaris-sidecar镜像是归档到dockerhub中,需要确保部署的环境网络可以访问dockerhub公有镜像仓库。

  1. 参考 polaris-controller 文档
  2. 验证安装,通过执行一个小型的job来进行dns解析的验证:
$ kubectl apply --filename deploy/job/job.yaml
  1. 部署job之后的POD详细如下 deploy_job
  2. job运行完后,可以通过查询POD日志确认运行情况。默认情况下,会输出成功的服务DNS查询结果,如果出现错误,则DNS配置可能出现问题。
# dig polaris.checker.polaris

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.2 <<>> polaris.checker.polaris
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10696
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;polaris.checker.polaris. IN        A

;; ANSWER SECTION:
polaris.checker.polaris. 10 IN AAAA ::ffff:1.1.1.1

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Jan 26 00:21:34 CST 2022
;; MSG SIZE  rcvd: 127