写点什么

如何在 Rancher 2.0 TP2 Kubernetes 集群中添加自定义节点

  • 2020 年 4 月 12 日
  • 本文字数:3217 字

    阅读完需:约 11 分钟

如何在Rancher 2.0 TP2 Kubernetes集群中添加自定义节点

Rancher 是一个开源的全栈化企业级容器管理平台,用户在 Rancher 可视化界面上以点选的方式,即可一键完成所有容器基础设施(网络、存储、负载均衡等)的对接与部署,确保容器在任何基础架构上(公私有云、虚拟机、物理机等)无缝运行。只需简单直观的操作,即可搞定在生产环境中使用容器的一切工作。


从 Rancher 2.0 开始,Rancher 中的每个集群都将基于 Kubernetes。用户可以充分利用 Kubernetes 的强大性能及其迅速壮大的生态系统,而通过 Rancher 平台上基于 Kubernetes 的、简单直观的用户体验,Rancher 2.0 将加快 Kubernetes 在企业中的普及。



2018 年 2 月发布的 Rancher 2.0 的第二个里程碑版本 Tech Preview 2,支持 用户在创建 RKE 集群时添加自定义节点。用户可以通过运行生成的docker run命令启动rancher/agent容器,或通过将 SSH 连接到该节点来添加自定义节点(已经配置了 Linux 操作系统和 Docker 的节点)。在本文中,我们将演示如何使用docker run命令自动生成命令以添加节点。


注意:Rancher 2.0 现阶段发布版本均为技术预览,尚不适合用于生产环境,建议您不要将您的生产工作负载放在上面。


要求

  • 运行 Linux 和 Docker 的主机

  • 安装了 JSON 实用程序jq,以解析 API 响应

  • sha256sum二进制文件,用于计算 CA 证书校验和


启动 Rancher Server

在执行任何操作之前,我们首先需要启动rancher / server容器。Rancher 2.0 Tech Preview 2 的镜像是rancher/server:preview。从 1.6 到 2.0 的一个变化是,我们不再公开端口 8080。相反,我们公开端口 80 和 443,其中,80 默认重定向到 443。您可以按如下方式启动容器:


docker run -d -p 80:80 -p 443:443 rancher/server:preview
复制代码


如果您希望此设置的数据持久存在,您可以将主机卷安装到/ var / lib / rancher,如下所示:


docker run -d -p 80:80 -p 443:443 -v /data:/var/lib/rancher rancher/server:preview
复制代码


登录并创建 API 密钥

在 Rancher 1.x 中,默认情况下没有启用认证。启动rancher/server容器后,用户无需任何凭据就可以访问 API / UI。在 Rancher 2.0 中,我们用默认用户名和密码管理来启用身份验证。登录后,我们将获得一个不记名的 token,我们可以用它来更改密码。更改密码后,我们将创建一个 API 密钥以执行其他请求。API 密钥也是一个不记名 token,我们称其为用于自动化目的的自动化。


登录

# LoginLOGINRESPONSE=`curl -s 'https://127.0.0.1/v3-public/localProviders/local?action=login' -H 'content-type: application/json' --data-binary '{"username":"admin","password":"admin"}' --insecure`LOGINTOKEN=`echo $LOGINRESPONSE | jq -r .token`
复制代码


更改密码(将密码改为 thisisyournewpassword)

# Change passwordcurl -s 'https://127.0.0.1/v3/users?action=changepassword' -H 'content-type: application/json' -H "Authorization: Bearer $LOGINTOKEN" --data-binary '{"currentPassword":"admin","newPassword":"thisisyournewpassword"}' --insecure
复制代码


创建 API 密钥

# Create API keyAPIRESPONSE=`curl -s 'https://127.0.0.1/v3/token' -H 'content-type: application/json' -H "Authorization: Bearer $LOGINTOKEN" --data-binary '{"type":"token","description":"automation"}' --insecure`
复制代码


# Extract and store tokenAPITOKEN=`echo $APIRESPONSE | jq -r .token`
复制代码


创建集群

生成 API 密钥匙后,就可以开始创建集群了。创建集群时,您有 3 个选项:


  • 启动一个云集群(谷歌 Kubernetes Engine/GKE)

  • 创建一个集群(用我们自己的 Kubernetes 安装程序,Rancher Kubernetes Engine)

  • 导入现有集群(如果您已经有了 Kubernetes 集群,则可以通过从该集群插入 kubeconfig 文件导入)


拿本文来说,我们将使用 Rancher Kubernetes Engine (rke)创建一个集群。当您创建一个集群时,可以选择在创建集群时直接创建新节点(通过从像 DigitalOcean / Amazon 这样的云提供商创建节点)或使用已存在的节点,并让 Rancher 用 SSH 凭证连接到节点。我们在本文中讨论的方法(通过运行docker run命令添加节点)仅在创建集群之后才可用。


您可以使用以下命令创建集群(您的新集群)。如您所见,此处仅包含参数 ignoreDockerVersion(忽略 Kubernetes 不支持的 Docker 版本)。其余的将是默认的,我们将会在后续文章中讨论。在此之前,您可以通过 UI 发现可配置选项。


# Create clusterCLUSTERRESPONSE=`curl -s 'https://127.0.0.1/v3/cluster' -H 'content-type: application/json' -H "Authorization: Bearer $APITOKEN" --data-binary '{"type":"cluster","nodes":[],"rancherKubernetesEngineConfig":{"ignoreDockerVersion":true},"name":"yournewcluster"}' --insecure`
复制代码


# Extract clusterid to use for generating the docker run commandCLUSTERID=`echo $CLUSTERRESPONSE | jq -r .id`
复制代码


运行这些代码之后,您应该在 UI 中看到您的新集群了。由于没有添加节点,集群状态将是“等待节点配置或等待有效配置”。


组装 docker run 命令以启动 rancher/agent

添加节点的最后一部分是启动 rancher/agent 容器,该容器将把节点添加到集群中。为此,我们需要:


  • 与 Rancher 版本耦合的代理镜像

  • 节点(etcd 和/或控制面板和/或工作人员)

  • 可以到达 rancher/server 容器的地址

  • 代理所使用的加入集群的集群 token

  • CA 证书的校验和


可以从 API 的设置端点检索代理镜像:


AGENTIMAGE=`curl -s -H "Authorization: Bearer $APITOKEN" https://127.0.0.1/v3/settings/agent-image --insecure | jq -r .value`
复制代码


节点的角色,您可以自己决定。(在本例中,我们将使用全部三种角色):


ROLEFLAGS="--etcd --controlplane --worker"
复制代码


可以到达rancher/server容器的地址应该是自解的,rancher/agent将连接到该端点。


RANCHERSERVER="https://rancher_server_address"
复制代码


集群 token 可以从创建的集群中检索。我们在CLUSTERID中保存了创建的 clusterid,随后可以用它生成一个 token。


# Generate token (clusterRegistrationToken)AGENTTOKEN=`curl -s 'https://127.0.0.1/v3/clusterregistrationtoken' -H 'content-type: application/json' -H "Authorization: Bearer $APITOKEN" --data-binary '{"type":"clusterRegistrationToken","clusterId":"'$CLUSTERID'"}' --insecure | jq -r .token`
复制代码


生成的 CA 证书也存储在 API 中,并可以按如下所示进行检索,这时可以添加sha256sum来生成我们需要加入集群的校验和。


# Retrieve CA certificate and generate checksumCACHECKSUM=`curl -s -H "Authorization: Bearer $APITOKEN" https://127.0.0.1/v3/settings/cacerts --insecure | jq -r .value | sha256sum | awk '{ print $1 }'`
复制代码


加入集群所需的所有数据现在都可用,我们只需组装该命令。


# Assemble the docker run commandAGENTCOMMAND="docker run -d --restart=unless-stopped -v /var/run/docker.sock:/var/run/docker.sock --net=host $AGENTIMAGE $ROLEFLAGS --server $RANCHERSERVER --token $AGENTTOKEN --ca-checksum $CACHECKSUM"
复制代码


# Show the commandecho $AGENTCOMMAND
复制代码


最后一个命令(echo $AGENTCOMMAND)应该是这样的。


docker run -d --restart=unless-stopped -v /var/run/docker.sock:/var/run/docker.sock --net=host rancher/agent:v2.0.2 --etcd --controlplane --worker --server https://rancher_server_address --token xg2hdr8rwljjbv8r94qhrbzpwbbfnkhphq5vjjs4dfxgmb4wrt9rpq --ca-checksum 3d6f14b44763184519a98697d4a5cc169a409e8dde143edeca38aebc1512c31d
复制代码


在节点上运行此命令后,您应该可以看到它加入了集群并由 Rancher 进行配置。


Protip:这些 token 也可以直接用作基本身份验证,例如:


curl -u $APITOKEN https://127.0.0.1/v3/settings --insecure
复制代码


结语

希望这篇文章能够帮助您实现 Rancher 2.0 Tech Preview 2 自动化的第一步。Rancher 2.0 Tech Preview 3 即将发布,敬请保持关注!


2020 年 4 月 12 日 20:40297

评论

发布
暂无评论
发现更多内容

模块四作业

Tina

架构实战营 - 模块四

Testcase

架构实战营

三个问题,颠覆你的三观

非著名程序员

个人成长 认知提升 个人提升 8月日更

架构实战营 毕业总结

小遵

架构实战营 毕业总结

CR

毕业设计

yu

架构实战营

项目白手起家之Java对象的解读

卢卡多多

Java 对象 8月日更

04 设计模式之生成器模式

陈皮的JavaLib

Java 面试 设计模式 8月日更 生成器模式

模块四作业

seawolflin

架构实战营 毕业设计

夏日

架构实战营

【架构设计模块四】:设计千万级学生管理系统的考试试卷存储方案

Ryoma

《项目管理三步法》教你搞定孩子 作业拖延症

Ian哥

学生管理系统的考试试卷存储方案

技术是伙伴

架构实战营

快递员应不应该送货到家?

石云升

用户体验 体验设计 8月日更

业务定制型异地多活架构业务设计

arctec

区块链技术影响的 10 个领域

CECBC

【LeetCode】第 N 个泰波那契数Java题解

HQ数字卡

算法 LeetCode 8月日更

模块4 千万级学生管理系统的考试试卷存储方案

SAKIN

千万级学生管理系统的考试试卷存储方案

gawaine

架构实战营

架构训练营 模块四

小卷儿

Apache Flink的体系架构(三)

数据与智能

flink 时间戳

架构师学习心得

ifc177

千万级学生管理系统的考试试卷存储方案-模块四

hello

架构训练营

你的登录接口真的安全吗?快看看你有没有中招!

xcbeyond

架构 安全性 8月日更

毕业设计:设计电商秒杀系统

开拓纪

架构训练营 毕业设计

毕业总结

yu

架构实战营

华为区块链,构建可信政务服务

CECBC

架构实战营 毕业设计

小遵

架构训练营——毕业总结

开拓纪

架构训练营 毕业总结

区块链公益发展观察:落地成效尚可,全面推广受限

CECBC

架构1期模块四作业

五只羊

架构实战营

如何在Rancher 2.0 TP2 Kubernetes集群中添加自定义节点_文化 & 方法_Rancher_InfoQ精选文章