OceanBase 开发者大会来啦!一起围观数据库前沿趋势!报名戳 了解详情
写点什么

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

  • 2020-04-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-04-12 20:40438

评论

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

Linux内核移植

学神来啦

云计算 Linux 运维 运维自动化

maven私服搭建与插件开发

IT视界

maven nexus

GitHub上最火的7个spring cloud开源项目,对新手太友好了

北游学Java

Java 微服务 Spring Cloud 项目源码

连夺十冠!百度CVPR 2021再突破,AI实力接受国际“检验”

百度大脑

人工智能

watt挖矿软件开发|watt挖矿APP系统开发

tms大时代APP开发|tms大时代软件系统开发

Go学习笔记之Hello World

架构精进之路

语言 Go 语言 7月日更

新一代设计编排运维套件分享

鲸品堂

运维 价值

难得一次技术面,Java程序员开发七年,突破自己终获小米offer

Java 程序员 架构 面试

字节跳动异构场景下的高可用建设实践

Java

Android性能优化之启动优化实战篇!分享面经

欢喜学安卓

android 程序员 面试 移动开发

Android性能优化总结,超详细

欢喜学安卓

android 程序员 面试 移动开发

从零开始学习3D可视化之事件的常用方法

森友小锘

大前端 可视化 3D可视化 数字孪生 事件

Ubuntu 20.04安装/更新升级后进系统黑屏,屏幕亮度无法调节踩坑记

玏佾

ubuntu Ubuntu20.04 无法进入系统 驱动 屏幕亮度

腾讯云,拿什么获得电商行业信赖?

ToB行业头条

#腾讯云

数据结构——顺序队列

若尘

数据结构 队列

党建百年•融云献礼,重磅发布党建全场景通信解决方案

融云 RongCloud

乐视界APP开发|乐视界软件系统开发

Hi.com嗨币软件系统开发资料

Flink 1.13,面向流批一体的运行时与 DataStream API 优化

Apache Flink

flink

Qunar DNS体系建设

Qunar技术沙龙

DNS DNS服务器

2021谈一下当下最合适的Android架构,附小技巧

欢喜学安卓

android 程序员 面试 移动开发

简单使用HTML集成OnlyOffice

一个需求

onlyoffice

已拿阿里P7+意向书!总结480页,超24W字2021最新一线大厂Java高级架构师面试题

Java架构追梦

Java 阿里巴巴 架构 面试

百度搜索稳定性问题分析的故事(上)

百度Geek说

字节跳动这份面试题,你能打几分

Java 面试

Flink 1.13,State Backend 优化及生产实践分享

Apache Flink

flink

AI技术在银行内部反欺诈中应用的新思路

索信达控股

人工智能 大数据 金融科技 风控 反欺诈 人工智能模型

为什么有些人不喜欢低代码?

优秀

低代码

2021金三银四Android大厂面试题来袭!附赠复习资料

欢喜学安卓

android 程序员 面试 移动开发

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