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 的端口

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

斯坦福李飞飞最新对话:AI不会对人类造成“灭绝性危机” | 最新快讯

美国斯坦福大学教授、美国国家工程院院士李飞飞&#xff08;来源&#xff1a;斯坦福大学账号&#xff09; 北京时间 5 月 10 日凌晨举行的 Bloomberg Tech 活动上&#xff0c;著名华人计算机科学家、美国斯坦福大学教授李飞飞&#xff08;Fei-Fei Li&#xff09;与彭博社 Emily…

视频编辑软件pitivi基本功之创建标题片段

视频编辑软件pitivi基本功之创建标题片段 台式机的系统是openSUSE-Leap-15.5-DVD-x86_64 一、素材来源 《视频编辑软件pitivi基本功之使用SSR录制电脑屏幕》 https://blog.csdn.net/weixin_42145772/article/details/138597608?spm1001.2014.3001.5502 根据上面文章的方法得…

【回溯 网格 状态压缩】52. N 皇后 II

本文涉及知识点 回溯 网格 状态压缩 LeetCode52. N 皇后 II n 皇后问题 研究的是如何将 n 个皇后放置在 n n 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回 n 皇后问题 不同的解决方案的数量。 示例 1&#xff1a; 输入&#x…

国内运营商选择爱立信,或因它的低频5G技术更先进,价格更便宜

国内某运营商将大笔5G设备订单交给爱立信&#xff0c;引发了掀然大波&#xff0c;影响仍在扩散&#xff0c;对此各方说什么原因都有&#xff0c;笔者认为爱立信此次斩获大单&#xff0c;可能在于它的低频5G设备更先进&#xff0c;价格更便宜&#xff0c;对于急于降低成本的国内…

window10下安装ubuntu系统以及docker使用

window10下安装ubuntu系统以及docker使用 1. 启用适用于Linux的Windwos子系统2.下载Linux内核更新包3.将 WSL 2 设置为默认版本4.安装Ubuntu<br />直接去Microsoft store里面直接搜索Ubuntu进行安装。5.可能出现的问题1.win10启动ubuntu报错 参考的对象类型不支持尝试的操…

学习网络需要认识的各种设备

网桥&#xff08;bridge&#xff09; 网桥工作在数据链路层&#xff0c;可以把多个局域网连接起来&#xff0c;组成一个更大的局域网 以太网中&#xff0c;数据链路层地址就是mac地址&#xff0c;网桥与集线器的区别就是&#xff0c;网桥会过滤mac&#xff0c;只有目的mac地址…

halcon 模板匹配

一、概述 模板匹配常用于定位和查找&#xff0c;有很多的方式&#xff0c;halcon 中就有灰度匹配 、形状匹配、变形匹配、缩放匹配等&#xff0c;其实最常用的还是两种第一个就是灰度匹配、还有就是形状匹配 二、金字塔概述 网上有很多关于金字塔的解释&#xff0c;我这里直…

住宅ip与数据中心ip代理的区别是什么

代理通常意味着“替代”。它是用户设备和目标服务器之间的中介&#xff0c;允许在不同的IP地址下上网。代理ip根据来源分类可分住宅ip与数据中心ip&#xff0c;二者之间区别是什么呢&#xff1f; 住宅ip是由互联网服务提供商(ISP)提供给家庭的IP地址。出于这个原因&#xff0c…

Go 多模块工作区处理一个go项目下有多个module(即多个go.mod)的情况

背景 在现在微服务盛行的年代&#xff0c;一个人会维护多个代码仓库&#xff0c;很多的时候是多个仓库进行同时开发&#xff0c;也就是在当前项目下有多个目录&#xff0c;每个目录对应一个微服务&#xff0c;每个微服务都有一个go.mod文件。那么我在其中一个目录下要怎么导入…

464. 我能赢吗

464. 我能赢吗 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a;_464我能赢吗_记忆化dp 错误经验吸取 原题链接&#xff1a; 464. 我能赢吗 https://leetcode.cn/problems/can-i-win/description/ 完成情况&#xff1a; 解题思路&#x…

东芝移动硬盘是固态还是机械硬盘?数据丢失怎么办

东芝移动硬盘凭借出色的性能和稳定性&#xff0c;在市场上备受赞誉。那么&#xff0c;如何判断自己手中的东芝移动硬盘是固态硬盘还是机械硬盘呢&#xff1f;本文将指导您如何进行这一判断&#xff0c;并深入探讨固态硬盘与机械硬盘之间的区别。同时&#xff0c;针对数据丢失这…

Unity射击游戏开发教程:(13)如何在Unity中播放音效

在本文中,我将向大家展示一些为游戏添加声音的不同方法。 我们为游戏添加声音的第一种方法是播放背景音乐。在此,我们将创建游戏对象(“音频管理器”)并创建一个子游戏对象(“背景音乐”)。该子游戏对象将是播放音乐的对象,因此需要向其添加音频源组件。如果没有音频源组…

C++笔试强训day17

目录 1.小乐乐改数字 2.十字爆破 3.比那名居的桃子 1.小乐乐改数字 链接 简单把他当成字符串遍历即可。 详细代码&#xff1a; #include <iostream> #include <string> using namespace std; int main() {string s;cin >> s;for (int i 0; i < s.si…

瑞芯微 rk3588 Linux系统备份还原 StepbyStep

1.系统备份 1.1 将瑞芯微平台嵌入式系统的root ssh 权限开通 step1:sudo vi /etc/ssh/sshd_config step2: 找到PermitRootLogin,把开关打开&#xff1a; PermitRootLogin yes step3:重启ssh服务 sudo systemctl restart sshd 1.2.使用瑞芯微的打包脚本把嵌入式系统系统打包 这…

二阶RC滤波器截止频率计算

f_c 1 / ( 2 ∗ π ∗ √ ( R 1 ∗ R 2 ∗ C1*C2 ) ),其中R1、R2为电阻&#xff0c;C1,C2为电容。在某些设计中&#xff0c;为了简化设计和实现相等的Q值&#xff0c;可以令R 1 ∗ C1 R 2 ∗ C2&#xff0c;这时截止频率简化为 f_c 1 / ( 2 ∗ π ∗ R1*C1 ) 当R14.7K,C11…

常见算法策略

前言 算法策略是指在解决问题或完成任务时所采用的方法、技巧或步骤的总称。 在设计算法时&#xff0c;通常会考虑多种策略&#xff0c;并选择最适合特定问题的策略来实现算法的设计和优化。 算法策略比较 动态规划 动态规划介绍入口

Python专题:十一、集合

集合的初始化 . 字符串中的重复元素只能保留一个 数学中的集合操作 - 求两个集合的差集 & 求两个集合的交集 | 合并两个集合元素

ROS 2边学边练(46)-- 给URDF模型添加物理属性和碰撞属性

前言 实际物理世界中的物体需要遵守物理定律&#xff0c;机器人也不例外&#xff0c;在urdf中我们同样可以给机器人添加相关属性以模拟对应真实物理世界中的情况。 动动手 碰撞collision 碰撞属性指的是该物体的最小安全物理空间&#xff0c;站在机器人的角度&#xff0c;这个…

IPv6路由配置:ripng、ospfv3、静态路由

本次主要是对ipv6路由的配置&#xff0c;先了解ipv6&#xff0c;再进行实验配置 目录 一、&#x1f349; 什么是IPV6&#xff1f;&#x1f31f;IPv6的主要特点 二、&#x1f349;IPv6和IPv4的对比&#x1f31f; 共同点:&#x1f31f; IPv4的优缺点:&#x1f31f; IPv6的优缺点:…

免费获取!图论+灰色系统+混合优化算法程序代码!

前言 算法&#xff08;Algorithm&#xff09;是指解题方案的准确而完整的描述&#xff0c;是一系列解决问题的清晰指令&#xff0c;算法代表着用系统的方法描述解决问题的策略机制。算法优化是指对算法的有关性能进行优化&#xff0c;如时间复杂度、空间复杂度、正确性、健壮性…