浅尝kubernetes

浅尝kubernetes

前言:我们早学习一门技术之前并不需要从头到尾的详细的查看一遍,只需要看一看是什么?能干什么?怎么用?即可!

一、了解kubernetes

Kubernetes 也称为 K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统。它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。Kubernetes 源自Google 15 年生产环境的运维经验,同时凝聚了社区的最佳创意和实践。

内容简介

Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。

在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。

特点

  • 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
  • 可扩展: 模块化,插件化,可挂载,可组合
  • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

组件

  • Master 组件

    • kube-apiserver
    • ETCD
    • kube-controller-manager
    • cloud-controller-manager
    • kube-scheduler
    • 插件 addons
      • DNS
      • 用户界面
      • 容器资源监测
      • Cluster-level Logging
  • 节点(Node)组件

    • kubelet
    • kube-proxy
    • dockers
    • RKT
    • supervisord
    • fluentd

Master 组件

Master组件提供集群的管理控制中心。

Master组件可以在集群中任何节点上运行。但是为了简单起见,通常在一台VM/机器上启动所有Master组件,并且不会在此VM/机器上运行用户容器。请参考构建高可用群集以来构建multi-master-VM。

kube-apiserver

kube-apiserver用于暴露Kubernetes API。任何的资源请求/调用操作都是通过kube-apiserver提供的接口进行。请参阅构建高可用集群。

ETCD

etcd是Kubernetes提供默认的存储系统,保存所有集群数据,使用时需要为etcd数据提供备份计划。

kube-controller-manager

kube-controller-manager运行管理控制器,它们是集群中处理常规任务的后台线程。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,它们都被编译成单个二进制文件,并在单个进程中运行。

这些控制器包括:

  • 节点(Node)控制器。
  • 副本(Replication)控制器:负责维护系统中每个副本中的pod。
  • 端点(Endpoints)控制器:填充Endpoints对象(即连接Services&Pods)。
  • Service Account和Token控制器:为新的Namespace创建默认帐户访问API Token。

cloud-controller-manager

  • 副本(Replication)控制器:负责维护系统中每个副本中的pod。
  • 端点(Endpoints)控制器:填充Endpoints对象(即连接Services&Pods)。
  • Service Account和Token控制器:为新的Namespace创建默认帐户访问API Token。

kube-scheduler

kube-scheduler监视新创建没有分配到Node的Pod,为Pod选择一个Node。

插件 addons

插件(addon)是实现集群pod和Services功能的。Pod由Deployments,ReplicationController等进行管理。Namespace 插件对象是在kube-system Namespace中创建。

DNS

虽然不严格要求使用插件,但Kubernetes集群都应该具有集群 DNS。

群集 DNS是一个DNS服务器,能够为 Kubernetes services提供 DNS记录。

由Kubernetes启动的容器自动将这个DNS服务器包含在他们的DNS searches中。

用户界面

kube-ui提供集群状态基础信息查看。

容器资源监测

容器资源监控提供一个UI浏览监控数据。

Cluster-level Logging

Cluster-level logging,负责保存容器日志,搜索/查看日志。

节点 Node 组件

节点组件运行在Node,提供Kubernetes运行时环境,以及维护Pod。

kubelet

kubelet是主要的节点代理,它会监视已分配给节点的pod,具体功能:

  • 安装Pod所需的volume。
  • 下载Pod的Secrets。
  • Pod中运行的 docker(或experimentally,rkt)容器。
  • 定期执行容器健康检查。
  • Reports the status of the pod back to the rest of the system, by creating amirror podif necessary.
  • Reports the status of the node back to the rest of the system.

kube-proxy

kube-proxy通过在主机上维护网络规则并执行连接转发来实现Kubernetes服务抽象。

docker

docker用于运行容器。

RKT

rkt运行容器,作为docker工具的替代方案。

supervisord

supervisord是一个轻量级的监控系统,用于保障kubelet和docker运行。

fluentd

fluentd是一个守护进程,可提供cluster-level loggi

二、kubernetes的安装

使用部署工具安装 Kubernetes的方式有很多,我喜欢第三种方式他是图形化的安装方式,比较适合小白

  • 使用 kubeadm 引导集群
  • 使用 kOps 安装 Kubernetes
  • 使用 Kubespray 安装 Kubernetes

Kuboard-Spray

Kuboard-Spray 是一款可以在图形界面引导下完成 Kubernetes 高可用集群离线安装的工具,开源仓库的地址为 Kuboard-Spray

准备工作

需要注意的是 我们需要两台电脑,或者说是两天服务器,应为Kuboard-Spray不能和kubernetes在一台服务器上(虚拟机除外)

其实我们可是在自己的笔记本上安装Docker,通过Docker的方式在本机上安装 Kuboard-Spray,只需要保证笔记本能够访问将要安装K8s的服务器就可以(有跳板机也行)。

安装 Kuboard-Spray

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

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

    • 1核2G

    • 不少于 10G 磁盘空余空间

    • 已经安装好 docker

    待执行的命令如下:

docker run -d \
  --privileged \
  --restart=unless-stopped \
  --name=kuboard-spray \
  -p 8080:80/tcp \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ~/kuboard-spray-data:/data \
  eipwork/kuboard-spray:v1.24-amd64
  # 如果抓不到这个镜像,可以尝试一下这个备用地址:
  # swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard-spray:latest-amd64
  • 在浏览器打开地址 http://这台机器的IP:8080,输入用户名 admin,默认密码 Kuboard123,即可登录 Kuboard-Spray 界面
image-20230625154827294

加载离线资源包

首先我们需要先下载离线包,要注意的是版本需要和上面kuboard-spray:v1.24-amd64 所对应,不然会报错

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

    image-20230625155219313

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

    • 权限问题

      • 导入资源包时,可能会碰到 no such file or directory 或者 permission denied 之类的错误提示,通常是因为您开启了 SELinux,导致 kuboard-spray 不能读取映射到容器 /data 的路径
    • 离线导入

      • 如果您处在内网环境,上图中的列表默认将是空的,请注意其中的 离线加载资源包 按钮,它可以引导您轻松完成资源包的离线加载过程

规划并安装集群

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

    • 集群名称: 自定义名称,本文中填写为 kuboard123,此名称不可以修改;
    • 资源包:选择前面步骤中导入的离线资源包。

    创建集群安装计划

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

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

    集群规划

  • 点击上图的 保存 按钮,再点击 执行 按钮,可以启动集群的离线安装过程,如下图所示:

    集群安装

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

    集群日志

访问集群

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

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

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

    访问集群

三、k8s常用的命令

下面是一些常用的Kubernetes(K8s)命令,以及它们的简要说明。这些命令可以帮助您管理和操作Kubernetes集群中的资源。

集群管理命令

  • kubectl cluster-info: 显示集群的基本信息。
  • kubectl config use-context <context_name>: 切换到指定的上下文。
  • kubectl get nodes: 列出集群中的节点。
  • kubectl describe node <node_name>: 显示节点的详细信息。

命名空间管理命令

  • kubectl get namespaces: 列出所有命名空间。
  • kubectl create namespace <namespace_name>: 创建一个命名空间。
  • kubectl delete namespace <namespace_name>: 删除一个命名空间及其下的所有资源。
  • kubectl config set-context --current --namespace=<namespace_name>: 设置当前上下文的命名空间。

资源查看和操作命令

  • kubectl get <resource_type>: 列出指定类型的资源。
  • kubectl describe <resource_type> <resource_name>: 显示指定资源的详细信息。
  • kubectl create -f <yaml_file>: 根据 YAML 文件创建资源。
  • kubectl apply -f <yaml_file>: 根据 YAML 文件创建或更新资源。
  • kubectl delete <resource_type> <resource_name>: 删除指定的资源。

Pod 相关命令:

  • kubectl get pods: 列出所有 Pod。
  • kubectl describe pod <pod_name>: 显示 Pod 的详细信息。
  • kubectl logs <pod_name>: 查看 Pod 的日志。
  • kubectl exec -it <pod_name> -- <command>: 在 Pod 内部执行命令。

服务相关命令:

  • kubectl get services: 列出所有服务。
  • kubectl describe service <service_name>: 显示服务的详细信息。
  • kubectl port-forward <pod_name> <host_port>:<container_port>: 将本地端口转发到 Pod 的端口。

部署相关命令:

  • kubectl get deployments: 列出所有部署。
  • kubectl describe deployment <deployment_name>: 显示部署的详细信息。
  • kubectl scale deployment <deployment_name> --replicas=<replica_count>: 扩展或缩减部署的副本数量。

配置和密钥相关命令:

  • kubectl create configmap <configmap_name> --from-file=<file_path>: 创建配置映射。
  • kubectl create secret <secret_type> <secret_name> --from-literal=<key>=<value>: 创建密钥。

这些命令涵盖了Kubernetes的常见功能和用例,可以帮助您管理和操作集群中的资源。您可以通过在命令后面添加 --help 选项来获取更多关于每个命令的详细帮助信息。例如:kubectl get pods --help

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

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

相关文章

【C/C++实现进程间通信 二】消息队列

文章目录 前情回顾思路源码Publisher.cppSubscriber.cpp 效果 前情回顾 上一期已经讲解过了进程的相关概念以及进程间通信的实现原理&#xff0c;下面仅展示消息传递机制实现1进程间通信的相关代码。 思路 /*本项目主要用于以消息传递机制的方式进行进程间通信的测试。1.主要…

Odoo16 微信公众号模块开发示例

Odoo16 微信公众号模块开发示例 本模块基于 aiohttp asyncio 进行异步微信公众号接口开发, 仅实现了部分 API 仅供学习参考&#xff0c;更完善的同步接口请参考&#xff1a;wechatpy 或 werobot&#xff0c;可用来替代 模块中的 wechat client。 业务需求 小程序中需要用户…

pdf文档多页内插入统一图片

常用来添加公司logo、签名、印章等等 概括来说就是插入同一个图片&#xff0c;然后复制在每一页&#xff08;自动&#xff09; 用的是福昕pdf阅读器 首先打开pdf&#xff1a; 点击图像标注功能&#xff1a; 在弹出窗口中选择浏览&#xff0c;点击需要插入的图片&#xff08…

在个人电脑上部署ChatGLM2-6B中文对话大模型

简介 ChatGLM2-6B 是清华大学开源的一款支持中英双语的对话语言模型。经过了 1.4T 中英标识符的预训练与人类偏好对齐训练&#xff0c;具有62 亿参数的 ChatGLM2-6B 已经能生成相当符合人类偏好的回答。结合模型量化技术&#xff0c;用户可以在消费级的显卡上进行本地部署&…

计算机网络—网络层

文章目录 网络层服务虚电路网络数据报网络 IPv4IP数据报IP数据报分片 IP编址&#xff08;IPv4&#xff09;有类IP地址IP子网划分子网掩码 无类IP地址&#xff08;CIDR&#xff09;DHCPNATICMP协议 路由算法链路状态路由算法距离向量路由算法不同子网之间的路由算法学习RIP协议O…

【深度学习】3-3 神经网络的学习- 导数梯度

导数 导数就是表示某个瞬间的变化量&#xff0c;式子如下&#xff1a; 式子的左边&#xff0c;表示f(x)关于x的导数&#xff0c;即f(x)相对于x的变化程度。式子表示的导数的含义是&#xff0c;x的“微小变化”将导致函数f(x)的值在多大程度上发生变化。其中&#xff0c;表示…

了解一下EPC模式和它的优势

目录 什么是EPCEPC的优势有哪些&#xff1f;BT、BOT、EPC分别是什么模式&#xff1f;总结 什么是EPC EPC是Engineering&#xff08;工程&#xff09;&#xff1a;代表设计、采购和施工总承包。Procurement&#xff08;采购&#xff09;&#xff1a;代表采购和物资管理。Constru…

各牌浏览器设置地址栏显示完整URL

有时候&#xff0c;我们在浏览器的地址栏输入URL后&#xff0c;需要查看完整的URL路径&#xff0c;比如想看到是http协议还是https协议。 目前大多数浏览器都直接将协议头隐藏&#xff0c;需要复制出地址&#xff0c;或者点击地址栏才能看到&#xff0c;比较麻烦。 浏览器支持通…

Docker 部署 jar 项目

文章目录 1、上传jar包2、新建 Dockerfile 文件3、新建 deploy.sh 脚本&#xff08;创建并运行&#xff09;4、新建 upgrade.sh 脚本&#xff08;更新&#xff09; 1、上传jar包 2、新建 Dockerfile 文件 添加jar包及修改端口 # 基础镜像 FROM java:8 # 添加jar包 ADD servic…

【STM32】基于stm32的阿里云智能家居

摘 要 智能家居是一种通过物联网将家里的各种电器设备连接在一起&#xff0c;并由中心控制器统一管理的信息系统。系统的核心是各类家居信息的采集与处理。阿里云能够提供云端的数据存储和分析功能&#xff0c;可以作为智能家居中心控制器的重要平台。 本文主要研究了基于阿里云…

WPF 控件设置透明度的方法

方法一&#xff1a;通过 Opacity 属性设置背景色透明度。范围从0-1&#xff0c;0表示完全透明&#xff0c;看不见。 通过 Opacity 属性去改变控件透明度 会影响子控件的透明度&#xff0c;是因为Opacity属性是在UIElement 类(以及Brush基类)中定义&#xff0c;所有元素都具有该…

Unity VR 开发教程:Meta Quest 一体机开发 (二)混合现实 MR 透视 Passthrough 环境配置

文章目录 &#x1f4d5;教程说明&#x1f4d5;配置透视的串流调试功能&#x1f4d5;第一步&#xff1a;设置 OVRManager&#x1f4d5;第二步&#xff1a;添加 OVRPassthroughLayer 脚本&#x1f4d5;第三步&#xff1a;在场景中添加虚拟物体&#x1f4d5;第四步&#xff1a;删除…

系统架构设计师 5:软件工程

一、软件工程 1 软件过程模型 软件要经历从需求分析、软件设计、软件开发、运行维护&#xff0c;直至被淘汰这样的全过程&#xff0c;这个全过程称为软件的生命周期。 为了使软件生命周期中的各项任务能够有序地按照规程进行&#xff0c;需要一定的工作模型对各项任务给予规…

JavaScript进阶----《getter 和 setter 是什么》

前言&#xff1a; 这两个属性在学习前端的时候看到过&#xff0c;但是由于项目中没有用到过&#xff0c;所以一直没有细致的了解。今天 review 同事代码的时候&#xff0c;遇到了这个写法&#xff0c;看了半天也不知道如何处理。再不学习真的以后连别人的代码都不知道什么意思了…

spring Cloud使用Skywalking搭建笔记

skywalking支持dubbo&#xff0c;SpringCloud&#xff0c;SpringBoot集成&#xff0c;代码无侵入&#xff0c;通信方式采用GRPC&#xff0c;性能较好&#xff0c;实现方式是java探针&#xff0c;支持告警&#xff0c;支持JVM监控&#xff0c;支持全局调用统计等等&#xff0c;功…

uniapp 中 引入vant组件 和 vant 报错Unclosed bracket 的问题解决

在uniapp 中引入vant组件&#xff0c;遇到一个报错&#xff0c;所以在此记录一下完整过程 一、引入vant组件 方式一&#xff1a;前往 GitHub官网 Vant 下载压缩文件&#xff0c;获取下载中的dist 文件 方式二&#xff1a;通过npm install 方式引入 npm i vant/weapp -S --pr…

Android Studio 找不到 uploadArchives 入口

在4.2之前版本的 Android Studio 中想要module 打包arr&#xff0c;上传Maven 我们只需要 在对应module的build.gradle文件顶部添加 apply plugin: maven然后每一次修改记得要修改版本号&#xff0c;相同版本号提交失败&#xff0c;是不会覆盖的 defaultConfig {......versi…

2022年12月份青少年软件编程Python等级考试试卷六级真题(含答案)

一、单选题(共25题&#xff0c;共50分) 1.数据文件“abc.txt”中包含若干个英文单词&#xff0c;如图所示&#xff1a; 读取文件“abc.txt”中数据的Python程序段如下&#xff1a; file abc.txt word_b [] for word in open(file):if word[0:1] a and len(word)>4:wo…

工具系列之wireshark使用说明

简介 工具下载&#xff1a; https://www.wireshark.org/官方FAQ: https://www.wireshark.org/faq.html 过滤器设置 通常情况下&#xff0c;将.pcap 数据拖拽至 wireshark中即可打开。通过&#xff1a; 导航栏–》分析 --> 显示过滤器 即可找到对应的筛选器&#xff0c;筛…

优维低代码实践:数据加工/转化详解

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 优维…