云计算之k8s系列_第一回

本文围绕云计算之K8s系列展开,介绍从docker容器到k8s集群应用。阐述docker应用管理,包括镜像解决打包和环境统一问题,还介绍多种容器编排工具。分析docker进程namespace实现资源隔离、资源cgroups实现资源限制,文件系统部分待续。

云计算之k8s系列

如何快速使用Markdown:

  • 加粗 (Ctrl+B) 和 斜体 (Ctrl+I)
  • 引用 (Ctrl+Q)
  • 代码块 (Ctrl+K)
  • 标题 1, 2, 3 (Ctrl+1Ctrl+2Ctrl+3)
  • 列表 (Ctrl+U 和 Ctrl+Shift+O)

K8s 是目前容器编排应用最活跃的,用的公司也越来越多,接下来我将从最初的docker容器到k8s集群应用,整理出来供大家参考!

docker 应用管理

docker镜像:解决打包的根本性问题,是一个完整操作系统的所有文件和目录,我们可以封装镜像,并使用镜像运行容器,解决了开发环境与用户环境统一的问题。

docker build "image name"
docker run "image name"

docker容器编排

  • swarm是docker提出的,最大的优点是和docker容器无缝拼接,适合小型docker编排
  • fig之前是由两个人维护的,后期被docker公司收购,改名成compose,称为docker公司第二大亮点,到现在还很受欢迎
  • mesosphere是mesos提出的,最大亮点是经过了万级集群验证,适合大规模容器编排
  • CNCF基金会打造kubernetes

docker——进程namespace

进程:一个程序运行起来后的计算机执行环境的总和。

容器核心功能:通过约束和修改进程的动态表现,从而为其创造出一个“边界”

创建一个容器

docker run -it busybox /bin/sh
/ # ps

在容器中执行ps可以发现/bin/sh的进程号被划分为1,但是在宿主机上,这个容器的pid可能是100,使用namespace机制对进程进行隔离

namespace隔离内容: - pid - mount - uts - ipc - network - user

实际上是创建容器进程时,制定了这个进程所需要启用的一组namespace参数,这样,容器就只能看到当前namespace所限定的资源、文件、设备、状态,或者配置。而至于宿主机以及其他不相关的程序,它就完全看不到了。所以,容器其实是一种特殊的进程而已

docker——资源cgroups

  • namespace缺点1: 因为容器只是运行在苏足迹上的一种特殊的进程,那么多个容器之间使用的就还是同一个宿主机的操作系统的内核。
  • namespace缺点2: 在linux内核中,有很多资源和对象是不能被namespace化的,最典型的例子就是:时间。

cgroups就是linux内核中用来为进程设置资源限制的一个重要功能。主要作用: 限制一个进程能够使用的资源上限,包括CPU、内存、磁盘、网络带宽等等。

cgroups给用户暴露出来的操作接口是文件系统 , 它以文件和目录的方式组织在操作系统的/sys/fs/cgroup路径下。

mount -t cgroup

可以看到,在/sys/fs/cgroup下面有很多诸如cpuset、cpu、memory这样的子目录,也叫子系统。这些都是该机器当前可以被cgroups限制的资源种类。而在子系统对应的资源种类下,你就可以看到该资源具体可以被限制的方法。

如cpu子系统

ls /sys/fs/cgroup/cpu
cpu.cfs_period_us   cpu.cfs_quota_us    tasks     ...

这前两个参数组合使用,可以用来限制进程在长度为cfsperiodus的一段时间内,只能被分配到总量为fsquotaus的CPU时间

修改参数,限定进程使用CPU的比例

]# cd /sys/fs/cgroup/cpu/
]# mkdir container
]# while : ; do : ; done &
    [1] 25739
]# top 
    cpu占用率 100%
]# cd container/
]# echo 20000 > cpu.cfs_quota_us
    指的是没100ms中cpu运行20ms
]# echo 25739 > tasks
]# top
    cpu占用率 20%

cgroups的每一项子系统都有其独有的资源限制能力。

对于docker等linux容器项目来说,他们只需要在每个子系统下面,为每个容器创建一个控制组(即创建一个新目录),然后在启动容器进程之后,把这个进程的pid填写到对应的控制组的tasks文件中就可以了

用户只需要在运行docker run命令时指定参数即可

docker run -it --cpu-period=100000 --cpu-quota=20000 ubuntu  /bin/bash

容器就是一个“单进程”模型

docker——文件系统

未完待续。。。

阶段总结

  • namepace实现资源隔离
  • cgroups实现资源限制
  • rootfs又是做什么的呢?轻听下回讲解
### 基于 Kubernetes 的云计算毕业设计选题与参考资料 以下是几个基于 Kubernetes 和云计算方向的毕业设计选题建议及其相关内容: #### 1. **基于 Kubernetes 的容器编排优化算法研究** 容器编排是 Kubernetes 的核心功能之一,涉及资源调度、负载均衡等方面。可以针对现有调度策略进行改进或提出新的优化算法。 - 调度优化的目标可能包括提高资源利用率、降低延迟等。 - 使用模拟环境测试不同场景下新算法的表现。 #### 关键技术点 - Kubernetes API[^1] - 自定义调度器开发 - Prometheus 数据采集 ```bash kubectl get nodes --watch ``` #### 2. **基于 Kubernetes 的微服务架构高可用解决方案** 高可用性是现代云原生应用的重要特性。此课题可以从多个角度展开,例如如何通过健康检查机制提升服务稳定性,或者如何利用 Redis 或其他中间件实现分布式缓存和消息队列的高可用。 - 结合 Nginx 反向代理配置动态路由规则。 - 利用 MQ 实现异步通信以增强系统弹性。 #### 技术栈 - Spring Boot 后端框架[^2] - MyBatis 数据库映射 - MySQL 存储层支持 #### 3. **私有云平台的设计与实现——基于 K8S 的 OpenStack 整合** 将 Kubernetes 与 OpenStack 进行集成,构建一个统一管理虚拟机实例和容器的工作流。重点在于解决两者之间的协调问题,比如网络模型兼容性和存储卷挂载方式的选择。 - 用户能够通过 Web UI 查看集群状态并执行基本运维操作。 - 提供 RESTful 接口方便第三方接入。 #### 主要模块 - 私有云平台上报接口 - 日志记录与告警推送体系 - 异常检测逻辑实现 #### 4. **边缘计算环境下 Kubernetes 应用部署模式探索** 边缘节点通常具有带宽受限、断连频繁等特点,因此需要特别考虑应用程序在这些条件下的表现形式。本项目旨在探讨适合边缘侧使用的轻量化镜像制作方法以及离线更新机制。 - 设计一套适用于 IoT 场景的小型化基础镜像模板。 - 测试实际环境中从中心云端同步至本地的过程耗时及成功率。 #### 工具链推荐 - DockerSlim 图像瘦身工具 - Helm Chart 包管理器 #### 5. **自动化 CI/CD 管道建设服务于 Kubernetes 平台之上** 构建持续集成 / 持续交付流水线来加速软件发布周期的同时保持质量控制水平不下降。具体来说就是把 GitLab Runner 执行单元绑定到指定命名空间内的 Pod 上完成任务分配过程。 - Jenkinsfile 描述文件编写指南 - Argo CD 应用程序声明式版本控制器简介 ```yaml apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: guestbook spec: destination: server: https://kubernetes.default.svc namespace: default source: repoURL: https://github.com/argoproj/argo-cd.git targetRevision: HEAD path: examples/guestbook project: default syncPolicy: automated: prune: true selfHeal: true ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值