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

news2024/11/16 3:49:25

问题描述

不知道大伙是如何安装 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 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发行版,如果安装有问题先请查看文档;如果某个能够支持安装的系统没有在列表中,请留言。

安装指南

00-规划集群和配置介绍02-安装etcd集群04-安装master节点06-安装集群网络
01-创建证书和安装准备03-安装容器运行时05-安装node节点07-安装集群插件

使用指南

常用插件+DNSdashboardmetrics-serverprometheusefk
集群管理+管理node节点管理master节点管理etcd节点升级集群备份恢复
特性实验NetworkPolicyRollingUpdateHPA
周边生态harborhelmjenkinsgitlabargocd

快速指南

  • 适用于 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 到该文件,略。

参考
  • Dashboard docs
  • a-read-only-kubernetes-dashboard

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1125803.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在mybatis的xml中使用枚举来做判断条件

1.枚举类 import com.baomidou.mybatisplus.annotation.IEnum; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; import com.shinkeer.common.utils.StringUtils;import java.util.HashMap; import java.util.Map;…

日志logback详解

该篇博客是我参考了很多博客总结出来的&#xff0c;内容很多&#xff0c;你能看完不睡着算你厉害&#xff01; 一、日志框架发展史 二、日志规范 三、日志级别 四、Logback 4.1 Maven引入 4.2 logback-spring.xml是在哪里加载的&#xff1f; 4.3 logback.xml和logback-s…

err -110 while initial SD card failed enmmm否系解决方案

1.情况表述 之前把 sd卡从小容量换成了大容量 且运行正常 过了一两个月 发现启动失败 报错&#xff1a;mmc0: error -110 whilst initialising SD card 给出报错图片 2.相关解决方案 给出链接 讲的很有道理&#xff0c;但是 我在bash中没有找到对应内核的驱动文件 SD卡…

抖音SEO优化怎么做?详细的方法来了,搭配批量剪辑让效果更优

抖音作为一个非常受欢迎的短视频平台&#xff0c;无论是用户还是内容创作者&#xff0c;体量都越来越大&#xff0c;这意味着竞争也越来越大&#xff0c;想要在抖音上获得更多的曝光和关注&#xff0c;做好抖音 SEO 优化是一门必修课。 抖音 SEO 优化是指优化我们发布到抖音平…

AMEYA360:瑞萨电子转矩控制解决方案加强工业自动化

随着科技的不断进步和全球制造业的竞争加剧&#xff0c;越来越多的企业开始投资和采用自动化技术&#xff0c;以提高生产效率、降低成本、改善产品质量并确保过程安全。而为协同工作完成复杂任务&#xff0c;确保高质量的生产结果。工业自动化设备对精度控制要求非常高&#xf…

Redis底层核心数据结构详解

文章目录 一、深入String&#xff08;SDS&#xff09;1. 字符串简介2. SDS存在的意义3. SDS结构设计4. SDS与C字符串的区别4.1 常数复杂度获取字符串长度4.2 杜绝缓冲区溢出4.3 二进制安全4.4 SDS API 5 小结 二、深入List (QuickList)1. 链表节点结构设计2. Redis的链表实现的…

linux驱动开发led绑定亮灯

head.h 应用程序 驱动程序 结果

LabVIEW基于机器视觉的钢轨表面缺陷检测系统

LabVIEW基于机器视觉的钢轨表面缺陷检测系统 机器视觉检测技术和LabVIEW软件程序&#xff0c;可以实现轨道工件的表面质量。CMOS彩色工业相机采集的图像通过图像预处理、图像阈值分割、形态分析、特征定位和图案匹配进行处理和分析。图形显示界面采用LabVIEW软件编程设计&…

【大模型的一些基本结论】

这里写自定义目录标题 LLama的一些基本结论 各个论文中给出一些观察显现&#xff0c;我们比摘要更简略地摘要一些文本大模型大佬地基本结论和观察到的现象 LLama的一些基本结论 由于大模型要作为服务&#xff0c;因而推理时间更重要。一个较小的、训练时间较长的模型最终会在…

GLIP,FLIP论文阅读

Scaling Language-Image Pre-training via Masking&#xff08;FLIP&#xff0c;2023&#xff09;&#x1f44d; 贡献&#xff1a; 1.图像端引入MAE的随机MASK&#xff0c;image encoder只处理未mask的patches&#xff08;和之前的MAE方法一致&#xff09;&#xff0c;减少了输…

5年经验之谈 —— 手把手教你接口性能测试之JMeter性能测试篇!

本文是我们《手把手教你接口性能测试》系列文章中的完结篇&#xff0c;介绍如何使用JMeter工具进行接口测试和并发测试。 一、Jmeter 简介 Jmeter是由Apache公司开发的一个纯Java开源项目&#xff0c;即可以用于做接口测试也可以用于做性能测试&#xff0c;具备高移植性和扩展…

QUIC协议包头保护(四)

一&#xff1a;为什么要有包头保护 学过HTTP和HTTPS都知道&#xff0c;随着网络的普及&#xff0c;人们对于信息的保护&#xff0c;个人的隐私越发的重视。信息加密对于未来协议的发展肯定是越来越趋于严格。QUIC作为新生代的协议&#xff0c;必然要站着前辈的肩膀上发展&#…

基于Python实现的复制、移动、离线化你的 Markdown 文档,清理 Markdown 引用路径中的垃圾文件

Markdown 工具箱 完整代码下载地址&#xff1a; Markdown 工具箱 &#x1f6a9; 简介 Markdown 工具箱&#xff0c;是我为 Markdown 笔记管理做的一个工具集。目前有以下几个功能&#xff1a; 复制 批量将 md 笔记&#xff08;连带它的相对路径引用的图片、附件&#xff09;…

c#中使用stringbuilder的Append方法写sql语句

c#中使用stringbuilder的Append方法写sql语句 c#中使用stringbuilder的Append方法写sql语句_c#strsql.append_安静点DGC的博客-CSDN博客https://blog.csdn.net/qq_26925297/article/details/81586884 特此记录 anlog 2023年8月8日

PMP考试中有哪些疑点、难点?

目前PMP考试的内容只有最后5个月是按照旧考纲&#xff0c;后面的考试基本上都是按照新考纲进行。因此&#xff0c;备考的朋友们需要学习很多新的知识点和敏捷学习方法。所以现在是给今年想要备考的朋友们提供学习建议的时候了。 01、新版考纲将主要关注以下三个新领域&#xf…

一、XSS加解密编码解码工具

一、XSS加解密编码解码工具 解释&#xff1a;使用大佬开发的工具&#xff0c;地址&#xff1a;https://github.com/Leon406/ToolsFx/blob/dev/README-zh.md 在线下载地址&#xff1a; https://leon.lanzoui.com/b0d9av2kb(提取码&#xff1a;52pj)&#xff08;建议下载jdk8-w…

每天一道算法题——动态规划

找到工作就不更新了~ 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a;给定 n 是一个正整数。 示例 1&#xff1a; 输入&#xff1a; 2 输出&#xff1a; 2 解释&#xff1a; …

博客系统自动化测试

1、博客列表页面测试 测试内容 测试代码&#xff1a; TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class BlogListTest extends Autotest{public static ChromeDriver driver createDriver();// 准备工作TestBeforeAllstatic void ready() {driver.get(&q…

适用于 Mac 电脑的 10 款最佳数据恢复工具集

无论是个人照片还是重要的商业文档&#xff0c;对于那些依赖计算机获取重要文件的人来说&#xff0c;数据丢失都是一场噩梦。 值得庆幸的是&#xff0c;Mac用户可以使用各种数据恢复工具&#xff0c;可以帮助您恢复丢失或意外删除的文件。 在本文中&#xff0c;我们将采用适用于…

RAM(recognize anything)—— 论文详解

一、概述 1、是什么 RAM 论文全称 Recognize Anything: A Strong Image Tagging Model。区别于图像领域常见的分类、检测、分割&#xff0c;他是标记任务——即多标签分类任务&#xff08;一张图片命中一个类别&#xff09;&#xff0c;区分于分类&#xff08;一张图片命中一个…