K8S搭建

news2024/11/19 12:38:12

文章目录

  • 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.coloradmin.cn/o/1663869.html

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

相关文章

PG 检查点管理与Oracle的比较

之前介绍过&#xff0c;在任何数据库中&#xff0c;一条DML操作执行都需要在内存中执行&#xff0c;但当操作越来越多&#xff0c;总有时候内存会写满&#xff0c;这时候就需要把内存中的块写入到磁盘&#xff0c;释放内存&#xff0c;保存数据。 写入到磁盘这一步&#xff0c;…

基于 Satchmo 实现自定义捐款模块

1、问题背景 我在 Satchmo 中构建捐款模块时遇到了一些困难。我可以自定义 Satchmo 的产品模型&#xff0c;但无法找到任何与捐赠相关的内容。 我知道可以创建一个捐赠虚拟产品&#xff0c;但据我所知&#xff0c;这仍然需要预先设定金额&#xff08;例如 5 美元、10 美元等&…

Java并发处理

Java并发处理 问题描述:项目中业务编号出现重复编号 生成编号规则&#xff1a;获取数据库表最大值&#xff0c;然后再做1处理&#xff0c;即为新编号&#xff08;因为起始值是不固定的&#xff0c;还存在‘字符数据’格式&#xff0c;做了字典项可配置&#xff0c;所以不能直…

03、SpringBoot 源码分析 - SpringApplication启动流程三

SpringBoot 源码分析 - SpringApplication启动流程三 初始化基本流程SpringApplication的setListeners设置监听器deduceMainApplicationClass对端主启动类rungetRunListeners获取SpringApplicationRunListener监听器EventPublishingRunListener的构造方法SimpleApplicationEven…

js 数据格式转换,对象转数组,数组转对象

1.对象转数组 // 对象obj转换成数组格式 let obj { orgCode:分局编码, alertId:告警ID, name:告警名称 } let arr [] for(let key in obj) { console.log(11,key,obj[key]); // 定义一个对象&#xff0c;赋值 let o { id: key, // key是obj对象的键值 label: obj[key] …

LeetCode-2391. 收集垃圾的最少总时间【数组 字符串 前缀和】

LeetCode-2391. 收集垃圾的最少总时间【数组 字符串 前缀和】 题目描述&#xff1a;解题思路一&#xff1a;处理垃圾和路程单独计算。解题思路二&#xff1a;逆向思维&#xff0c;计算多走的路解题思路三&#xff1a;只记录&#xff0c;当前t需要计算几次 题目描述&#xff1a;…

Qt---窗口系统

一、QMainWindow 1. 菜单栏(最多有一个) QMenuBar *bar MenuBar(); SetMenuBar(bar); QMenu *fileMenu bar->addMenu("文件"); 创建菜单 QAction *newAction fileMenu->addAction("新建"); 创建菜单项 添加分割线fileMenu-…

如何使用联合体判断一个机器是大端还是小端

如何使用联合体判断一个机器是大端还是小端 #include<iostream> using namespace std; union Checker//联合体中的数据共享内存 {int val;char ch[2]; }; int main() {Checker checker;checker.val 0x1234;if (checker.ch[0] 0x34)//数组中的数据是由低地址往高地址存放…

构建NFS远程共享存储

nfs-server:10.1.59.237 nfs-web:10..159.218 centos7,服务端和客户端都关闭防火墙和selinux内核防火墙&#xff0c;如果公司要求开启防火墙&#xff0c;那需要放行几个端口 firewall-cmd --add-port2049/tcp --permanent firewall-cmd --add-port111/tcp --permanent firew…

yum、rpm相关命令-工具手册

1.rpm文件: 1.1安装rpm文件: rpm -ivh kde-select.rpm23 #--nodeps强制安装,无视环境缺少依赖的检查 rpm -ivh --nodeps kde-select.rpm #--force --replacefiles可以无视rpm的冲突去强制替换(如两个rpm的安装路径相同了会有冲突) rpm -ivh --nodeps --force --replacef…

空间复杂度与链表刷题

"一切的一切都是你自己在感应." 本文索引 空间复杂度复杂度实例实例1实例2实例3 链表题目1. 返回倒数第K个节点2. 链表的回文结构3. 相交链表4. 随机链表的复制5. 环形链表 总结: 前言: 本文主要探究空间复杂度与链表题目讲解 更多文章点击主页: 酷酷学!!! 如果此文对…

IDEA安装通义灵码(太好用了)

一、什么是通义灵码 1、 介绍 通义灵码&#xff0c;是阿里云出品的一款基于通义大模型的智能编码辅助工具&#xff0c;提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力&#xff0c;并针对阿里云 SDK/Op…

带你了解|大数据信用报告隔多久查一次比较好?

随着大数据技术的不断发展&#xff0c;大数据信用报告已经成为人们了解个人信用状况的重要途径之一。然而&#xff0c;对于隔多久查一次大数据信用报告比较好&#xff0c;却是一个需要认真考虑的问题&#xff0c;本文通过分析不同场景对大数据信用查询的需求进行介绍&#xff0…

新加坡首届ChatGPT-4提示词大赛冠军竟是华裔!

就是前几天&#xff0c;新加坡举办了首届ChatGPT-4的prompt比赛&#xff0c;没想到本次比赛的冠军竟然是我们华夏子民&#xff01; 这个冠军得主名叫张希拉。 她推出的一套名为CO-STAR的提示词框架 如何应用 CO-STAR 框架&#xff1a; (C) 上下文&#xff1a;为任务提供背景信…

一起长锈:3 类型安全的Rust宏(从Java与C++转Rust之旅)

讲动人的故事,写懂人的代码 故事梗概:在她所维护的老旧Java系统即将被淘汰的危机边缘,这位在编程中总想快速完事的女程序员,希望能转岗到公司内部使用Rust语言的新项目组,因此开始自学Rust;然而,在掌握了Rust编程知识之后,为了通过Rust项目组的技术面试,使得转岗成功而…

实现桌面动态壁纸——认识 WebView2 控件

目录 前言 一、什么是 WebView2 &#xff1f; 二、使用示例存储库 2.1 下载存储库 2.2 编译解决方案项目文件 2.3 运行示例程序 三、如何修改 WebView2 示例 本文来源于&#xff1a;https://blog.csdn.net/qq_59075481/article/details/138637909。 前言 上一节我们讲…

指针的奥秘(三):数组指针+函数指针(+typedef)+函数数组指针+转移表

指针 一.数组指针1.数组指针变量是什么&#xff1f;2.指针数组和数组指针区别和口诀3.数组指针变量怎么初始化4.二维数组传参的本质 二.函数指针1.函数指针变量的创建2.函数指针变量的使用3.两段有趣的代码1.( *( void ( * )( ) )0 ) ( );2.void( *signle(int, void( * )(int) …

小程序开发平台源码系统 低成本助力中小企业建站 带完整的安装代码包以及搭建教程

在当今数字化时代&#xff0c;拥有一个功能齐全、界面美观的小程序对于中小企业来说至关重要。然而&#xff0c;高昂的开发成本和复杂的搭建流程往往成为制约中小企业建立小程序的瓶颈。小编给大家分享一款低成本、易用性强的小程序开发平台源码系统&#xff0c;旨在助力中小企…

基于ChatGLM+Langchain离线搭建本地知识库(免费)

目录 简介 服务部署 实现本地知识库 测试 番外 简介 ChatGLM-6B是清华大学发布的一个开源的中英双语对话机器人。基于 General Language Model (GLM) 架构&#xff0c;具有 62 亿参数。结合模型量化技术&#xff0c;用户可以在消费级的显卡上进行本地部署&#xff08;INT…

SSM【Spring SpringMVC Mybatis】—— Spring(一)

目录 1、初识Spring 1.1 Spring简介 1.2 搭建Spring框架步骤 1.3 Spring特性 1.5 bean标签详解 2、SpringIOC底层实现 2.1 BeanFactory与ApplicationContexet 2.2 图解IOC类的结构 3、Spring依赖注入数值问题【重点】 3.1 字面量数值 3.2 CDATA区 3.3 外部已声明be…