K8S搭建

文章目录

  • K8S搭建
      • 配置要求
    • 安装 Kuboard-Spray
    • 加载离线资源包
    • 规划并安装集群
    • 访问集群
    • 重启Kubernetes集群
      • Worker节点不能启动
      • 许多Pod一直Crash或不能正常访问
    • containerd配置网络代理
  • 常用的 kubectl 命令:

K8S搭建

安装高可用的Kubernetes集群

配置要求

对于 Kubernetes 初学者,在搭建K8S集群时,推荐在阿里云或腾讯云采购如下配置:(您也可以使用自己的虚拟机、私有云等您最容易获得的 Linux 环境)

  • 至少 2 台 2核4G 的服务器
  • 本文档中,CPU 必须为 x86 架构,暂时未适配 arm 架构的 CPU
  • CentOS 7.8CentOS 7.9Ubuntu 20.04

操作系统兼容性

CentOS 版本本文档是否兼容备注
CentOS 7.9😄已验证
CentOS 7.8😄已验证
Ubuntu 20.04😄已验证

安装 Kuboard-Spray

  • 取一台服务器或虚拟机,执行一条命令,即可完成 Kuboard-Spray 的安装。

    对这台服务器的最低要求为:

    • 1核2G
    • 不少于 10G 磁盘空余空间
    • 已经安装好 docker

    待执行的命令如下:

    docker run -d \--privileged \--restart=unless-stopped \--name=kuboard-spray \-p 80:80/tcp \-v /var/run/docker.sock:/var/run/docker.sock \-v ~/kuboard-spray-data:/data \eipwork/kuboard-spray:latest-amd64# 如果抓不到这个镜像,可以尝试一下这个备用地址:# swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard-spray:latest-amd64
    

    持久化

    • KuboardSpray 的信息保存在容器的 /data 路径,请将其映射到一个您认为安全的地方,上面的命令中,将其映射到了 ~/kuboard-spray-data 路径;
    • 只要此路径的内容不受损坏,重启、升级、重新安装 Kuboard-Spray,或者将数据及 Kuboard-Spray 迁移到另外一台机器上,您都可以找回到原来的信息。
  • 在浏览器打开地址 http://这台机器的IP,输入用户名 admin,默认密码 Kuboard123,即可登录 Kuboard-Spray 界面。

加载离线资源包

  • 在 Kuboard-Spray 界面中,导航到 系统设置 --> 资源包管理 界面,可以看到已经等候您多时的 Kuboard-Spray 离线资源包,如下图所示:
    在这里插入图片描述

  • 点击 导 入 按钮,在界面的引导下完成资源包的加载。

    重要

    • 权限问题
      • 导入资源包时,可能会碰到 no such file or directory 或者 permission denied 之类的错误提示,通常是因为您开启了 SELinux,导致 kuboard-spray 不能读取映射到容器 /data 的路径
    • 离线导入
      • 如果您处在内网环境,上图中的列表默认将是空的,请注意其中的 离线加载资源包 按钮,它可以引导您轻松完成资源包的离线加载过程。

规划并安装集群

  • 在 Kuboard-Spray 界面中,导航到 集群管理 界面,点击界面中的 添加集群安装计划 按钮,填写表单如下:

    • 集群名称: 自定义名称,本文中填写为 kuboard123,此名称不可以修改;

    • 资源包:选择前面步骤中导入的离线资源包。
      在这里插入图片描述

    • 点击上图对话框中的 确定 按钮后,将进入集群规划页面,在该界面中添加您每个集群节点的连接参数并设置节点的角色,如下图所示:

      重要: kuboard-spray 所在机器不能当做 K8S 集群的一个节点,因为安装过程中会重启集群节点的容器引擎,这会导致 kuboard-spray 被重启掉。
      在这里插入图片描述

      注意事项

      • 最少的节点数量是 1 个;

      • ETCD 节点、控制节点的总数量必须为奇数;

      • 全局设置 标签页,可以设置节点的通用连接参数,例如所有的节点都使用相同的 ssh 端口、用户名、密码,则共同的参数只在此处设置即可;

      • 在节点标签页,如果该节点的角色包含 etcd 则必须填写 ETCD 成员名称 这个字段;

      • 如果您 KuboardSpray 所在节点不能直接访问到 Kubernetes 集群的节点,您可以设置跳板机参数,使 KuboardSpray 可以通过 ssh 访问集群节点。

      • 集群安装过程中,除了已经导入的资源包以外,还需要使用 yum 或 apt 指令安装一些系统软件,例如 curl, rsync, ipvadm, ipset, ethtool 等,此时要用到操作系统的 apt 软件源或者 yum 软件源。全局设置 标签页中,可以引导您完成 apt / yum 软件源的设置,您可以:

        • 使用节点操作系统已经事先配置的 apt / yum 源,或者
        • 在安装过程中自动配置节点的操作系统使用指定的软件源
      • 如果您使用 docker 作为集群的容器引擎,还需要在全局设置 标签页指定安装 docker 用的 apt / yum 源。

        如果您使用 containerd 作为容器引擎,则无需配置 docker 的 apt / yum 源,containerd 的安装包已经包含在 KuboardSpray 离线资源包中。

    • 点击上图的 保存 按钮,再点击 执行 按钮,可以启动集群的离线安装过程,如下图所示:
      在这里插入图片描述

    • 取决于您机器的性能和网络访问速度,大概喝一杯茶的功夫,集群就安装好了,安装成功时,日志界面的显示如下图所示:
      在这里插入图片描述

访问集群

  • 如果集群日志界面提示您集群已经安装成功,此时您可以返回到集群规划页面,此界面将自动切换到 访问集群 标签页,如下图所示:

    界面给出了三种方式可以访问 kubernetes 集群:

    • 在集群主节点上执行 kubectl 命令
    • 获取集群的 .kubeconfig 文件
    • 将集群导入到 kuboard管理界面
      在这里插入图片描述

重启Kubernetes集群

Kubernetes集群的设计目标是setup-and-run-forever,然而许多学习者使用自己笔记本上的虚拟机安装K8S集群用于学习,这就必然会出现反复重启集群所在虚拟机的情况。本文针对重启后会出现一些的一些令人困惑的问题做了解释。

Worker节点不能启动

Master 节点的 IP 地址变化,导致 worker 节点不能启动。请重装集群,并确保所有节点都有固定内网 IP 地址。

许多Pod一直Crash或不能正常访问

kubectl get pods --all-namespaces

重启后会发现许多 Pod 不在 Running 状态,此时,请使用如下命令删除这些状态不正常的 Pod。通常,您的 Pod 如果是使用 Deployment、StatefulSet 等控制器创建的,kubernetes 将创建新的 Pod 作为替代,重新启动的 Pod 通常能够正常工作。

kubectl delete pod <pod-name> -n <pod-namespece>

containerd配置网络代理

没有配置containerd运行时代理设置。因为K8使用containerd运行时拉取图像。如果您的PC位于代理之后,如果它不直接使用代理系统设置(例如docker,containerd等),您应该始终配置应用设置。

sudo mkdir -p /etc/systemd/system/containerd.service.d
sudo touch /etc/systemd/system/containerd.service.d/http-proxy.conf
vi /etc/systemd/system/containerd.service.d/http-proxy.conf
# 在http-proxy.conf里写入以下配置
[Service]
Environment="HTTP_PROXY=http://xx.x.xx.xxx:xxxx/" "HTTPS_PROXY=http://xx.x.xx.xxx:xxxx/" 
"NO_PROXY=localhost,127.0.0.1,192.168.182.xxx"
# 重启containerd服务
sudo systemctl daemon-reload
sudo systemctl restart containerd 	
sudo systemctl show --property=Environment containerd

常用的 kubectl 命令:

  1. kubectl get: 获取资源列表

    • kubectl get pods: 获取 Pod 列表
    • kubectl get nodes: 获取节点列表
    • kubectl get services: 获取服务列表
    • kubectl get deployments: 获取部署列表
  2. kubectl describe: 显示资源的详细信息

    • kubectl describe pod <pod-name>: 显示 Pod 的详细信息
    • kubectl describe node <node-name>: 显示节点的详细信息
    • kubectl describe service <service-name>: 显示服务的详细信息
  3. kubectl create: 创建资源

    • kubectl create deployment <name> --image=<image>: 创建一个部署
    • kubectl create service <name> --tcp=<port>:<targetPort>: 创建一个服务
  4. kubectl delete: 删除资源

    • kubectl delete pod <pod-name>: 删除 Pod
    • kubectl delete deployment <deployment-name>: 删除部署
    • kubectl delete service <service-name>: 删除服务
  5. kubectl exec: 在容器内执行命令

    • kubectl exec -it <pod-name> -- <command>: 在 Pod 内执行命令
  6. kubectl logs: 获取容器日志

    • kubectl logs <pod-name>: 获取 Pod 的日志
  7. kubectl apply: 应用配置文件

    • kubectl apply -f <filename>: 应用配置文件
  8. kubectl scale: 调整副本数

    • kubectl scale deployment <deployment-name> --replicas=<replica-count>: 调整部署的副本数
  9. kubectl rollout: 管理滚动更新

    • kubectl rollout status deployment/<deployment-name>: 查看滚动更新状态
    • kubectl rollout history deployment/<deployment-name>: 查看滚动更新历史
    • kubectl rollout undo deployment/<deployment-name>: 回滚滚动更新
  10. kubectl port-forward: 将本地端口映射到 Pod 端口

    • kubectl port-forward <pod-name> <local-port>:<pod-port>: 将本地端口映射到 Pod 的端口

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

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

相关文章

【Linux】高效文本处理命令

目录 一.sort命令&#xff08;排序&#xff09; 1.语法格式 2.常用选项 3.相关示例 3.1. 3.2. 二.unip命令&#xff08;去重&#xff09; 1.语法格式 2.常用选项 3.相关示例 3.1. 3.2. 三.tr命令&#xff08;替换&#xff09; 1.语法格式 2.常用选项 3.相关示例…

TiDB学习2:TiDB Sever

目录 1. TiDB Server架构 2. sql语句的解析和编译 2.1 Parse ​编辑 2.2 compile 3. 行转化为KV对(聚簇表) ​编辑4. SQL 读写相关模块 4.1 DistSQL(复杂查询) 4.2 KV(简单查询) 5. 在线DDL相关模块 6. GC机制与相关模块 7. TiDB Server的缓存 8. 热点小表缓存 9. …

c++ fs::rename

【C 17 新特性 文件管理】探索C Filesystem库&#xff1a;文件和目录操作的全面指南&#xff08;一&#xff09;-阿里云开发者社区 fs::rename("old_directory", "new_directory"); 底层原理: 在Linux系统中&#xff0c;这通常通过rename系统调用来实现。…

做好串口控制是源代码防泄密的基础

在信息化时代&#xff0c;数据安全与保密工作的重要性日益凸显。尤其是在涉密单位&#xff0c;如军工、政府、金融等行业&#xff0c;防泄密工作直接关系到国家安全、社会稳定和企业利益。串口作为计算机与外部设备通信的重要接口&#xff0c;其安全性同样不容忽视。本文将探讨…

react18【系列实用教程】useMemo —— 缓存数据 (2024最新版)

为什么添加了 memo &#xff0c;子组件2依然重新渲染了呢&#xff1f; 因为父组件向子组件2传递了引用类型的数据 const userInfo {name: "朝阳",};<Child2 userInfo{userInfo} />memo() 函数的本质是通过校验Props中数据的内存地址是否改变来决定组件是否重新…

TEMU电商行情分析:未来趋势与盈利机遇探讨

近年来&#xff0c;跨境电商行业风起云涌&#xff0c;其中TEMU作为新兴力量&#xff0c;其市场表现备受关注。那么&#xff0c;TEMU电商现在的行情究竟如何?对于卖家而言&#xff0c;是否仍然是一个能够赚钱的平台呢? 首先&#xff0c;从市场趋势来看 TEMU电商正处于一个快速…

如何设计学术会议海报?

在参加学术会议的时候&#xff0c;制作一份会议海报来展示你的研究内容是十分必要的。海报是你与别人交流研究成果时的关键部分&#xff0c;也是成功科研生涯的重要元素。海报本身自带许多优秀的特质&#xff1a;思路清晰、内容精练&#xff0c;并且极易引起他人的兴趣。 一、…

vant添加列表, 日期选择总是填充到最后一个组内原因

添加多个行程, 无论在哪个行程上修改时间, 时间总是只显示在最后一个行程里 错误代码: <div class"journey"><divv-for"(item, index) in ruleform.hrms_business_item":key"index"><div class"journey-title">&l…

Python执行MYSQL SQL文件

很多情况下我们需要Python来执行SQL文件&#xff0c;但是一般库没有提供这些功能&#xff0c;直接执行经常会出错&#xff0c;这里分析各种情况下执行SQL语句的处理。如果你没有时间的话&#xff0c;直接跳转查看[第三点](#3. 包含DELIMITER的语句)。 准备工作 这里采用**mys…

Linux之函数应用实例--加法器

一、创建一个对2个整数求和的加法器 首先&#xff0c;定义了一个名为 adder 的 Bash 函数&#xff0c;该函数接受两个参数 $1 和 $2 并输出它们的和。 function adder { echo $[ $1$2 ] } 注意&#xff1a; function 关键字是可选的。在 Bash 中&#xff0c;可以简单地使…

近程无人机平台技术体系

近程无人机平台技术体系 1、技术体系1.1、专用技术体系固定翼技术体系旋翼技术体系复合翼技术体系扑翼技术体系倾转旋翼技术体系1.2、通用技术体系2、固定翼技术体系2.1、固定翼无人机介绍2.2、优势与局限2.3、固定翼专用体系介绍3、旋翼技术体系3.1、旋翼无人机介绍3.2、优势与…

前端 JS 经典:数组去重万能方法

前言&#xff1a;只需要掌握这一个方法&#xff0c;就可以对有任何重复的数据数组&#xff0c;进行去重了。 可以自己思考下&#xff0c;怎么对以下对象数组去重&#xff1a; const arr [{ a: 1, b: 2 },{ b: 2, a: 1 },{ a: 1, b: 2, c: { a: 1, b: 2 } },{ b: 2, a: 1, c:…

Geotrust哪种通配符证书800

Geotrust是成立了几十年的CA认证机构&#xff0c;每年都会通过WebTrust审计&#xff0c;旗下拥有各种类型的SSL数字证书产品&#xff0c;例如单域名SSL证书、多域名SSL证书和通配符SSL证书等。而为了更好地区分SSL证书产品&#xff0c;Geotrust旗下还分了几个子品牌&#xff0c…

解决项目下的lib包没有打进jar的问题

背景 项目在本地运行正常,发布到测试环境就不行,测试环境报缺少lib包下的类 解决方案 在项目的 pom.xml 文件中 <build></build> 标签下的 <resources></resources>标签中&#xff0c;加入以下代码&#xff0c;如&#xff1a; <build><res…

电池的一些UL认证标准

1、如今手机使用频率越来越高&#xff0c;充电器广泛地应用于交通上&#xff0c;为消费者提供充电的方便&#xff0c;汽车上的车充与我们产生了密切的联系&#xff0c;如果车充质量不好&#xff0c;可能会导致严重的后果&#xff0c;因此UL 2089标准着重于防止车充电击、燃烧&a…

MySQL存储引擎介绍

查看MySQL数据库中创建表的信息 如上图所示&#xff0c;当我们使用命令show create table server_info\G;可以显示我们所创建的表的信息&#xff0c;只显示两个字段&#xff0c;第一个字段是Table 即是创建的表的名称&#xff0c;第二个字段是Create Table即是创建的表的字段的…

Python中logging模块的使用

在Python中&#xff0c;logging模块提供了一个灵活的日志记录系统&#xff0c;用于将程序的输出信息分门别类地发送到不同的目的地。Logger对象是这个系统的核心&#xff0c;它负责创建日志消息。默认情况下&#xff0c;如果没有特别配置&#xff0c;Logger会将日志输出到标准错…

Redis过期删除策略和内存淘汰策略有什么区别?

Redis过期删除策略和内存淘汰策略有什么区别&#xff1f; 前言过期删除策略如何设置过期时间&#xff1f;如何判定 key 已过期了&#xff1f;过期删除策略有哪些&#xff1f;Redis 过期删除策略是什么&#xff1f; 内存淘汰策略如何设置 Redis 最大运行内存&#xff1f;Redis 内…

buildroot添加ssh功能

在制作了自己的buildroot生成的根文件系统之后&#xff0c;是没有ssh服务的&#xff0c;需要自行添加。 在buildroot的menuconfig里&#xff1a; Target packages -> Networking applications -> openssh 重新编译&#xff0c;还不能通过电脑连接&#xff0c;还需配置并…

xorg.conf 设置 集显 独显 英伟达 Ubuntu 风扇调速

使用集显做显示&#xff0c;使用独显做机器学习&#xff0c;那么xorg.conf如何配置&#xff1f; 如果配不好&#xff0c;那么会卡在欢迎登录界面&#xff0c;据说也会限制风扇调速的功能。 既然GPT时代了&#xff0c;那么我们就用AI加速一下&#xff0c;直接lspci | grep -i v…