极简教程!教你快速将K3s与Cloud Controller集成
作者:
Dawid Ziolkowski,云原生工程师
原文链接:
https://itnext.io/how-to-integrate-k3s-with-the-cloud-controller-36bd5020b8f7
在之前的一篇文章中我们介绍了如何在60秒内创建一个4个节点的K3s集群,文中还包含了虚拟机的配置。这一集群的唯一问题是没有cloud provider的支持,也就是说你不能使用LoadBalancer、存储等服务。那么,本文将告诉你如何将K3s与cloud provider集成。
将CCM(云管理控制器)与K3s集成在一起基本上意味着你的K3s集群能够与cloud provider的API进行通信,以请求和配置诸如LoadBalancer(用于ingress)之类的服务,还能为节点应用适当的标签等。在不同的cloud provider之前这一过程有所不同,主要取决于cloud provider是否首先提供CCM。在本文中,我们将在DigitalOcean上安装K3s。
整个流程并不复杂,但你需要仔细跟着以下步骤进行。首先,从master节点开始。安装K3s master节点时,我们需要传递以下参数:
— disable-cloud-controller
— no-deploy servicelb
— kubelet-arg=”cloud-provider=external”
— kubelet-arg=”provider-id=digitalocean://[master_node_id]”
那么,它们意味着什么呢?首先,正如名字所暗示的,禁用默认K3s cloud provider,否则K3s将使用其自身内置的cloud controller。第二,我们要求K3s不要部署servicelb,因为它会将IP地址弄乱——servicelb会用节点IP覆盖Ingress IP,而我们希望使用DigitalOcean LoadBalancer IP作为LoadBalancer服务类型。第三,这几乎是所有CCM的要求,我们只需要指示kubelet使用外部cloud provider。最后一个参数,这是DO CCM的要求——如果你查看DO CCM Github repo(https://github.com/digitalocean/digitalocean-cloud-controller-manager),你会发现它们仅要求你将此参数传递给kubelet。[master_node_id]是可以在DO Dashboard中找到的,也可以通过从droplet本身进行GET调用来查找:
curl http://169.254.169.254/metadata/v1/id
因此,为了安装给CCM准备的K3s server,我们需要执行以下命令:
curl -sfL https://get.k3s.io | sh -s — server \
--disable-cloud-controller \
--no-deploy servicelb \
--kubelet-arg=”cloud-provider=external” \
--kubelet-arg=”provider-id=digitalocean://$master_id”
以上就是第一部分,前期准备。K3s server启动之后,我们需要安装CCM。要完成这一步骤,首先需要clone该git仓库:
https://github.com/digitalocean/digitalocean-cloud-controller-manager
接下来,我们需要创建一个包含DigitalOcean API token的Kubernetes secret。你可以使用repo中的secret生成器,也可以使用以下命令:
kubectl -n kube-system create secret generic digitalocean --from-literal=access-token=[YOUR_DO_API_TOKEN]
如果secret已保存,则只需从仓库中应用yaml manifest:
kubectl apply -f releases/v0.1.21.yml
现在无论何时启用LoadBalancer服务,都会创建DigitalOcean LoadBalancer并将其配置为将流量路由到该负载。此外,由于k3s默认内置了Traefik,因此也会自动为其创建DOLB。
到目前为止,我们仅创建了K3s master节点,对于worker节点,你只需要安装具有以下参数的K3s即可:
curl -sfL https://get.k3s.io | K3S_TOKEN=${token} sh -s - agent \
--server https://${master_node_ip}:6443 \
--kubelet-arg="cloud-provider=external" \
--kubelet-arg="provider-id=digitalocean://$worker_id"
现在,所有节点都具有合适的标签集(公共/私有ip、DO区域等),并且通过DO LB的路由也会即刻启动。
最后,我创建了一个简单的bash脚本来自动化整个流程。这一解决方案可以让你创建2分中之内在DigitalOcean上创建一个4节点(1个master节点+3个worker节点)的k3s集群,并且带有DO CCM:
https://github.com/DavidZisky/k3s-cloud
极简教程!教你快速将K3s与Cloud Controller集成的更多相关文章
- Nginx 极简教程(快速入门)
作者:dunwu github.com/dunwu/nginx-tutorial 推荐阅读(点击即可跳转阅读) 1. SpringBoot内容聚合 2. 面试题内容聚合 3. 设计模式内容聚合 4. ...
- CentOS安装使用.netcore极简教程(免费提供学习服务器)
本文目标是指引从未使用过Linux的.Neter,如何在CentOS7上安装.Net Core环境,以及部署.Net Core应用. 仅针对CentOS,其它Linux系统类似,命令环节稍加调整: 需 ...
- nginx极简教程
Nginx 极简教程 本项目是一个 Nginx 极简教程,目的在于帮助新手快速入门 Nginx. examples 目录中的示例模拟了工作中的一些常用实战场景,并且都可以通过脚本一键式启动,让您可以快 ...
- 自制 os 极简教程1:写一个操作系统有多难
为什么叫极简教程呢?听我慢慢说 不知道正在阅读本文的你,是否是因为想自己动手写一个操作系统.我觉得可能每个程序员都有个操作系统梦,或许是想亲自动手写出来一个,或许是想彻底吃透操作系统的知识.不论是为了 ...
- Typora极简教程
Typora极简教程 ” Markdown 是一种轻量级标记语言,创始人是约翰·格鲁伯(John Gruber).它允许人们 “使用易读易写的纯文本格式编写文档,然后转换成有效的 HTML 文档.” ...
- Asky极简教程:零基础1小时学编程,已更新前8节
Asky极简架构 开源Asky极简架构.超轻量级.高并发.水平扩展.微服务架构 <Asky极简教程:零基础1小时学编程>开源教程 零基础入门,从零开始全程演示,如何开发一个大型互联网系统, ...
- Python 极简教程(八)字符串 str
由于字符串过于重要,请认真看完并保证所有代码都至少敲过一遍. 对于字符串,前面在数据类型中已经提到过.但是由于字符串类型太过于常用,Python 中提供了非常多的关于字符串的操作.而我们在实际编码过程 ...
- 【转】Typora极简教程
Typora极简教程 Typora download ” Markdown 是一种轻量级标记语言,创始人是约翰·格鲁伯(John Gruber).它允许人们 “使用易读易写的纯文本格式编写文档,然后转 ...
- NodeJS 极简教程 <1> NodeJS 特点 & 使用场景
NodeJS 极简教程 <1> NodeJS 特点 & 使用场景 田浩 因为看开了所以才去较劲儿. 1. NodeJS是什么 1.1 Node.js is a JavaScri ...
随机推荐
- Java日期处理易踩的十个坑
前言 整理了Java日期处理的十个坑,希望对大家有帮助. 一.用Calendar设置时间的坑 反例: Calendar c = Calendar.getInstance(); c.set(Calend ...
- [Linux系统] CentOS7(RHEL7)重置root用户密码
1.系统启动时,按"e"进入编辑界面 2.编辑内容 将rhgb quiet修改为 init=/bin/sh : 然后按 ctrl+x . 3.修改root密码 mount -o r ...
- VMware workstation 下Hadoop伪分布式模式安装
详细过程: 1.VMware安装: 2.centos 6 安装 3.jdk下载安装配置 4.Hadoop 安装配置 1.VMware Workstation 安装: https://www.vmwar ...
- c++第一个程序测试-----c++每日笔记!
#include <iostream>int main(){ //std::cout << "Enter two number:" <<std: ...
- pycharm 2.7 快捷键
提示 CTRL Q: 在参数列表位置,显示可以输入的所有参数 CTRL Q: 查看选中方法的文档字符串 阅读 CTRL -: 折叠当前代码 CTRL +: 展开当前代码 CTRL SHIFT -: 折 ...
- FZU - 2204 简单环形dp
FZU - 2204 简单环形dp 题目链接 n个有标号的球围成一个圈.每个球有两种颜色可以选择黑或白染色.问有多少种方案使得没有出现连续白球7个或连续黑球7个. 输入 第一行有多组数据.第一行T表示 ...
- Appium自动化 - 设置unicodeKeyboard: True运行脚本后,手机输入时无法调出软键盘
问题背景 做appium自动化的时候,使用了UiAutomator1驱动,然后设置了UnicodeKeyboard 执行自动化脚本之后,玩手机的时候发现平时用的输入法键盘没法调出来了 'automat ...
- 面试官: 说说你对async的理解
大家好,我是小雨小雨,致力于分享有趣的.实用的技术文章. 内容分为翻译和原创,如果有问题,欢迎随时评论或私信,希望和大家一起进步. 分享不易,希望能够得到大家的支持和关注. TL;DR async是g ...
- Maven快照版本要这样用才真的香!
Bug的身世之谜 今天又分享一个问题解决的故事.请看下图框起来的错误,明显就是找不到这个class嘛! 下面我们按照正常人的思路去排查这个问题,既然找不到class那就先看这个依赖的jar包有没有,如 ...
- VXLAN 基础教程:VXLAN 协议原理介绍
VXLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网),是一种虚拟化隧道通信技术.它是一种 Overlay(覆盖网络)技术,通过三层的网络来搭建虚拟 ...