示例-搭建es集群
# 硬件配置
示例用到 4 台 2c 4g 虚拟机,其中 1 台部署 rancher,其他部署 k3s
# Master 节点
# 安装 Docker
默认使用 containerd,可以不装
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)