惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
Blog — PlanetScale
Blog — PlanetScale
B
Blog
GbyAI
GbyAI
爱范儿
爱范儿
月光博客
月光博客
N
Netflix TechBlog - Medium
T
Tailwind CSS Blog
G
Google Developers Blog
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
WordPress大学
WordPress大学
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
腾讯CDC
MyScale Blog
MyScale Blog
V
Visual Studio Blog
The Cloudflare Blog
Microsoft Security Blog
Microsoft Security Blog
A
About on SuperTechFans
Google DeepMind News
Google DeepMind News
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
K3S的一些基础使用配置 - 少数派
2020-02-23 · via 少数派

K3S 是专门针对 IoT 和边缘计算(Edge computing)设备开发的轻量级 Kubernetes 集群软件,特别适合低配置硬件的设备上使用比如树莓派(Raspberry Pi)或者OpenWrt的路由器设备上。K3S有单机和高可用(High-Availability)两种使用方式,官方文档在这里

安装 K3S

K3S 的安装非常简单,你可以通过一下命令直接安装。

curl -sfL https://get.k3s.io | sh -

但是有几个点需要注意的是,如果你的公网IP没有直接绑定到机器上(通过命令 ifconfig 查看)那么则需要加上--tls-san ip这个参数,以到达从公网通过 kube-config 来访问集群。

curl -sLS https://get.k3s.io | INSTALL_K3S_EXEC='server --tls-san 10.10.10.10' sh -

等待安装成功后,就可将 kubernetes 集群的 kubeconfig 文件下载本地电脑中,默认存放到 ~/.kube/ 目录中

cat /etc/rancher/k3s/k3s.yaml

修改 kubeconfig 文件的IP地址内容来达到远程访问管理集群的目的。

server: https://10.10.10.10:6443

接着在本地电脑的 Terminal 命令行工具中导出 kubeconfig 的环境变量即可。

export KUBECONFIG=~/.kube/my-k3s

添加 Worker 节点

如果有多台机器组成集群的话,可以给安装命令添加 K3S_TOKEN=mynodetoken 来完成。
K3S_TOKEN 存储在 master 节点的 /var/lib/rancher/k3s/server/node-token

如果 Worker 节点已经安装成功,则可以通过下面的命令来加入集群。

K3S_TOKEN=SECRET k3s agent --server https://fixed-registration-address:6443

Helm

Helm 是 kubernetes 非常好用的软件管理工具,K3S 默认开启 Helm 的支持。本地电脑可以通过官方文档的页面进行安装。安装后需要手动添加 Stable Repo

helm repo add stable https://kubernetes-charts.storage.googleapis.com
注意:本文例子都使用 Helm3 来操作,Helm 的 2.x 版本与 3.x 版本使用上有些不同。

Traefik

Traefik 是 kubernetes 的路由组件,可以将访问流量分发到不同的服务,可以简单理解为 Nginx。K3S 同样默认安装了该组件,你可以试着访问你的 IP 地址看看,如果你能看到一个 404 网页,那么说明 traefik 组件已经正常工作了。

Local Storage Provider

K3S 同样默认安装了本地存储服务,方便支持部署有状态的服务,比如 MySQL。你可以通过下面的命令查看状态。

kubectl get storageclass

## 你将会看到如下的信息
NAME                   PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local-path (default)   rancher.io/local-path   Delete          WaitForFirstConsumer   false                  47m

TLS 证书的自动化配置

Let’s Encrypt 是一个免费的 TLS 证书颁发服务,我们可以利用它来为我们自己的服务做 HTTPS 加持。因为 Let's Encrypt 颁发的证书只有 90 天的有效期,所以我们需要一个定时任务在证书过期之前延续有效期。还有就是当我们部署新服务的时候,也需要自动帮我们生成一个新的证书。

cert-manager 就是这样的一个服务,根据官方文档的描述,我们可以通过下面的方式来安装它。

# 首先我们添加自定义资源
kubectl apply --validate=false -f https://raw.githubusercontent.com/jetstack/cert-manager/v0.13.0/deploy/manifests/00-crds.yaml

# 接着创建命名空间
kubectl create namespace cert-manager

# 添加 Helm 的 Repo
helm repo add jetstack https://charts.jetstack.io

# 最后通过 Helm 进行安装
helm install \
  cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --version v0.13.1

接下来需要创建一个 Issuer 资源,用来关联 Let's Encrypt 操作证书,关于 cert-managger 的 Issues 概念的更多信息,可以查看官网文档

# 下面这条命令,会在当前目录创建一个 letsencrypt-prod-issuer.yaml 文件,然后写入下面。
cat <<EOF > letsencrypt-prod-issuer.yaml
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    # You must replace this email address with your own.
    # Let's Encrypt will use this to contact you about expiring
    # certificates, and issues related to your account.
    email: gongzili456@gmail.com
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      # Secret resource used to store the account's private key.
      name: letsencrypt-prod
    # Add a single challenge solver, HTTP01 using nginx
    solvers:
      - http01:
          ingress:
            class: traefik
EOF

# 然后通过上面创建的文件来创建 Issues 资源
kubectl apply -f letsencrypt-prod-issuer.yaml

安装应用

现在我们已经拥有一个完备的 kubernetes 集群了,是时候安装一个应用了。这里选用安装 nginx 项目来达到演示效果,你可以在这里查看部署的配置文件。

kubectl apply -f https://gist.githubusercontent.com/gongzili456/6f03623771ed02ea4a937aa969ac6d2d/raw/e156ebf8a4d168b7a8562a3a827daf8f22a6a1d8/nginx-k8s.yaml

删除演示应用

kubectl delete -f https://gist.githubusercontent.com/gongzili456/6f03623771ed02ea4a937aa969ac6d2d/raw/e156ebf8a4d168b7a8562a3a827daf8f22a6a1d8/nginx-k8s.yaml

至此我们拥有了一个基本可用的部署环境,方便我们做 side project。