10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

不到 1 分钟,从零完成 k3s Kubeconfig 配置!

  • 2020-05-16
  • 本文字数:5190 字

    阅读完需:约 17 分钟

不到1分钟,从零完成k3s Kubeconfig配置!

K3s 是由 Rancher Labs 于今年年初发布的一款开源、极轻量的Kubernetes发行版,完美适用于在资源有限的环境中运行 Kubernetes。K3s 一经发布就得到了业界的高度关注和认可,发布半年以来已在 GitHub 上拥有近 8500 颗 Star


最初 k3s 只是一个用于本地 Kubernetes 开发的 POC 项目,而如今已有很多企业用户在生产环境中使用它。


官方 GitRepo:


https://github.com/rancher/k3s


官方定义:k3s 是完全符合标准的生产级 Kubernetes 发行版,具有以下四个方面的主要变化:


  • 删除旧的、非必须的代码: K3s 不包括任何默认禁用的 Alpha 功能或者过时的功能,原有的 API 组件目前仍运行于标准部署当中。除此之外,Rancher 还删除了所有非默认许可控制器,in- tree 云提供商和存储驱动程序,但允许用户添加任何他们需要的驱动程序。

  • 整合正在运行的打包进程:为了节省 RAM,Rancher 将通常在 Kubernetes 管理服务器上运行的多流程合并为单个流程。Rancher 还将在工作节点上运行的 kubelet、kubeproxy 和 flannel 代理进程组合成一个进程。

  • 使用 containerd 代替 Docker 作为运行时的容器引擎: 通过用 containderd 替换 Docker,Rancher 能够显著减少运行时占用空间,删除 libnetwork、swarm、Docker 存储驱动程序和其他插件等功能。

  • 除了 etcd 之外,引入 SQLite 作为可选的数据存储: Rancher 在 k3s 中添加了 SQLite 作为可选的数据存储,从而为 etcd 提供了一个轻量级的替代方案。该方案不仅占用了较少的内存,而且大幅简化了操作。


鉴于 k3s 受到极高的关注度以及广泛的应用,大量的开源社区用户开始搭建有关 k3s 的项目,本文将分享如何使用其中一个项目——k3sup,来实现一分钟内从零到完全配置 k3s Kubeconfig。

K3sup:1 分钟之内,从零到完全配置 Kubeconfig

K3sup:https://github.com/alexellis/k3sup


K3sup 是由 Alex Ellis 创建的一个开源项目,这使得 k3s 的安装和 kubeconfig 文件的生成变得快速和方便。这一工具能以极快的速度自动化安装 k3s、将 SAN 地址更新为公共 IP、下载 k3s 配置文件然后使用 VM 的公共 IP 地址将其更新,以便可以使用 kubectl 连接它。


以下步骤使用 Amazon EC2 实例说明了此过程:


步骤 1: 启动 Amazon EC2 实例,让安全组打开端口并通过 ssh 登录。


  • 登录亚马逊控制台并单击 EC2

  • 在 EC2 Dashboard 上,点击启动实例

  • 选择 Amazon Linux 2 AMI 镜像

  • 选择实例类型(我们将使用 t2.medium)

  • 选择 VPC/Subnet/IAM 等并且启用自动分配公共 IP(一切都保持默认)

  • 添加存储(使用默认配置)

  • 添加标签(如果需要的话)

  • 配置安全组以允许不同端口上的流量(本 demo 中启用所有流量)

  • 选择一个密钥对并且启动实例











EC2 与 Amazon AMI 一起运行


步骤 2: 下载 k3sup 的二进制文件


curl -sLS https://raw.githubusercontent.com/alexellis/k3sup/master/get.sh | sh[root@ip-172-31-33-136 ec2-user]# curl -sLS https://raw.githubusercontent.com/alexellis/k3sup/master/get.sh | shwhich: no k3sup in (/sbin:/bin:/usr/sbin:/usr/bin)x86_64Downloading package https://github.com/alexellis/k3sup/releases/download/0.2.0/k3sup as /tmp/k3supDownload complete.
Running as root - Attempting to move k3sup to /usr/local/binNew version of k3sup installed to /usr/local/bin
复制代码


步骤 3: 将 ssh 密钥复制到 VM 中的’vi /root/.ssh/id_rsa’位置,导出 IP 并使用 k3sup 安装 k3s


[root@ip-172-31-33-136 ec2-user]# **cd /usr/local/bin**
[root@ip-172-31-33-136 bin]# **export IP=54.159.112.255**
[root@ip-172-31-33-136 bin]# **./k3sup install --ip $IP --user ec2-user**
Public IP: 54.159.112.255ssh -i /root/.ssh/id_rsa ec2-user@54.159.112.255
ssh: curl -sLS https://get.k3s.io | INSTALL_K3S_EXEC='server --tls-san 54.159.112.255' sh -[INFO] Finding latest release[INFO] Using v0.8.0 as release[](https://github.com/rancher/k3s/releases/download/v0.8.0/sha256sum-amd64.txt)[](https://github.com/rancher/k3s/releases/download/v0.8.0/k3s)[INFO] Verifying binary download[INFO] Installing k3s to /usr/local/bin/k3swhich: no kubectl in (/usr/local/bin:/usr/bin)[INFO] Creating /usr/local/bin/kubectl symlink to k3swhich: no crictl in (/usr/local/bin:/usr/bin)[INFO] Creating /usr/local/bin/crictl symlink to k3swhich: no ctr in (/usr/local/bin:/usr/bin)[INFO] Creating /usr/local/bin/ctr symlink to k3s[INFO] Creating killall script /usr/local/bin/k3s-killall.sh[INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh[INFO] env: Creating environment file /etc/systemd/system/k3s.service.env[INFO] systemd: Creating service file /etc/systemd/system/k3s.service[INFO] systemd: Enabling k3s unitCreated symlink from /etc/systemd/system/multi-user.target.wants/k3s.service to /etc/systemd/system/k3s.service.[INFO] systemd: Starting k3sResult: [INFO] Finding latest release[INFO] Using v0.8.0 as release[](https://github.com/rancher/k3s/releases/download/v0.8.0/sha256sum-amd64.txt)[](https://github.com/rancher/k3s/releases/download/v0.8.0/k3s)[INFO] Verifying binary download[INFO] Installing k3s to /usr/local/bin/k3s[INFO] Creating /usr/local/bin/kubectl symlink to k3s[INFO] Creating /usr/local/bin/crictl symlink to k3s[INFO] Creating /usr/local/bin/ctr symlink to k3s[INFO] Creating killall script /usr/local/bin/k3s-killall.sh[INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh[INFO] env: Creating environment file /etc/systemd/system/k3s.service.env[INFO] systemd: Creating service file /etc/systemd/system/k3s.service[INFO] systemd: Enabling k3s unit[INFO] systemd: Starting k3swhich: no kubectl in (/usr/local/bin:/usr/bin)which: no crictl in (/usr/local/bin:/usr/bin)which: no ctr in (/usr/local/bin:/usr/bin)Created symlink from /etc/systemd/system/multi-user.target.wants/k3s.service to /etc/systemd/system/k3s.service.
复制代码


它将创建一个 kubeconfig 文件并且保存在你运行命令的目录中。


步骤 4: 导出 KUBECONFIG


[root@ip-172-31-33-136 bin]#** export KUBECONFIG=`pwd`/kubeconfig**
复制代码


步骤 5: 开始玩转 k3s


[root@ip-172-31-33-136 bin]# **./kubectl get nodes**
NAME STATUS ROLES AGE VERSION
ip-172-31-33-136.ec2.internal Ready master 24s v1.14.5-k3s.1

[root@ip-172-31-33-136 bin]# **./kubectl get pods -n kube-system**
NAME READY STATUS RESTARTS AGE
coredns-b7464766c-ngf46 1/1 Running 0 4m3s
helm-install-traefik-x6wfj 0/1 Completed 0 4m3s
svclb-traefik-65gw9 2/2 Running 0 3m49s
traefik-56688c4464-5rdss 1/1 Running 0 3m49s
复制代码


运行一个简单的服务:


# Create a Deployment**./kubectl run nginx --image=nginx**
# Create Service[root@ip-172-31-33-136 bin]# **./kubectl expose deployment nginx --port=80 --target-port=80**
service/nginx exposed
[root@ip-172-31-33-136 bin]# **./kubectl get svc**
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 45m
nginx ClusterIP 10.43.99.179 <none> 80/TCP 5s
[root@ip-172-31-33-136 bin]# **curl 10.43.99.179**
<!DOCTYPE html><html><head><title>Welcome to nginx!</title><style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}</style></head><body><h1>Welcome to nginx!</h1><p>If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.</p><p>For online documentation and support please refer to<a href="http://nginx.org/">nginx.org</a>.<br/>Commercial support is available at<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p></body></html>
复制代码


加入两个节点:是否可以在不登录节点的情况下将节点与主节点连接?是的,k3sup 可以做到这一点。


在 VM 上获得 k3s 设置后,你可以轻松地将节点加入到集群:


#AGENT_IP is the IP of the VM that you want to add to the cluster that has k3s running**export AGENT_IP=54.196.113.156**
#SERVER_IP is the IP of the server where k3 is installed export SERVER_IP=54.159.112.255**export USER=ec2-user**
[root@ip-172-31-33-136 bin]# **./k3sup join --ip $AGENT_IP --server-ip $SERVER_IP --user ec2-user**Server IP: 54.159.112.255ssh -i /root/.ssh/id_rsa ec2-user@54.159.112.255ssh: sudo cat /var/lib/rancher/k3s/server/node-token
K1077d707d0868b652aca7adfc21b5f34a1f0357e71b216bf8b3c94a559cd4f93a6::node:014c8ed3f6574d27db73b9c8bf67f617
ssh: curl -sfL https://get.k3s.io/ | K3S_URL="https://54.159.112.255:6443" K3S_TOKEN="K1077d707d0868b652aca7adfc21b5f34a1f0357e71b216bf8b3c94a559cd4f93a6::node:014c8ed3f6574d27db73b9c8bf67f617" sh -
[INFO] Finding latest release[INFO] Using v0.8.0 as release[](https://github.com/rancher/k3s/releases/download/v0.8.0/sha256sum-amd64.txt)[](https://github.com/rancher/k3s/releases/download/v0.8.0/k3s)[INFO] Verifying binary download[INFO] Installing k3s to /usr/local/bin/k3swhich: no kubectl in (/usr/local/bin:/usr/bin)[INFO] Creating /usr/local/bin/kubectl symlink to k3swhich: no crictl in (/usr/local/bin:/usr/bin)[INFO] Creating /usr/local/bin/crictl symlink to k3swhich: no ctr in (/usr/local/bin:/usr/bin)[INFO] Creating /usr/local/bin/ctr symlink to k3s[INFO] Creating killall script /usr/local/bin/k3s-killall.sh[INFO] Creating uninstall script /usr/local/bin/k3s-agent-uninstall.sh[INFO] env: Creating environment file /etc/systemd/system/k3s-agent.service.env[INFO] systemd: Creating service file /etc/systemd/system/k3s-agent.service[INFO] systemd: Enabling k3s-agent unitCreated symlink from /etc/systemd/system/multi-user.target.wants/k3s-agent.service to /etc/systemd/system/k3s-agent.service.[INFO] systemd: Starting k3s-agentLogs: which: no kubectl in (/usr/local/bin:/usr/bin)which: no crictl in (/usr/local/bin:/usr/bin)which: no ctr in (/usr/local/bin:/usr/bin)Created symlink from /etc/systemd/system/multi-user.target.wants/k3s-agent.service to /etc/systemd/system/k3s-agent.service.Output: [INFO] Finding latest release[INFO] Using v0.8.0 as release[](https://github.com/rancher/k3s/releases/download/v0.8.0/sha256sum-amd64.txt)[](https://github.com/rancher/k3s/releases/download/v0.8.0/k3s)[INFO] Verifying binary download[INFO] Installing k3s to /usr/local/bin/k3s[INFO] Creating /usr/local/bin/kubectl symlink to k3s[INFO] Creating /usr/local/bin/crictl symlink to k3s[INFO] Creating /usr/local/bin/ctr symlink to k3s[INFO] Creating killall script /usr/local/bin/k3s-killall.sh[INFO] Creating uninstall script /usr/local/bin/k3s-agent-uninstall.sh[INFO] env: Creating environment file /etc/systemd/system/k3s-agent.service.env[INFO] systemd: Creating service file /etc/systemd/system/k3s-agent.service[INFO] systemd: Enabling k3s-agent unit[INFO] systemd: Starting k3s-agent


[root@ip-172-31-33-136 bin]# **./kubectl get nodes**
NAME STATUS ROLES AGE VERSION
ip-172-31-33-136.ec2.internal Ready master 19m v1.14.5-k3s.1
ip-172-31-37-118.ec2.internal Ready worker 11s v1.14.5-k3s.1
复制代码


你可以看到使用 k3sup 设置 k3s 集群并在不到 60 秒的时间内将其作为 Amazon EC2 实例上运行的节点加入 VM 是如此容易。赶紧上手尝试吧!


2020-05-16 17:181841

评论 1 条评论

发布
用户头像
看似快,其实要踩坑蛮多的。
例如说,官方的文档,写的比较粗糙。。
2021-08-11 11:04
回复
没有更多了
发现更多内容

百信银行基于 Apache Hudi 实时数据湖演进方案

Apache Flink

大数据 flink

Fluid 进入 CNCF Sandbox,加速大数据和 AI 应用拥抱云原生

阿里巴巴云原生

人工智能 容器 云原生 调度 弹性计算

python str模块

若尘

Python编程 str 5月日更

聊聊人像抠图背后的算法技术

华为云开发者联盟

hilens 抠图 工程 抠图算法 baseline

声网、新东方、伴鱼英语的音视频技术解读

Jessie

音视频 视频消音

给Java小白,整理一套能上手的简单编程算法题!!!

小傅哥

Java 程序员 数据结构 算法 小傅哥

Nginx性能分析之gpreftools

运维研习社

nginx 性能分析 5月日更

参照STM32时钟树配置STM32CubeMX Clock Configuration(STM32L011G4U6为例)

不脱发的程序猿

单片机 STM32微控制器 时钟树 STM32CubeMX STM32时钟配置

追寻软件定义的梦想汽车

车骑

自动驾驶 智能汽车 软件定义汽车 汽车制造

一文带你读懂PyQt:用Python做出与C++一样的GUI界面应用程序

老猿Python

ThreadLocal不好用?那是你没用对!

王磊

Java 后端 多线程 ThreadLocal 5月日更

音视频在智能手表上的应用

anyRTC开发者

音视频 WebRTC IoT RTC

test1

靠谱哥

作为最好用的可观测平台,如何监控 Grafana

耳东@Erdong

Grafana Prometheus 5月日更

不忘过去,不畏将来

小天同学

5月日更 汶川地震 不忘过去

【LeetCode】停在原地的方案数Java题解

Albert

算法 LeetCode 5月日更

SpringBoot技术专题—来看看异步处理返回方案

码界西柚

Java WebAsyncTask 5月日更 AsyncContext DeferredResult

微服务转型系列4:理念指导实践,厘清微服务建设的主要内容和顺序

BoCloud博云

微服务

怎样做好服务提供方

程序员架构进阶

架构设计原则 服务化 28天写作 5月日更

VMWare中Ubuntu网络配置

进击的梦清

Linux 运维 vmware 网络配置

最近又有出什么新电影,要不要停泊片刻,与好友相约一起来去看呢?

叶小鍵

华为中国生态大会2021举行在即,GaussDB将重磅发布5大解决方案

华为云开发者联盟

数据库 opengauss 华为云 GaussDB 云数据库

深度剖析 | 关于数据锁定和读取一致性问题

VoltDB

数据库 数据分析 5G

真实的DevOps落地,应该是这样的 ↓

BoCloud博云

DevOps 敏捷开发

GitHub开源:狗屁不通文章生成器

不脱发的程序猿

GitHub 开源 狗屁不通文章生成器

Arthas-技术专题-使用指南

码界西柚

Arthas 5月日更

51CTO熊平:HarmonyOS是大势所趋

科技汇

如何让消息队列达到最大吞吐量?

万俊峰Kevin

微服务 消息队列 Queue Go 语言

华为云官网负责人明哥:我们是如何做到门面不倒,8个月挑战业界翘楚?

华为云开发者联盟

JavaScript node.js Serverless 云原生 大前端

PyQt5 实现可空值的 QDateTimeEdit

一代咩神

Python PyQt QDateTimeEdit

单片机I/O控制方式(UART中断和DMA中断的区别)

不脱发的程序猿

嵌入式 单片机 GPIO的原理、特性 单片机I/O设备的控制方式

不到1分钟,从零完成k3s Kubeconfig配置!_文化 & 方法_Rancher_InfoQ精选文章