Kubernetes - 一键安装部署 K8S(附:Kubernetes Dashboard)-CSDN博客
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
问题描述
不知道大伙是如何安装 K8s特别还是集群的时候我上一次安装搭建的时候那个恶心到我了真的是一步一个脚印走完整个搭建流程爬了不少坑。
于是才有了今天的文章到底有没有可以一键完美部署 k8s 并且附带 Dashboard……那这么问了肯定是有的否则岂不是在这自作多情~ 哈哈哈不废话直接 3 2 1 上干货
大佬登场
kubeasz 致力于提供快速部署高可用k8s
集群的工具, 同时也努力成为k8s
实践、使用的参考书基于二进制方式部署和利用ansible-playbook
实现自动化既提供一键安装脚本, 也可以根据安装指南
分步执行安装各个组件。
kubeasz 从每一个单独部件组装到完整的集群提供最灵活的配置能力几乎可以设置任何组件的任何参数同时又为集群创建预置一套运行良好的默认配置甚至自动化创建适合大规模集群的BGP Route Reflector网络模式。
- 集群特性 Master高可用、离线安装、多架构支持(amd64/arm64)
- 集群版本 kubernetes v1.24, v1.25, v1.26, v1.27, v1.28
- 运行时 containerd v1.6.x
- 网络 calico, cilium, flannel, kube-ovn, kube-router
[news] kubeasz 通过cncf一致性测试 详情
推荐版本对照
Kubernetes version | 1.22 | 1.23 | 1.24 | 1.25 | 1.26 | 1.27 | 1.28 |
kubeasz version | 3.1.1 | 3.2.0 | 3.6.2 | 3.6.2 | 3.6.2 | 3.6.2 | 3.6.2 |
支持系统
- Alibaba Linux 2.1903, 3.2104(notes)
- Alma Linux 8, 9
- Anolis OS 8.x RHCK, 8.x ANCK
- CentOS/RHEL 7, 8, 9
- Debian 10, 11(notes)
- Fedora 34, 35, 36, 37
- openSUSE Leap 15.x(notes)
- Rocky Linux 8, 9
- Ubuntu 16.04, 18.04, 20.04, 22.04
能够支持大部分使用systemd的linux发行版如果安装有问题先请查看文档如果某个能够支持安装的系统没有在列表中请留言。
安装指南
00-规划集群和配置介绍 | 02-安装etcd集群 | 04-安装master节点 | 06-安装集群网络 |
01-创建证书和安装准备 | 03-安装容器运行时 | 05-安装node节点 | 07-安装集群插件 |
使用指南
常用插件+ | DNS | dashboard | metrics-server | prometheus | efk |
集群管理+ | 管理node节点 | 管理master节点 | 管理etcd节点 | 升级集群 | 备份恢复 |
特性实验 | NetworkPolicy | RollingUpdate | HPA | ||
周边生态 | harbor | helm | jenkins | gitlab | argocd |
快速指南
- 适用于 kubeasz 3.3.1 以上版本部署单节点集群(aio)作为快速体验k8s集群的测试环境
1、基础系统配置
- 准备一台虚机配置内存2G/硬盘30G以上
- 最小化安装
Ubuntu 16.04 server或者CentOS 7 Minimal
- 配置基础网络、更新源、SSH登录等
注意: 确保在干净的系统上开始安装不能使用曾经装过kubeadm或其他k8s发行版的环境
2、下载文件
- 下载工具脚本ezdown举例使用kubeasz版本3.5.0
export release=3.5.0
wget https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown
chmod +x ./ezdown
- 使用工具脚本下载更多关于 ezdown 的参数运行“./ezdown”查看
- 注意如果使用 wget github 下载访问太慢可以直接在 github 上选中好 3.5.0 tag 版本下载 zip 解压缩到对应的系统里即可文件夹里面就会存在一个 ezdown 文件噢~
下载kubeasz代码、二进制、默认容器镜像
# 国内环境
./ezdown -D
# 海外环境
#./ezdown -D -m standard
【可选】下载额外容器镜像cilium,flannel,prometheus等
# 按需下载
./ezdown -X flannel
./ezdown -X prometheus
...
【可选】下载离线系统包 (适用于无法使用yum/apt仓库情形)
./ezdown -P
上述脚本运行成功后所有文件kubeasz代码、二进制、离线镜像均已整理好放入目录/etc/kubeasz
/etc/kubeasz
包含 kubeasz 版本为 ${release} 的发布代码/etc/kubeasz/bin
包含 k8s/etcd/docker/cni 等二进制文件/etc/kubeasz/down
包含集群安装时需要的离线容器镜像/etc/kubeasz/down/packages
包含集群安装时需要的系统基础软件
3、安装集群
- 容器化运行 kubeasz
./ezdown -S
- 使用默认配置安装 aio 集群
docker exec -it kubeasz ezctl start-aio
# 如果安装失败查看日志排除后使用如下命令重新安装aio集群
# docker exec -it kubeasz ezctl setup default all
4、验证安装
source ~/.bashrc
kubectl version # 验证集群版本
kubectl get node # 验证节点就绪 (Ready) 状态
kubectl get pod -A # 验证集群pod状态默认已安装网络插件、coredns、metrics-server等
kubectl get svc -A # 验证集群服务状态
5、清理
以上步骤创建的K8S开发测试环境请尽情折腾碰到错误尽量通过查看日志、上网搜索、提交issues
等方式解决当然你也可以清理集群后重新创建。
在宿主机上按照如下步骤清理
- 清理集群
docker exec -it kubeasz ezctl destroy default
- 重启节点以确保清理残留的虚拟网卡、路由等信息
附Dashboard
基于 dashboard 2.2 版本k8s 1.22 版本因 dashboard 1.7 以后默认开启了自带的登录验证机制因此不同版本登录有差异
- 旧版<= 1.6建议通过apiserver访问直接通过apiserver 认证授权机制去控制 dashboard权限详见旧版文档
- 新版>= 1.7可以使用自带的登录界面使用不同Service Account Tokens 去控制访问 dashboard的权限
部署
参考 GitHub - kubernetes/dashboard: General-purpose web UI for Kubernetes clusters
- 增加了通过
api-server
方式访问dashboard - 增加了
NodePort
方式暴露服务这样集群外部可以使用https://NodeIP:NodePort
(注意是https不是http区别于1.6.3版本) 直接访问 dashboard。
安装部署
# ezctl 集成部署组件xxxx 代表集群部署名
# dashboard 部署文件位于 /etc/kubeasz/clusters/xxxx/yml/dashboard/ 目录
./ezctl setup xxxx 07
验证部署
# 查看 pod 运行状态
kubectl get pod -n kube-system | grep dashboard
dashboard-metrics-scraper-856586f554-l6bf4 1/1 Running 0 35m
kubernetes-dashboard-698d4c759b-67gzg 1/1 Running 0 35m
# 查看 dashboard service(重点)
kubectl get svc -n kube-system|grep dashboard
kubernetes-dashboard NodePort 10.68.219.38 <none> 443:24108/TCP 53s
# 查看pod 运行日志
kubectl logs -n kube-system kubernetes-dashboard-xxxxxxxx
- 注意上面括号里的重点这个命令可以查看到时候 dashboard 的端口号是哪个这里指的是24108必须放开对应端口防火墙
登陆
因为dashboard 作为k8s 原生UI能够展示各种资源信息甚至可以有修改、增加、删除权限所以有必要对访问进行认证和控制为演示方便这里使用 https://NodeIP:NodePort
方式访问 dashboard支持两种登录方式Kubeconfig、令牌(Token)
注意 使用chrome浏览器访问 https://NodeIP:NodePort
可能提示安全风险无法访问可以换firefox浏览器设置安全例外继续访问。
- Token令牌方式登录admin
选择 Token 方式登录复制下面输出的admin token 字段到输入框
# 获取 Bearer Token找到输出中 ‘token:’ 开头的后面部分
$ kubectl describe -n kube-system secrets admin-user
- Token令牌方式登录只读
选择 Token 方式登录复制下面输出的read token 字段到输入框
# 获取 Bearer Token找到输出中 ‘token:’ 开头的后面部分
$ kubectl describe -n kube-system secrets dashboard-read-user
- Kubeconfig登录admin Admin kubeconfig文件默认位置
/root/.kube/config
该文件中默认没有token字段使用Kubeconfig方式登录还需要将token追加到该文件中完整的文件格式如下
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdxxxxxxxxxxxxxx
server: https://192.168.1.2:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: admin
name: kubernetes
current-context: kubernetes
kind: Config
preferences: {}
users:
- name: admin
user:
client-certificate-data: LS0tLS1CRUdJTiBDRxxxxxxxxxxx
client-key-data: LS0tLS1CRUdJTxxxxxxxxxxxxxx
token: eyJhbGcixxxxxxxxxxxxxxxx
- Kubeconfig登录只读 首先创建只读权限 kubeconfig文件然后类似追加只读 token 到该文件略。