kubernetes集群安装环境
- 虚拟机:vmware 17
- OS:Ubuntu server 22.04
七个虚拟主机:
- ks: 192.168.3.10 Kuboard-Spray和Kuboard节点
- n1: 192.168.3.11 k8s集群控制节点
- n2: 192.168.3.12 k8s集群控制节点
- n3: 192.168.3.13 k8s集群控制节点
- n4: 192.168.3.14 k8s集群工作节点
- n5: 192.168.3.15 k8s集群工作节点
- n6: 192.168.3.16 k8s集群工作节点
最终集群架构如下图:
Ubuntu Server设置静态IP
将每个虚拟机的ip设置为固定IP:
vim /etc/netplan/00-installer-config.yaml
cody@n1:~$ cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
ens33:
dhcp4: no
addresses:
- 192.168.3.11/24
optional: true
routes:
- to: default
via: 192.168.3.1
nameservers:
addresses:
- 114.114.114.114 # 首选 DNS 服务器
- 8.8.8.8 # 备用 DNS 服务器
version: 2
修改配置后,应用刷新配置:
sudo netplan apply
Ubuntu Server设置允许root用户远程连接
kuboard-spray创建的集群节点只允许使用root用户。
vi /etc/ssh/sshd_config
添加如下一行配置:
PermitRootLogin yes
kuboard-spray主机安装docker
kuboard-spray主机需要预先安装docker.
- 更新
apt包索引并安装包以允许apt通过 HTTPS 使用存储库:
$ sudo apt-get update
$ sudo apt-get install ca-certificates curl gnupg lsb-release
- 添加 Docker 的官方 GPG 密钥:
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- 使用以下命令设置存储库:
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 安装 Docker Engine、containerd 和 Docker Compose:
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- 设置国内镜像源:
vi /etc/docker/daemon.json
输入以下内容:
{
"registry-mirrors": [
"https://registry.cn-hangzhou.aliyuncs.com",
"https://mirror.ccs.tencentyun.com",
"https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com"
]
}
安装Kuboard-Spray
使用以下命令安装最新版本的Kuboard-Spray
docker run -d \
--privileged \
--restart=unless-stopped \
--name=kuboard-spray \
-p 80:80/tcp \
-e TZ=Asia/Shanghai \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/kuboard-spray-data:/data \
eipwork/kuboard-spray:latest-amd64
# 如果您是 arm64 环境,请将标签里的 amd64 修改为 arm64,例如 eipwork/kuboard-spray:latest-arm64
# 如果抓不到这个镜像,可以尝试一下这个备用地址:
# swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard-spray:latest-amd64
在浏览器打开地址 http://192.168.3.10 输入用户名admin,默认密码Kuboard123,即可登录Kuboard-Spray界面。
进入主界面后,先在【资源包管理】模块中导入Kuboard-Spray 离线资源包。选择最新的k8s v1.25.5版本。
然后进入【集群管理】创建集群。填写集群名称,选择集群资源包。
点击确定,进入集群规划界面。将节点的IP,u/p和etcd名称进行配置即可。配完后,点击【验证连接】验证是否能正常连接节点。
节点配置完成,点击【安装/设置集群】->【确定】进入集群安装过程。
安装过程持续时间取决于你的集群大小、硬件配置和网速,本次31分钟安装成功。
安装Kuboard
kuboard-spray在安装集群时,支持在可选组件中配置安装Kuboard.
但我不想安装在K8s集群中,所以选择在ks节点上使用docker安装。
docker run -d --restart=unless-stopped --name=kuboard -p 8080:80/tcp -p 10081:10081/tcp -e KUBOARD_ENDPOINT="http://192.168.3.10:8080" -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" -v /root/kuboard-data:/data eipwork/kuboard:v3
浏览器输入 192.168.3.10:8080
u/p: admin/Kuboard123
主界面导入集群,选择kubeconfig方式。
回到Kuboard Spray【集群管理】菜单,切换到【访问集群】页,点击【获取kubeconfig文件】按钮,再点 点击【复制到剪贴板】,拷贝kubeconfig文件内容。
再回到Kuboard,添加集群。拷贝kubeconfig文件内容后,Context和API Server会自动填充。
点击【确定】,集群就导入成功了。
安装Kubernetes dashboard
本地配置好kubeconfig文件,配置文件地址: ~/.kube/config。
C:\Users\Lenovo>kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
查看pod状态是否就绪。
C:\Users\Lenovo>kubectl get pods -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-64bcc67c9c-vwrtq 0/1 ContainerCreating 0 11s
kubernetes-dashboard-5c8bd6b59-pdhpn 0/1 ContainerCreating 0 12s
C:\Users\Lenovo>kubectl get pods -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-64bcc67c9c-vwrtq 1/1 Running 0 2m44s
kubernetes-dashboard-5c8bd6b59-pdhpn 1/1 Running 0 2m45s
pod就绪后,在本地开启代理:
C:\Users\Lenovo>kubectl proxy
Starting to serve on 127.0.0.1:8001
然就可通过以下链接进行访问:
为了保护集群数据,默认情况下,Dashboard会使用最少的RBAC配置进行部署。Dashboard目前仅支持使用Bearer令牌登录。因此需要要创建一个名为admin-user的ServiceAccount,再创建一个ClusterRolebinding,将其绑定到 Kubernetes集群中默认初始化的 cluster-admin角色
创建服务账户
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
创建ClusterRoleBinding
通常集群安装完成后,会生成cluster-admin角色,如果没有则需要创建。
然后将帐号admin-user绑定到集群角色cluster-admin.
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
获取令牌
执行以下命令获得令牌:
C:\Users\Lenovo>kubectl -n kubernetes-dashboard create token admin-user
eyJhbGciOiJSUzI1NiIsImtpZCI6IktJbHJxd2JfX3YydWJrWU9Za1ByalVSLVdRSHl0Mk0wbU1MZER6d2V3TUkifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNjczOTUzOTQ0LCJpYXQiOjE2NzM5NTAzNDQsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbi11c2VyIiwidWlkIjoiMTEzMjAxYTgtNWFjYi00YWMwLWIwOGUtOTlkNWY1ZmI5OGE0In19LCJuYmYiOjE2NzM5NTAzNDQsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbi11c2VyIn0.AxaHq0vadKfhIf6z-NSXyuYh_iSSB2F99dijtj-u9AeAMM1sLbqTuGlSRnOnwuW-c0B5v80SM_6yaUJ3qP4KbDXXr190qY1fZ_DpzjXIRI1tjvbqosDKzK3_dYa8PCq8N-ZQAxRaizf4HnfGmtoD8WDJ8NrmxCzV3QXJ5lAImsmIsa7JLBD9n5i_xfqxh03QkgzZA7cDjiEQJDatpuIdDJ2udTRYDq4jDrzrncdbmRou5AhL1Jw1blq5jrmlULvD8kw6WSkkJubtPV6j3OmS233wuXroa2nd-8Rl2THgsr8iFwAfdVEWK6PlQWG89KZ8ndROyAQrQfSSqiENN2ws4Q
复制令牌并将其粘贴到登录界面中的输入 token字段中,点击确定即可成功登录。
参考文档:
- Kuboard Spray安装说明(Kuboard Spray官方文档) kuboard-spray.cn/
- Kuboard安装说明 (Kuboard 官方文档) press.demo.kuboard.cn/install/v3/…
- Kubernetes dashboard安装说明(Kubernetes 官方文档) kubernetes.io/zh-cn/docs/…
- 创建dashboard用户(Kubernetes 官方文档)dashboard/creating-sample-user.md at master · kubernetes/dashboard (github.com)
- Kubernetes dashboard安装说明(Kuboard 官方文档)kuboard.cn/install/ins…