FCon7折倒计时最后一周:日程已上线70%!查看详情>>> 了解详情
写点什么

如何在 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:40527

评论

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

一个小而美的项目如何进行跨端选型

Onegun

移动端 跨端开发

为什么mysql不推荐使用雪花ID作为主键

京东科技开发者

MySQL 数据 雪花id 主键 自增

前端培训程序员学习就业还有前途吗?

小谷哥

供应链-数字化招投标/采购/供应商管理系统

金陵老街

数字化 Java‘’ Vue 3 spring-boot

华夏银行:详解iDo平台一体化运维的落地过程

嘉为蓝鲸

运维 金融 银行 数字化

DTSE Tech Talk 第13期:Serverless凭什么被誉为未来云计算范式?

华为云开发者联盟

云计算 后端 华为云

磐久网络|揭秘阿里云HAIL数据中心网络

云布道师

阿里云 数据中心 基础设施建设

效能工具如何在企业规模化落地?|线上沙龙回顾

万事ONES

3.面向复杂度的架构设计模式

程序员小张

「架构实战营」

又一创新!阿里云 Serverless 调度论文被云计算顶会 ACM SoCC 收录

Serverless Devs

K3S +Helm+NFS最小化测试安装部署只需十分钟

京东科技开发者

Docker k8s 软件测试 k3s 应用程序

如何通过链路追踪进行定时任务诊断

阿里巴巴云原生

阿里云 云原生 SchedulerX

前端培训程序员不好招吗,应该怎么学习

小谷哥

我们又重写了一个关键服务

Zilliz

人工智能 Milvus 向量数据库

Service Mesh 的下一站是 Sidecarless 吗?

SOFAStack

MOSN

瓴羊Quick BI自助式报表分析工具,令企业的运营服务更高效

夏日星河

SAP 异常现象之同一个IDoc可以被POST两次触发2张不同的物料凭证

SAP虾客

SAP IDoc BD87

AI技术实践|用腾讯云慧眼微信浮层H5解决黄牛抢票问题

牵着蜗牛去散步

人工智能 腾讯云 腾讯 腾讯云AI

MobPush 推送查询API

MobTech袤博科技

java培训学习中怎么来提升开发水平

小谷哥

New Features | NFTScan 推出 BlueChip、Watch List、Activity Overview

NFT Research

区块链 NFT 数据基础设施

云小课|云小课教您如何选择Redis实例类型

华为云开发者联盟

云计算 后端 华为云

TCL 基于 StarRocks 构建统一的数据分析平台

StarRocks

#数据库

web前端和java培训学编程哪个更好

小谷哥

面试合集:数据库+数据结构+JVM+网络+JAVA+分布式+操作系统

钟奕礼

Java 程序员 java面试 java编程

云安全系列4:解析云安全工具集

HummerCloud

云计算 云安全

教你用JavaScript实现计数器

小院里的霍大侠

JavaScript 编程开发 初学者 入门实战

嵌入式系统概述及特点

timerring

嵌入式 11月月更

我代码就加了一行log日志,结果引发了P1的线上事故

小小怪下士

Java 程序员 log 代码

参加大数据培训学习还来得及吗

小谷哥

ansible2.4安装和体验

程序员欣宸

DevOps ansible 11月月更

  • 扫码添加小助手
    领取最新资料包
如何在Rancher 2.0 TP2 Kubernetes集群中添加自定义节点_文化 & 方法_Rancher_InfoQ精选文章