• Kubernetes - 一键安装部署 K8S(附:Kubernetes Dashboard)


    问题描述

    不知道大伙是如何安装 K8s,特别还是集群的时候,我上一次安装搭建的时候,那个恶心到我了,真的是一步一个脚印走完整个搭建流程,爬了不少坑。

    于是,才有了今天的文章,到底有没有可以一键完美部署 k8s 并且附带 Dashboard……?那这么问了肯定是有的,否则岂不是在这自作多情~ 哈哈哈,不废话直接 3 2 1 上干货!

    大佬登场

    kubeasz 致力于提供快速部署高可用k8s集群的工具, 同时也努力成为k8s实践、使用的参考书;基于二进制方式部署和利用ansible-playbook实现自动化;既提供一键安装脚本, 也可以根据安装指南分步执行安装各个组件。

    kubeasz 从每一个单独部件组装到完整的集群,提供最灵活的配置能力,几乎可以设置任何组件的任何参数;同时又为集群创建预置一套运行良好的默认配置,甚至自动化创建适合大规模集群的BGP Route Reflector网络模式

    [news] kubeasz 通过cncf一致性测试 详情

    推荐版本对照

    Kubernetes version1.221.231.241.251.261.271.28
    kubeasz version3.1.13.2.03.6.23.6.23.6.23.6.23.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发行版,如果安装有问题先请查看文档;如果某个能够支持安装的系统没有在列表中,请留言。

    安装指南

    使用指南

    快速指南

    • 适用于 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
    1. export release=3.5.0
    2. wget https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown
    3. chmod +x ./ezdown
    • 使用工具脚本下载(更多关于 ezdown 的参数,运行“./ezdown”查看)
    • 注意:如果使用 wget github 下载访问太慢,可以直接在 github 上选中好 3.5.0 tag 版本,下载 zip 解压缩到对应的系统里即可,文件夹里面就会存在一个 ezdown 文件噢~

    下载kubeasz代码、二进制、默认容器镜像

    1. # 国内环境
    2. ./ezdown -D
    3. # 海外环境
    4. #./ezdown -D -m standard

    【可选】下载额外容器镜像(cilium,flannel,prometheus等)

    1. # 按需下载
    2. ./ezdown -X flannel
    3. ./ezdown -X prometheus
    4. ...

    【可选】下载离线系统包 (适用于无法使用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 集群
    1. docker exec -it kubeasz ezctl start-aio
    2. # 如果安装失败,查看日志排除后,使用如下命令重新安装aio集群
    3. # docker exec -it kubeasz ezctl setup default all

    4、验证安装
    1. source ~/.bashrc
    2. kubectl version # 验证集群版本
    3. kubectl get node # 验证节点就绪 (Ready) 状态
    4. kubectl get pod -A # 验证集群pod状态,默认已安装网络插件、coredns、metrics-server等
    5. 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。
    安装部署
    1. # ezctl 集成部署组件,xxxx 代表集群部署名
    2. # dashboard 部署文件位于 /etc/kubeasz/clusters/xxxx/yml/dashboard/ 目录
    3. ./ezctl setup xxxx 07

    验证部署
    1. # 查看 pod 运行状态
    2. kubectl get pod -n kube-system | grep dashboard
    3. dashboard-metrics-scraper-856586f554-l6bf4 1/1 Running 0 35m
    4. kubernetes-dashboard-698d4c759b-67gzg 1/1 Running 0 35m
    5. # 查看 dashboard service(重点)
    6. kubectl get svc -n kube-system|grep dashboard
    7. kubernetes-dashboard NodePort 10.68.219.38 443:24108/TCP 53s
    8. # 查看pod 运行日志
    9. 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 字段到输入框

    1. # 获取 Bearer Token,找到输出中 ‘token:’ 开头的后面部分
    2. $ kubectl describe -n kube-system secrets admin-user
    • Token令牌方式登录(只读)

    选择 Token 方式登录,复制下面输出的read token 字段到输入框

    1. # 获取 Bearer Token,找到输出中 ‘token:’ 开头的后面部分
    2. $ kubectl describe -n kube-system secrets dashboard-read-user
    • Kubeconfig登录(admin) Admin kubeconfig文件默认位置:/root/.kube/config,该文件中默认没有token字段,使用Kubeconfig方式登录,还需要将token追加到该文件中,完整的文件格式如下:
    1. apiVersion: v1
    2. clusters:
    3. - cluster:
    4. certificate-authority-data: LS0tLS1CRUdxxxxxxxxxxxxxx
    5. server: https://192.168.1.2:6443
    6. name: kubernetes
    7. contexts:
    8. - context:
    9. cluster: kubernetes
    10. user: admin
    11. name: kubernetes
    12. current-context: kubernetes
    13. kind: Config
    14. preferences: {}
    15. users:
    16. - name: admin
    17. user:
    18. client-certificate-data: LS0tLS1CRUdJTiBDRxxxxxxxxxxx
    19. client-key-data: LS0tLS1CRUdJTxxxxxxxxxxxxxx
    20. token: eyJhbGcixxxxxxxxxxxxxxxx

    参考
  • 相关阅读:
    数据链路层概述
    zookeeper源码(05)数据存储
    2020年五一杯数学建模A题煤炭价格预测问题解题全过程文档及程序
    web前端面试高频考点——Vue组件间的通信及高级特性(多种组件间的通信、自定义v-model、nextTick、插槽)
    Flume学习笔记(2)—— Flume进阶
    [附源码]JAVA毕业设计计算机在线学习管理系统-(系统+LW)
    流媒体分析之rtmp协议srs服务器数据收发
    关于SID
    服装连锁店铺管理软件大盘点!秦丝、日进斗金、商陆花谁更强?
    2022Linux学习笔记(基础)
  • 原文地址:https://blog.csdn.net/Dream_Weave/article/details/134000358