写点什么

不到 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:181702

评论 1 条评论

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

分享10个降低PCB成本的技巧!可收藏

华秋PCB

PCB PCB打样 PCB设计

现在加入写作社区,惊喜等你开启!

InfoQ写作社区官方

热门活动

深入浅出文件系统新形态

焱融科技

云计算 高性能 文件存储

React源码中的dom-diff

夏天的味道123

React

【云服务器】云服务器哪家好用便宜服务好?

行云管家

云计算 企业上云 云服务器 行云管家

java程序员培训和自学的区别

小谷哥

什么是 HTML 语义化,有什么好处

肥晨

11月月更 HTML语义化 语义化标签

安防小间距LED显示屏的解决方案是什么

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

9个GaussDB常用的对象语句

华为云开发者联盟

数据库 后端 华为云 企业号十月 PK 榜

【LeetCode】验证栈序列Java题解

Albert

算法 LeetCode 11月月更

react hook 源码完全解读

flyzz177

React

【GitHub60K+Star】12W字Java后端技术总结,助力2023年春招

程序知音

程序员 java面试 面试技巧 后端技术 Java面试八股文

React生命周期深度完全解读

夏天的味道123

React

React中常见的TypeScript定义实战

xiaofeng

React

web前端培训有哪些比较好?

小谷哥

React-hooks+TypeScript最佳实战

xiaofeng

React

React源码解读之更新的创建

flyzz177

React

一文总结JavaScript手写面试题

helloworld1024fd

JavaScript

React-diff原理及应用

xiaofeng

React

热备与冷备分别是什么意思?怎么通俗理解?

行云管家

高可用 热备 冷备

想开发DAYU200,我教你

华为云开发者联盟

开发 华为云 开发板 企业号十月 PK 榜 富设备

React源码解读之任务调度

flyzz177

React

从零手写react-router

helloworld1024fd

JavaScript

React核心技术浅析

夏天的味道123

React

为何大企业都纷纷选择低代码做数字化转型?

优秀

数字化 低代码开发

从延迟处理讲起,JavaScript 也能惰性编程?

掘金安东尼

前端 11月月更

前端培训机构学习比较好的方法

小谷哥

大数据培训自学怎么样?

小谷哥

前端线下培训和线上培训学习哪个更好?

小谷哥

从零开始实现一个Promise

helloworld1024fd

JavaScript

那些年面挂的js手写题

helloworld1024fd

JavaScript

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