以下是基于 rancher 2.6.8 版本
一、本地开发环境的搭建
1. 安装 docker
我这里直接安装 docker desktop 最新版本。安装包和方法自行百度
2. 安装 kubectl
kubectl 是管理 Kubernetes 的工具
brew install kubectl
命令
命令 | 说明 |
---|---|
kubectl get pods -A |
列出所有 pod |
kubectl get crd |
列出所有 crd |
kubectl get deployments -A |
列出所有 deployments |
kubectl get services |
列出所有 services |
kubectl api-resources |
列出 api 资源 |
3. 安装 k3d
k3d 是一个在 docker 上部署 k3s(k3s 是 Rancher Lab 的最小 Kubernetes 发行版,mini 版 k8s) 的工具。
使用brew
工具安装 k3d
brew install k3d
命令
命令 | 说明 |
---|---|
k3d cluster ls |
查看已经创建的 k3s 集群 |
k3d cluster delete xxx |
删除指定的 k3s 集群 |
k3d cluster create |
创建 k3s 集群,示例如下 4 |
k3d cluster start/stop xxx |
启动或关闭 xxx 集群 |
k3d kubeconfig get xxx |
获取 xxx 集群的 kubectl 配置文件 |
k3d node list |
列出当前所有 node |
k3d node start/stop xxx |
启动或关闭 xxx node |
k3d registry list |
列出所有注册表信息 |
k3d version |
k3d 版本信息 |
4. 使用 k3d 创建 k3s 集群
如果你运行的是 rancher 的最新版本,直接使用最新 k3s 就行。如果其他版本。查看 rancher 的各种版本支持。我这里用的是 v1.20.14
k3d cluster create mycluster --api-port 127.0.0.1:6443 --port '8080:80@loadbalancer' -i rancher/k3s:v1.20.14-k3s2
创建参数说明
参数 | 说明 |
---|---|
--api-port |
定义 Kubernetes API 在负载均衡上面的端口号 |
--port |
将端口从节点容器映射到主机 |
-i |
指定要使用的 k3s 镜像 |
执行创建命令会有如下输出(第一次时间可能会长一点,因为要下载镜像)
rancher2.6 » k3d cluster create aaa --api-port 127.0.0.1:7443 --port '8089:80@loadbalancer' -i rancher/k3s:v1.20.14-k3s2 ~/Desktop/Projects/rancher2.6
INFO[0000] portmapping '8089:80' targets the loadbalancer: defaulting to [servers:*:proxy agents:*:proxy]
INFO[0000] Prep: Network
INFO[0000] Created network 'k3d-aaa'
INFO[0000] Created image volume k3d-aaa-images
INFO[0000] Starting new tools node...
INFO[0000] Starting Node 'k3d-aaa-tools'
INFO[0001] Creating node 'k3d-aaa-server-0'
INFO[0001] Creating LoadBalancer 'k3d-aaa-serverlb'
INFO[0001] Using the k3d-tools node to gather environment information
INFO[0001] Starting new tools node...
INFO[0001] Starting Node 'k3d-aaa-tools'
INFO[0002] Starting cluster 'aaa'
INFO[0002] Starting servers...
INFO[0002] Starting Node 'k3d-aaa-server-0'
INFO[0006] All agents already running.
INFO[0006] Starting helpers...
INFO[0006] Starting Node 'k3d-aaa-serverlb'
INFO[0012] Injecting records for hostAliases (incl. host.k3d.internal) and for 3 network members into CoreDNS configmap...
INFO[0014] Cluster 'aaa' created successfully!
INFO[0014] You can now use it like this:
kubectl cluster-info
创建成功后可以看到如下信息(这里如果出现下载镜像失败信息,需要"上网")
# kubectl cluster-info
Kubernetes control plane is running at https://127.0.0.1:7443
CoreDNS is running at https://127.0.0.1:7443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://127.0.0.1:7443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
# kubectl get pods -A ~/Desktop/Projects/rancher2.6
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system local-path-provisioner-5f8bbd68f9-jqg2w 1/1 Running 0 3m19s
kube-system coredns-5cfbb9f57c-kr688 1/1 Running 0 3m19s
kube-system metrics-server-d8ccb79c9-whmwp 1/1 Running 0 3m19s
kube-system helm-install-traefik-crd-vcljg 0/1 Completed 0 3m20s
kube-system helm-install-traefik-2vd7f 0/1 Completed 1 3m20s
kube-system svclb-traefik-bc187feb-6rq57 2/2 Running 0 67s
......
:如果
kubectl
无法链接到 k3d 可能是因为 kube 的 config 没有自动写入,这里执行 k3d kubeconfig get mycluster
将输入的内容复制到 ~/.kube/config
中即可。
5. rancher 代码环境配置
我这里使用的 goland。不同版本的 rancher 代码使用的 go 版本也不同。
查看根目录下的go.mod
文件中要求的 go 版本。我这里是 1.17
-
配置 goland 中 GOPATH 环境变量。
我这里自定义了一个 GOPATH 地址
![](https://img.haomeiwen.com/i11480804/4ae6d59a015a7e86.png)
-
rancher 项目在本地的目录结构
rancher 的项目放在
rancher/src/github.com/rancher
目录下。
rancher
├── pkg
│ └── mod
└── src
├── github.com
│ └── rancher
│ └──rancher
└── k8s.io
-
配置 build 文件
![](https://img.haomeiwen.com/i11480804/d5d1333d029d5158.png)
配置说明
参数 | 配置 |
---|---|
Files |
指定到 rancher 项目中的 main.go 文件 |
Environment |
CATTLE_DEV_MODE=30 KUBECONFIG=/Users/AAAA/.kube/config 这个是 kubectl 的配置文件地址 CATTLE_SYSTEM_CHART_DEFAULT_BRANCH=dev-v2.6 这里根据使用版本改变如:dev-2.6 dev-2.7 |
Go tool arguments |
-gcflags="-N -l" |
Program arguments |
--add-local=true |
-
执行
go mod vendor
下载需要的 go 包(这里可能需要"上网")
执行成功后可以看到
pkg/mod/
下面会多出来什么包
6. 运行 rancher 代码
这里执行在 goland 中配置的 go build 文件
: 执行完成后在日志中搜索一下 password 会看到第一次执行 rancher 成功后给出的默认密码
2023/01/09 10:07:51 [INFO] Starting management.cattle.io/v3, Kind=Group controller
2023/01/09 10:07:51 [INFO] Creating create-ns
2023/01/09 10:07:51 [INFO] Waiting for initial data to be populated
2023/01/09 10:07:51 [INFO] Creating ingress-manage
2023/01/09 10:07:51 [INFO] Creating admin
2023/01/09 10:07:51 [INFO]
2023/01/09 10:07:51 [INFO] -----------------------------------------
2023/01/09 10:07:51 [INFO] Welcome to Rancher
2023/01/09 10:07:51 [INFO] A bootstrap password has been generated for your admin user.
2023/01/09 10:07:51 [INFO]
2023/01/09 10:07:51 [INFO] Bootstrap Password: v4vrq7lnvlzk4k75vgkt4d8lp44hrf47842hdbhc6ng8tbzj76fm5z
2023/01/09 10:07:51 [INFO]
2023/01/09 10:07:51 [INFO] Use https://172.20.10.3/dashboard/?setup=v4vrq7lnvlzk4k75vgkt4d8lp44hrf47842hdbhc6ng8tbzj76fm5z to complete setup in the UI
2023/01/09 10:07:51 [INFO] -----------------------------------------
-
访问
https://localhost:8443/
就可以正常登录了。
他这里的提示也是让你去找密码。因为本地执行的 rancher 代码所以密码查找方式 如上
![](https://img.haomeiwen.com/i11480804/0b1694198d2c91cc.png)
在然后修改密码。登录,就可以看到下图中的集群列表了
![](https://img.haomeiwen.com/i11480804/e05e609f9aeb00d7.png)
网友评论