Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

server

This is the web server of domeos

部署DomeOS系统流程

(2016-03-25 update)

(2016-03-30 update start_node_centos.sh脚本更新,--monitor-transfer参数值可设置多个地址,agent镜像升级)

(2016-03-31 分离cluster-ip-range和flannel使用的ip段,SkyDNS添加--nameservers参数)

(2016-04-11 start_node_centos.sh和start_master_centos.sh添加主机IP地址选择策略,在多IP情况下优先选用内网IP)

(2016-04-23 update:

  1. 各个镜像时区统一设定为Asia/Shanghai;
  2. start_etcd.sh、start_node_centos.sh和start_master_centos.sh更新;
  3. 各镜像升级版本;
  4. ETCD升级至2.3.1版本;
  5. 各脚本、安装包等下载链接变更;
  6. 添加clean-k8s-resource.sh、stop-k8s-master.sh、stop-k8s-node.sh脚本;
  7. 各步骤添加是否安装成功测试;
  8. 监控模块去除dashboard组件;
  9. 添加docker容器方式启动DomeOS Server;
  10. 完善DomeOS Server全局配置说明;
  11. 更正监控模块的graph组件http和rpc的端口号)

STEP 01: 配置和启动ETCD集群

脚本: start_etcd.sh (http://deploy-domeos.bjcnc.scs.sohucs.com/start_etcd.sh)

配置文件: etcd_node_list.conf (http://deploy-domeos.bjcnc.scs.sohucs.com/etcd_node_list.conf)

可执行文件: etcd (http://deploy-domeos.bjcnc.scs.sohucs.com/etcd)

辅助文件: etcdctl (http://domeos-script.bjctc.scs.sohucs.com/etcdctl)

说明:

  1. 上面给出的下载链接etcd版本为2.3.1,也可根据需要使用其它版本的etcd。

  2. etcdctl主要用于后台查询和调试,非必需。

  3. 安装时需要将start_etcd.sh、etcd_node_list.conf、etcd放到同一目录下。

  4. 将用于部署ETCD集群的主机IP列表写入etcd_node_list.conf中,每行一个IP。

  5. 启动前请确认各主机的系统时间一致,如不一致请通过ntpdate进行校准,如 ntpdate ntp.sohu.com。

  6. 脚本中默认数据存储目录为脚本所在目录的etcd-data子目录下,默认peer port为4010,默认client port为4012,如果需要可以在脚本中的第二步进行修改。

  7. 如果主机中已安装过ETCD,则ETCD从低版本升级到高版本时,需要删除老数据文件(ETCD自身bug)。

  8. 使用方式:sudo sh start_etcd.sh <当前主机在etcd_node_list.conf中的位置,从1开始>。

  9. 还没启动所有节点时会报找不到未启动节点的错误,属正常现象,所有节点启动后将不报该错误。

样例:

etcd_node_list.conf文件内容如下:

10.11.151.97
10.11.151.100
10.11.151.101

则需要在10.11.151.97主机上执行sudo sh start_etcd.sh 1

在10.11.151.100主机上执行sudo sh start_etcd.sh 2

在10.11.151.101主机上执行sudo sh start_etcd.sh 3

测试:

通过" curl -L <结点IP>:<ETCD服务端口>/health "查看各个节点服务状态,如果返回的health为true说明该节点上的ETCD正常,如:

command: curl -L 10.11.151.97:4012/health
result : {"health": "true"}

参考:

ETCD官方地址(https://coreos.com/etcd/)

STEP 02: 配置和启动kubernetes master端

脚本: start_master_centos.sh (http://domeos-script.bjctc.scs.sohucs.com/start_master_centos.sh)

程序包: domeos-k8s-master.tar.gz (http://domeos-script.bjctc.scs.sohucs.com/domeos-k8s-master.tar.gz, 包含: flanneld, mk-docker-opts.sh, kube-apiserver, kube-controller-manager, kube-scheduler, kube-proxy, kubectl)

辅助脚本:

  1. change_hostname.sh (http://domeos-script.bjctc.scs.sohucs.com/change_hostname.sh)
  2. clean-k8s-resource.sh (http://domeos-script.bjctc.scs.sohucs.com/clean-k8s-resource.sh)
  3. stop-k8s-master.sh (http://domeos-script.bjctc.scs.sohucs.com/stop-k8s-master.sh)

说明:

  1. 脚本会对hostname进行检查,如果不符合DNS规范,请通过change_hostname.sh脚本对主机hostname进行修改。

  2. 脚本中安装docker时需要连接互联网,下载domeos-k8s-master.tar.gz需要连接互联网。如果所在主机无法访问外网,可先将domeos-k8s-master.tar.gz放到脚本所在目录,注释脚本中下载domeos-k8s-master.tar.gz的语句,并在本地安装完docker后再执行该脚本。

  3. 脚本成功执行后,将以systemctl的形式启动如下服务: flanneld, docker, kube-apiserver, kube-controller-manager, kube-scheduler, kube-proxy。

  4. 通过运行stop-k8s-master.sh可摘除master,docker和flannel也会被停止;如果需要在摘除前清理所有kubernetes启动的资源,可运行clean-k8s-resource.sh。

  5. --service-cluster-ip-range和--flannel-network-ip-range地址段不能有重叠。

参数说明:

--kube-apiserver-port: kubernetes apiserver 服务端口。默认8080
--etcd-servers: ETCD服务集群地址,各地址间以逗号分隔。必需
--service-cluster-ip-range: kubernetes集群service的可用地址范围。默认172.16.0.0/13
--flannel-network-ip-range: Flannel网络可用地址范围。默认172.24.0.0/13
--flannel-subnet-len: 分配给flannel结点的子网长度。默认22
--cluster-dns: 集群DNS服务的IP地址,注意不加端口号,IP地址需落在--service-cluster-ip-range范围内。默认172.16.40.1
--cluster-domain: 集群的search域。默认为domeos.local
--insecure-bind-address: kube-apiserver非安全访问服务地址。默认0.0.0.0
--insecure-port: kube-apiserver非安全访问服务端口。默认8080
--secure-bind-address: kube-apiserver非安全访问服务地址。默认0.0.0.0
--secure-port: kube-apiserver非安全访问服务端口。默认6443
--authorization-mode: 
--authorization-policy-file:
--basic-auth-file: 以上这三个参数均与kube-apiserver授权认证相关,具体含义参考kubernetes帮助文档。默认不加
--docker-graph-path: docker运行时的根路径,容器、本地镜像等会存储在该路径下,占用空间大,建议设置到大容量磁盘上。默认为脚本所在路径下的docker-graph目录
--insecure-docker-registry: 非安全连接的docker私有仓库,可以先设置该值而不用启动对应的registry。必需
--secure-docker-registry: 安全连接的docker私有仓库。默认为空
--docker-registry-crt: 如果设置了--secure-docker-registry,则该值必需,表示私有仓库的证书。

样例:

  1. 最简参数
sudo sh start_master_centos.sh --etcd-servers http://10.11.151.97:4012 --insecure-docker-registry 10.11.150.76:5000
  1. 最全参数
sudo sh start_master_centos.sh --kube-apiserver-port 8080 --etcd-servers http://10.11.151.97:4012,http://10.11.151.100:4012,http://10.11.151.101:4012 --service-cluster-ip-range 172.16.0.0/13 --flannel-network-ip-range 172.24.0.0/13 --flannel-subnet-len 22 --cluster-dns 172.16.40.1 --cluster-domain domeos.local --insecure-bind-address 0.0.0.0 --insecure-port 8080 --secure-bind-address 0.0.0.0 --secure-port 6443 --authorization-mode ABAC --authorization-policy-file /opt/domeos/openxxs/k8s-1.1.7-flannel/authorization --basic-auth-file /opt/domeos/openxxs/k8s-1.1.7-flannel/authentication.csv --docker-graph-path /opt/domeos/openxxs/docker --insecure-docker-registry 10.11.150.76:5000 --secure-docker-registry https://private-registry.sohucs.com --docker-registry-crt /opt/domeos/openxxs/k8s-1.1.7-flannel/registry.crt

测试:

通过"kubectl cluster-info"查看Kubernetes Master的状态,如果显示"Kubernetes master is running at http://localhost:8080"说明正常运行。

参考:

Kubernetes官方文档(http://kubernetes.io) Docker RPM包下载地址(https://yum.dockerproject.org/repo/main/centos/7/Packages/)

STEP 03: 配置和启动docker registry

启动方式: docker容器

镜像: pub.domeos.org/domeos/docker-registry-driver-sohustorage:1.0

命令:

sudo docker run --restart=always -d -p <_port>:5000 -e REGISTRY_STORAGE_SOHUSTORAGE_ACCESSKEY=<_access_key> -e REGISTRY_STORAGE_SOHUSTORAGE_SECRETKEY=<_secret_key> -e REGISTRY_STORAGE_SOHUSTORAGE_REGION=<_region> -e REGISTRY_STORAGE_SOHUSTORAGE_BUCKET=<_bucket> --name <_name> pub.domeos.org/domeos/docker-registry-driver-sohustorage:1.0

参数说明:

_port: 外部访问端口。
_access_key: 搜狐云台账户的accesskey。
_secret_key: 搜狐云台账户的secretkey。
_region: 搜狐云台存储空间所在地域。
_bucket: 搜狐云台存储空间名称。
_name: 容器名称。

说明:

  1. 该方式创建的私有仓库将对接到搜狐云存储(cs.sohu.com)上。

  2. 如果docker registry需要使用https安全访问,则加入如下额外参数: -v <主机certs目录所在路径>:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=<registry.crt文件路径> -e REGISTRY_HTTP_TLS_KEY=<registry.key文件路径>

  3. 若想启本地存储的私有仓库,可以直接使用官方的registry镜像,启动过程请参考https://hub.docker.com/_/registry/

样例:

sudo docker run --restart=always -d -p 5000:5000 -e REGISTRY_STORAGE_SOHUSTORAGE_ACCESSKEY=f5ynwwOZ2k2yT4+qxzmA6A== -e REGISTRY_STORAGE_SOHUSTORAGE_SECRETKEY=MUC9NeF8vXvt0y2f+6dIXA== -e REGISTRY_STORAGE_SOHUSTORAGE_REGION=bjcnc -e REGISTRY_STORAGE_SOHUSTORAGE_BUCKET=registry --name private-registry pub.domeos.org/domeos/docker-registry-driver-sohustorage:1.0

测试:

通过" curl -L http://<registry的服务地址>/v2/ "查看docker registry的运行状态,如果显示"{}"说明正常运行,如:

command: curl -L http://10.11.150.76:5000/v2/
result : {}

参考:

registry官方文档(https://hub.docker.com/_/registry/)

STEP 04: 配置和启动MySQL,并创建所需数据库和表结构

数据库:

domeos, graph (https://github.com/domeos/server/blob/v0.2-beta/DomeOS/src/main/resources/1.create-database.sh)

表结构:

domeos (https://github.com/domeos/server/blob/v0.2-beta/DomeOS/src/main/resources/create-db.sql) graph (https://github.com/domeos/server/blob/v0.2-beta/DomeOS/src/main/resources/graph-db-schema.sql)

初始用户:

insert-data.sql (https://github.com/domeos/server/blob/v0.2-beta/DomeOS/src/main/resources/insert-data.sql)

会创建一个DomeOS系统的超级管理员用户,user: admin pwd: admin

说明:

如果以非容器形式启动MySQL,需要在数据库中给--flannel-network-ip-range地址段以及--service-cluster-ip-rangeIP地址段授权。

STEP 05: 配置和启动监控相关组件

启动方式: docker容器

镜像:

  1. graph: pub.domeos.org/domeos/graph:0.5.7

  2. transfer: pub.domeos.org/domeos/transfer:0.0.15

  3. query: pub.domeos.org/domeos/query:1.5.1

命令:

graph: sudo docker run -d -v <_graph>:/home/work/data/6070 -e DB_DSN="\"<_graph_db_user>:<_graph_db_passwd>@tcp(<_graph_db_addr>)/graph?loc=Local&parseTime=true\"" --name graph -p <_graph_http_port>:6070 -p <_graph_rpc_port>:6071 --restart=always pub.domeos.org/domeos/graph:0.5.7

transfer: sudo docker run -d -e JUDGE_ENABLE="false" -e GRAPH_CLUSTER=<_graph_cluster> -p <_transfer_port>:8433 --name transfer --restart=always pub.domeos.org/domeos/transfer:0.0.15

query: sudo docker run -d -e GRAPH_CLUSTER=<_graph_cluster> -p <_query_port>:9966 --name query --restart=always pub.domeos.org/domeos/query:1.5.1

参数说明:

_graph: 数据文件存储路径。
_graph_db_user: 用于graph的MySQL数据库的用户名。
_graph_db_passwd: 用于graph的MySQL数据库的密码。
_graph_db_addr: 用于graph的MySQL数据库的地址,格式为IP:Port
_graph_http_port: graph服务http端口。
_graph_rpc_port: graph服务rpc端口。
_graph_cluster: graph服务数据结点,格式为键值对,多个结点间以逗号分隔。
_transfer_port: transfer服务端口。
_query_port: query服务端口。

说明:

  1. 参数中需要转义双引号的地方不能省略。

  2. transfer和graph可以启动多个。

  3. transfer和query的GRAPH_CLUSTER参数必须完全一致。

  4. 监控系统是在open-falcon基础上扩展而来,graph、transfer、query三个组件未做修改,详细配置可参考open-falcon文档。

样例:

graph: sudo docker run -d -v /opt/my/data:/home/work/data/6070 -e DB_DSN="\"domeos:xxxx@tcp(10.11.10.10:3307)/graph?loc=Local&parseTime=true\"" --name graph -p 6070:6070 -p 6071:6071 --restart=always pub.domeos.org/domeos/graph:0.5.7

transfer: sudo docker run -d -e JUDGE_ENABLE="false" -e GRAPH_CLUSTER="\"node-00\":\"10.11.54.13:6070\",\"node-01\":\"10.11.54.14:6070\"" -p 8433:8433 --name transfer --restart=always pub.domeos.org/domeos/transfer:0.0.15

query: sudo docker run -d -e GRAPH_CLUSTER="\"node-00\":\"10.11.54.13:6070\",\"node-01\":\"10.11.54.14:6070\"" -p 9967:9966 --name query --restart=always pub.domeos.org/domeos/query:1.5.1

测试:

通过" curl -s <graph/transfer/query的服务地址>/health "查看graph/transfer/query的运行状态,如果返回"ok"说明graph/transfer/query正常运行,注意graph中使用的是_graph_http_port端口,如:

command: curl -s 10.11.54.13:6071/health
result : ok

参考:

open-falcon官方文档(http://book.open-falcon.org/zh/intro/index.html)

STEP 06: 配置和启动DomeOS Server

非容器方式:

源码:

domeos/server (https://github.com/domeos/server/tree/v0.2-beta/DomeOS)

说明:

  1. 编译打包后设置如下环境变量再启动tomcat服务即可

    MYSQL_HOST: MySQL服务器的地址 MYSQL_PORT: MySQL服务端口 MYSQL_USERNAME: 用于登录MySQL服务器的用户名 MYSQL_PASSWORD: 用于登录MySQL服务器的密码 MYSQL_DB: DomeOS使用的数据库名

  2. 以非容器形式启动DomeOS Server需要单独启动WebSSH Server,具体启动方式见STEP 07

容器方式:

镜像: pub.domeos.org/domeos/server:1.2.3

命令:

sudo docker run -d --restart=always --name <_domeos_server_name> -p <_domeos_server_port>:8080 -e MYSQL_HOST=<_mysql_host> -e MYSQL_PORT=<_mysql_port> -e MYSQL_USERNAME=<_mysql_username> -e MYSQL_PASSWORD=<_mysql_password> -e MYSQL_DB=<_mysql_db> pub.domeos.org/domeos/server:1.2.3

参数说明:

_domeos_server_name: 容器的名字。
_domeos_server_port: DomeOS Server的服务端口。
_mysql_host: MySQL服务器的地址。
_mysql_port: MySQL服务端口。
_mysql_username: 用于登录MySQL服务器的用户名。
_mysql_password: 用于登录MySQL服务器的密码。
_mysql_db: DomeOS使用的数据库名,即STEP 04中的domeos数据库。

样例:

sudo docker run -d --restart=always --name domeos_server -e MYSQL_HOST=10.16.42.199 -e MYSQL_PORT=3307 -e MYSQL_USERNAME=domeos -e MYSQL_PASSWORD=mypassword -e MYSQL_DB=domeos -p 8080:8080 pub.domeos.org/domeos/server:1.2.3

测试:

在浏览器中访问DomeOS Server服务地址,并通过普通账户->admin账户(初始密码admin)进行登录,登录成功说明DomeOS服务正常。

STEP 07: 配置和启动WebSSH组件

启动方式: docker容器

镜像: pub.domeos.org/domeos/shellinabox:1.0

命令:

sudo docker run -d --restart=always -p <_port>:4200 --name shellinabox pub.domeos.org/domeos/shellinabox:1.0

参数说明:

_port: WebSSH的服务端口。

说明:

  1. 以非容器方式启动DomeOS Server时需要单独启动WebSSH Server,容器方式已经将WebSSH Server集成进镜像中不再需要单独启动WebSSH Server。

样例:

sudo docker run -d --restart=always -p 4200:4200 --name shellinabox pub.domeos.org/domeos/shellinabox:1.0

测试:

通过"curl -s <WebSSH服务地址>"查看WebSSH服务状态,如果返回了一个"File Not Found"的页面信息而不是返回空,说明WebSSH服务运行正常,如:

command: curl -s 10.11.151.97:4200
result :
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xml:lang="en" lang="en">
<head>
<title>404 File Not Found</title>
</head>
<body>
File Not Found
</body>
</html>

参考:

shellinabox项目地址(https://github.com/domeos/shellinabox)

STEP 08: DomeOS系统录入参数

全局配置->"LDAP"->OpenLDAP服务器地址 OpenLDAP的服务地址以及端口号,样例: ldap://ldap.sohu-inc.com 123

全局配置->"LDAP"->email后缀 OpenLDAP登录时的E-mail后缀,样例: @sohu-inc.com

全局配置->"代码仓库"->代码仓库地址 GitLab的地址,样例: http://code.sohuno.com

全局配置->"私有仓库"->私有仓库地址 Docker registry的地址,样例: http://10.11.150.76:5000 或 pub.domeos.org 如果使用https访问的私有仓库,则勾选"https"并将registry.crt证书文件内容粘贴至"证书信息"中

全局配置->"服务器"->服务器地址 DomeOS Server的地址,样例: http://beta.domeos.sohucs.com

全局配置->"监控配置"-> transfer transfer服务地址,样例 10.11.150.76:8082

全局配置->"监控配置"-> graph graph服务地址,样例 10.11.150.76:8083

全局配置->"监控配置"-> query query服务地址,样例 10.11.150.76:8084

全局配置->"Web SSH"->Web SSH服务地址 如果DomeOS Server以非容器方式启动,则这项设置为单独启动的WebSSH服务地址,样例:http://10.11.150.76:4200 如果DomeOS Server以容器方式启动,则WebSSH服务地址必须设置为: http://localhost:4200

集群管理->新建集群->api server kube-apiserver服务地址,样例:10.16.42.200:8080

集群管理->新建集群->dns服务器 kubernetes集群内DNS服务地址,注意不能添加端口号,样例:172.16.40.1

集群管理->新建集群->etcd ETCD集群服务地址,注意必须加http://前缀,样例:http://10.16.42.200:8080

集群管理->新建集群->domain kubernetes集群内DNS服务search域,样例:domeos.local 若想成功启动项目构建,该kubernetes集群需要被添加到集群管理中,并且配置其中的至少一台主机可以用于构建,请在添加完集群后完成如下

全局配置->"构建集群"->api server kube-apiserver服务地址,样例:10.16.42.200:8080

全局配置->"构建集群"->namespace kubernetes集群的namespace,默认为default

STEP 09: 添加kubernetes node

脚本: start_node_centos.sh (http://domeos-script.bjctc.scs.sohucs.com/start_node_centos.sh)

程序包: domeos-k8s-node.tar.gz (http://domeos-script.bjctc.scs.sohucs.com/domeos-k8s-node.tar.gz,包含: flanneld, mk-docker-opts.sh, kube-proxy, kubelet, kubectl)

辅助脚本:

  1. change_hostname.sh (http://domeos-script.bjctc.scs.sohucs.com/change_hostname.sh)
  2. stop-k8s-node.sh (http://domeos-script.bjctc.scs.sohucs.com/stop-k8s-node.sh)

镜像: pub.domeos.org/domeos/agent:2.4

说明:

  1. 脚本会对hostname进行检查,如果不符合DNS规范,请通过change_hostname.sh脚本对主机hostname进行修改。

  2. 在DomeOS系统中node包含标签PRODENV=HOSTENVTYPE表示可用于生产环境;包含标签TESTENV=HOSTENVTYPE表示可用于测试环境;包含标签BUILDENV=HOSTENVTYPE表示可用于构建镜像。

  3. 在添加node时集群的DNS服务可不启动。

  4. 脚本中安装docker时需要连接互联网,下载domeos-k8s-node.tar.gz需要连接互联网。如果所在主机无法访问外网,可先将domeos-k8s-node.tar.gz放到脚本所在目录,注释脚本中下载domeos-k8s-node.tar.gz的语句;在本地安装完docker;将镜像pub.domeos.org/domeos/agent:2.4上传至私有仓库中,同时修改脚本第15步中该镜像对应的名称;最后执行该脚本。

  5. 如果设置了私有仓库以https的方式访问,则脚本需要从DomeOS Server上下载证书文件 registry.crt,因此当前主机需要访问DomeOS Server。如果不能访问,则将registry.crt文件放置到脚本所在目录,并修改脚本中第10步的"TODO domeos offline"部分。

  6. 脚本成功执行后,将以systemctl的形式启动flanneld、docker、kube-proxy、kubelet,将以docker容器形式启动用于监控的agent,将为该结点打上指定的标签。

  7. 通过运行stop-k8s-node.sh可摘除node,运行在该节点上的所有容器被停止,docker和flannel也会被停止。

参数说明:

--api-server: kubernetes集群kube-apiserver服务地址。必需
--cluster-dns: kubernetes集群内DNS服务地址,与kubernetes master启动参数一致。必需
--cluster-domain: kubernetes集群内DNS服务的search域,与kubernetes master启动参数一致。必需
--monitor-transfer: 监控transfer服务地址,可以填多个,各个地址间以逗号分隔。必需
--docker-graph-path: docker运行时的根路径,容器、本地镜像等会存储在该路径下,占用空间大,建议设置到大容量磁盘上。默认为脚本所在路径下的docker-graph目录
--docker-log-level: docker daemon的日志级别,可选值debug/info/warn/error/fatal。kubernetes会定时查询所有容器状态,导致docker daemon输出大量info级别日志到系统日志中(/var/log/message),建议日志级别设置为warn级别以上。默认为warn
--registry-type: 私有仓库类型,取值为http或https。必需
--registry-arg: 私有仓库的地址,可以为域名地址。必需
--domeos-server: DomeOS Server服务地址。当--registry-type为https时必需
--etcd-server: ETCD集群服务地址,各个地址间以逗号分隔。必需。
--node-labels: 为node打上的标签,非必需。

样例:

sudo sh start_node_centos.sh --api-server http://10.16.42.200:8080 --cluster-dns 172.16.40.1 --cluster-domain domeos.local --monitor-transfer 10.16.42.198:8433,10.16.42.199:8433 --docker-graph-path /opt/domeos/openxxs/docker-graph --docker-log-level warn --registry-type http --registry-arg 10.11.150.76:5000 --domeos-server 10.11.150.76:8080 --etcd-server http://10.16.42.200:4012 --node-labels TESTENV=HOSTENVTYPE,PRODENV=HOSTENVTYPE

测试:

通过" kubectl --server <kube-apiserver的服务地址> get node "查看集群的node节点状态,如果显示了该结点并且状态为"Ready",则说明node节点添加成功,如:

command: kubectl --server 10.16.42.200:8080 get nodes
result :
NAME         STATUS    AGE
tc-151-100   Ready     25d

参考:

Kubernetes官方文档(http://kubernetes.io) Docker RPM包下载地址(https://yum.dockerproject.org/repo/main/centos/7/Packages/)

STEP 10: 创建kubernetes集群内DNS服务

启动方式: kubernetes service形式

配置文件: dns.yaml (http://domeos-script.bjctc.scs.sohucs.com/dns.yaml)

执行文件: kubectl

镜像: pub.domeos.org/domeos/skydns:1.5 pub.domeos.org/domeos/kube2sky:0.4

命令:

kubectl --server <kube-apiserver-addr> create -f dns.yaml

参数说明:

  1. skydns-svc service中的clusterIP为部署时设置的--cluster-dns

  2. skydns RC中args下的--machines为ETCD集群的服务地址,各个地址间以逗号分隔,必须带http://前缀

  3. skydns RC中args下的--nameservers为集群中的主机使用的外部DNS服务(centos系统中为/etc/resolv.conf下配置的非集群nameserver),带端口号,多个DNS服务则以半角逗号分隔

  4. skydns RC中args下的--domain为部署时设置的--cluster-domain

  5. kube2sky RC中args下的--etcd-server为ETCD的服务地址,有且仅能设置一个,且必需在--machines设置的集群中,必须带http://前缀

  6. kube2sky RC中args下的--domain为部署时设置的--cluster-domain

说明:

  1. 创建前请依据具体部署修改配置文件。

  2. 执行完毕后将创建名为skydns-svc的service,名为skydns的RC和名为kube2sky的RC。

样例:

kubectl --server 10.16.42.200:8080 create -f dns.yaml

测试:

  1. 通过" kubectl --server 10.16.42.200:8080 get svc "获取集群svc列表,确认skydns-svc是否已创建

  2. 通过" kubectl --server 10.16.42.200:8080 get pods "获取集群pod列表,确认skydns-为前缀和kube2sky-为前缀的两个pod是否处于Running状态,如skydns-u44ey和kube2sky-2h1b9

  3. 查看node上的/etc/resolv.conf文件,确认前两行是否为如下内容(其中的domeos.local为--cluster-domain参数的值,172.16.40.1为--cluster-dns参数的值):

search default.svc.domeos.local svc.domeos.local domeos.local
nameserver 172.16.40.1

如果不是,添加如上格式内容

  1. 在node上进行DNS解析验证,方式有多种,如" nslookup skydns-svc.default.svc.domeos.local ",如果没安装nslookup也可通过ping间接验证" ping skydns-svc.default.svc.domeos.local -c 1 "解析出IP地址了说明DNS服务创建成功

  2. 在通过kubernetes创建的容器内部验证,方法同第4步

搜狐云台DomeOS项目组 xiaoshengxu@sohu-inc.com

About

This is the web server of domeos. QQ group: 257691628

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages