NipGeihou's blog NipGeihou's blog
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档

NipGeihou

我见青山多妩媚,料青山见我应如是
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档
  • Linux

  • Docker

  • 云原生

  • Kubernetes

  • KubeSphere

  • K3S

    • 概念
    • 示例-搭建es集群
      • 硬件配置
      • Master节点
        • 安装 Docker
        • 安装 k3s
        • 查看 NODE_TOKEN
      • Work 节点
      • AutoK3s
      • Rancher
        • 保存 k3s配置
        • 安装 kubectl
        • 安装 helm
        • 安装 Rancher
      • kube-explorer⭐️
      • Kubernetes Dashboard
        • 安装
        • RBAC 配置
        • 获取 token
        • 代理访问 - 服务器
        • 代理访问 - 本机
      • 参考
  • 笔记

  • PVE

  • 维修

  • DevOps

  • 云服务

  • 路由器

  • Hyper-V

  • Windows

  • macOS

  • 运维
  • K3S
NipGeihou
2023-07-24
目录

示例-搭建es集群

# 硬件配置

示例用到 4 台 2c 4g 虚拟机,其中 1 台部署 rancher,其他部署 k3s

# Master 节点

# 安装 Docker

默认使用 containerd,可以不装

参考:https://docs.rancher.cn/docs/rancher2/installation/requirements/installing-docker/_index/ (opens new window)

curl https://releases.rancher.com/install-docker/20.10.sh | sh

# 安装 k3s

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

# 安装指定版本的k3s,避免与ranches不兼容
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=<VERSION> sh
# curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION="v1.26.6+k3s1" sh

在 rancher 2.7.5・helm/rancher-stable (opens new window) 查看 KUBERNETES VERSION 要求,本文编写时为 < 1.27.0-0 ,因此需要安装一个小于 1.27 的版本,而直接执行不带命令的则安装了 v1.27.3+k3s1 。只好卸载重新安装。

k3s 具体版本号查看:Releases · k3s-io/k3s (opens new window)

卸载命令
# 卸载
/usr/local/bin/k3s-uninstall.sh

# 查看 NODE_TOKEN

Work 节点加入时需要

cat /var/lib/rancher/k3s/server/node-token

# Work 节点

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="agent --server https://<Master节点ip>:6443 --token <Master节点NODE_TOKEN>" sh -s -

# 或使用国内镜像
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://MASTER_URL:6443 K3S_TOKEN=NODE_TOKEN INSTALL_K3S_SKIP_SELINUX_RPM=true INSTALL_K3S_EXEC="--docker" sh -

# AutoK3s

笔记

感觉 UI 还是个半成品,不太好用,命令行才是本体

文档:https://docs.rancher.cn/docs/k3s/autok3s/_index

仓库:https://github.com/cnrancher/autok3s/releases (查看最新版)

一个批量安装 K3s 节点的工具

# 方式一,直接安装
# 安装AutoK3s 【linux、mac】
curl -sS https://rancher-mirror.rancher.cn/autok3s/install.sh  | INSTALL_AUTOK3S_MIRROR=cn sh

# 启动
autok3s serve


# 方式二:Docker
docker run -itd --restart=unless-stopped -p 8080:8080 cnrancher/autok3s:v0.6.0
# 卸载
/usr/local/bin/autok3s-uninstall.sh

# Rancher

注意

对于配置限制的服务器来讲,不建议安装这个,至少需要 8G 的内存。

如果仅仅是需要一个可视化界面代替命令行做一些基本操作,推荐使用 Kubernetes Dashboard

笔记

下述操作实际为在服务器 B 远程服务器 A 进行操作,最终是部署在服务器 A 上,因此服务器 B 配置要求不高,服务器 A 至少是 8G

参考:Helm CLI 快速入门 | Rancher (opens new window)

# 保存 k3s 配置

# 如果没有这个目录,需要提前创建
mkdir -p /root/.kube

# 根据需要修改 /root/.kube/config 中的节点ip地址
vim /root/.kube/config



scp root@<IP_OF_LINUX_MACHINE>:/etc/rancher/k3s/k3s.yaml ~/.kube/config


# 安装 kubectl

参考:在 Linux 系统中安装并设置 kubectl | Kubernetes (opens new window)

# 更新 apt 包索引,并安装使用 Kubernetes apt 仓库所需要的包:
sudo apt-get update
sudo apt-get install -y ca-certificates curl

# 下载 Google Cloud 公开签名秘钥
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg

# 添加 Kubernetes apt 仓库
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

# 更新 apt 包索引,使之包含新的仓库并安装 kubectl:
sudo apt-get update
sudo apt-get install -y kubectl

# 安装 helm

参考:Helm | Installing Helm (opens new window)

# 先安装 kubectl 和 helm
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

# 安装 Rancher

helm repo add rancher-latest https://releases.rancher.com/server-charts/latest

kubectl create namespace cattle-system

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.2/cert-manager.crds.yaml

helm repo add jetstack https://charts.jetstack.io

helm repo update

# 安装可能比较久,坐和放宽,中途中断就要 helm uninstall cert-manager -n cert-manager 卸载重来
helm install cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --create-namespace \
  --version v1.12.2

查看 cert-manager 最新版本:cert-manager/cert-manager (opens new window)

helm install rancher rancher-latest/rancher \
  --namespace cattle-system \
  --set hostname=<IP_OF_LINUX_NODE>.sslip.io \
  --set replicas=1 \
  --set bootstrapPassword=<PASSWORD_FOR_RANCHER_ADMIN>
成功安装时的打印输出
NAME: rancher
LAST DEPLOYED: Mon Jul 24 17:11:37 2023
NAMESPACE: cattle-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Rancher Server has been installed.

NOTE: Rancher may take several minutes to fully initialize. Please standby while Certificates are being issued, Containers are started and the Ingress rule comes up.

Check out our docs at https://rancher.com/docs/

If you provided your own bootstrap password during installation, browse to https://rancher.nipx.cn to get started.

If this is the first time you installed Rancher, get started by running this command and clicking the URL it generates:

```
echo https://rancher.nipx.cn/dashboard/?setup=$(kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}')
```

To get just the bootstrap password on its own, run:

```
kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}{{ "\n" }}'
```


Happy Containering!

可能用到的命令

# helm 应用列表
helm ls --all-namespaces

# 卸载
helm uninstall <name> -n <namespace>
# helm uninstall cert-manager -n cert-manager

# kube-explorer⭐️

Rancher 中国团队开发的一个 dashboard,是我理想中的 dashboard,即阉割版的 Rancher。

下载最新版:https://github.com/cnrancher/kube-explorer/releases

# 下载
wget https://github.com/cnrancher/kube-explorer/releases/download/v0.3.3/kube-explorer-linux-amd64

# 执行权限
chmod +x kube-explorer-linux-amd64

# 运行
./kube-explorer-linux-amd64 --kubeconfig /root/.kube/config --http-listen-port=9890 --https-listen-port=0

笔记

如果出现没反应,可能是 kubeconfig 配置错了。

# Kubernetes Dashboard

# 安装

最新版本参考:https://github.com/kubernetes/dashboard/releases (opens new window)

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

# RBAC 配置

dashboard.admin-user.yml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard

dashboard.admin-user-role.yml

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard

部署

sudo k3s kubectl create -f dashboard.admin-user.yml -f dashboard.admin-user-role.yml

# 获取 token

sudo k3s kubectl -n kubernetes-dashboard create token admin-user

# 代理访问 - 服务器

# 前台启动, 注意会占用终端窗口
k3s kubectl proxy
# kubectl proxy

开启后可在本机通过 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ 访问,而如果需要 SSH 端口转发,如使用 MobaXterm 的 Tunneling 功能

# 代理访问 - 本机

在本机运行此命令,也可以访问。前提需要安装 kubectl 命令以及配置 ~/.kube/config 。

kubectl proxy

但 token 似乎还是需要使用服务器生成,本地生成的无法访问。

参考:

  • Kubernetes 仪表板 | K3s (opens new window)
  • 部署和访问 Kubernetes 仪表板(Dashboard) | Kubernetes (opens new window)
  • kubernetes - 访问 K8s Dashboard 的几种方式 - 个人文章 - SegmentFault 思否 (opens new window)

# 参考

  • 從零搭建 K3S 和 RANCHER 2.6 /// HomeLab 001 - YouTube (opens new window)
  • AutoK3s 特性全 demo,简化公有云 K3s 部署_哔哩哔哩_bilibili (opens new window)
上次更新: 2023/08/31, 21:50:16
概念
基于KtConnect实现本地与kubernetes集群互通

← 概念 基于KtConnect实现本地与kubernetes集群互通→

最近更新
01
元器件
05-23
02
iSCSI服务搭建
05-10
03
磁盘管理与文件系统
05-02
更多文章>
Theme by Vdoing | Copyright © 2018-2025 NipGeihou | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式