前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Kubernetes应用Pod固定IP之kruise

Kubernetes应用Pod固定IP之kruise

原创
作者头像
对你无可奈何
修改于 2021-09-18 09:51:26
修改于 2021-09-18 09:51:26
1.7K0
举报
文章被收录于专栏:运维专栏运维专栏

背景:

团队成员都是老旧派,没有接受过容器思想。但是应用部署都在kubernetes集群上面了,然后他们以为应用的ip是不可变的。嗯,然后我就顺便看了一眼让容器保持ip不变的资料。早些时候报名了罗伟老师的k8s网络训练营。由于时间问题直播仅看了几次。但是受益匪浅。正好今天看群里小伙伴聊天讨论到了pod分配静态ip的方案就参考了一下:

阿里云的-Terway:

https://help.aliyun.com/document_detail/97467.html

腾讯云的-VPC-CNI

https://cloud.tencent.com/document/product/457/50355

注:这都是云商的托管kubernetes集群中现有的方案。今天看文章貌似看到了jd也有类似的方案......

个人的线上是基于tke1.20.6的集群还有一个搭建在腾讯云的1.21.2的kubeadm的高可用集群。具体的就是all in 腾讯云。tke不想用腾讯云的VPC-CNI。怎么说呢,觉得有点浪费资源.......今天正好群里讨论看到了小伙伴分享的openkruise还有腾讯开源的蓝鲸的容器平台(蓝鲸比较早的时候就玩过17年的时候比较重我还是不用了...)

image.png
image.png

发现了神奇的宝藏kruise?试用一下

注: 貌似是阿里云开源的,感谢阿里云的开源,还有群内大佬的分享!

OpenKruise 是什么

参照:http://openkruise.io/zh-cn/docs/what_is_openkruise.html

OpenKruise 是 Kubernetes 的一个标准扩展,它可以配合原生 Kubernetes 使用,并为管理应用容器、sidecar、镜像分发等方面提供更加强大和高效的能力。

核心功能

  • 原地升级原地升级是一种可以避免删除、新建 Pod 的升级镜像能力。它比原生 Deployment/StatefulSet 的重建 Pod 升级更快、更高效,并且避免对 Pod 中其他不需要更新的容器造成干扰。
  • Sidecar 管理支持在一个单独的 CR 中定义 sidecar 容器,OpenKruise 能够帮你把这些 Sidecar 容器注入到所有符合条件的 Pod 中。这个过程和 Istio 的注入很相似,但是你可以管理任意你关心的 Sidecar。
  • 跨多可用区部署定义一个跨多个可用区的全局 workload,容器,OpenKruise 会帮你在每个可用区创建一个对应的下属 workload。你可以统一管理他们的副本数、版本、甚至针对不同可用区采用不同的发布策略。
  • 镜像预热支持用户指定在任意范围的节点上下载镜像。
  • 容器重建/重启支持用户重建/重启存量 Pod 中一个或多个容器。
  • ...Controllers 与 Webhooks
  • CloneSet提供更加高效、确定可控的应用管理和部署能力,支持优雅原地升级、指定删除、发布顺序可配置、并行/灰度发布等丰富的策略,可以满足更多样化的应用场景。
  • Advanced StatefulSet基于原生 StatefulSet 之上的增强版本,默认行为与原生完全一致,在此之外提供了原地升级、并行发布(最大不可用)、发布暂停等功能。
  • SidecarSet对 sidecar 容器做统一管理,在满足 selector 条件的 Pod 中注入指定的 sidecar 容器。
  • UnitedDeployment通过多个 subset workload 将应用部署到多个可用区。
  • BroadcastJob配置一个 job,在集群中所有满足条件的 Node 上都跑一个 Pod 任务。
  • Advanced DaemonSet基于原生 DaemonSet 之上的增强版本,默认行为与原生一致,在此之外提供了灰度分批、按 Node label 选择、暂停、热升级等发布策略。
  • AdvancedCronJob一个扩展的 CronJob 控制器,目前 template 模板支持配置使用 Job 或 BroadcastJob。
  • ImagePullJob支持用户指定在任意范围的节点上下载镜像。
  • ContainerRecreateRequest为用户提供了重建/重启存量 Pod 中一个或多个容器的能力。
  • Deletion Protection该功能提供了删除安全策略,用来在 Kubernetes 级联删除的机制下保护用户的资源和应用可用性。
  • PodUnavailableBudget对比Kubernetes PDB只提供针对Pod Eviction的防护,PUB能够防护Pod Deletion、Eviction、Update多种voluntary disruption场景。
  • WorkloadSpread约束无状态 workload 的区域分布,赋予单一 workload 的多区域和弹性部署的能力。

安装 OpenKruise

参照:http://openkruise.io/zh-cn/docs/installation.html

前提: helm 安装 kubernetes集群版本最好大于1.16

helm安装省略......

https://github.com/helm/helm/releases/ 下载对应helm包。当然了 我的安装的比较早是3.5.3.忽略......

image.png
image.png
代码语言:txt
AI代码解释
复制
# 先下载安装包  并解压安装。

# 解压文件
tar zxvf helm-v3.5.3-linux-amd64.tar.gz

cd linux-amd64/
cp -r helm  /usr/local/bin/

# 查看版本号
helm version
image.png
image.png

确认一下版本,嗯 1.21.3!

代码语言:txt
AI代码解释
复制
kubectl get nodes
image.png
image.png

通过helm chart安装kruise

代码语言:txt
AI代码解释
复制
helm install kruise https://github.com/openkruise/kruise/releases/download/v0.10.0/kruise-chart.tgz
e7ce27a86f3a41ea728774900250f7f.png
e7ce27a86f3a41ea728774900250f7f.png

具体参数参照:

http://openkruise.io/zh-cn/docs/installation.html。这里就是测试一下。没有多么特殊的需求!

image.png
image.png

验证一下helm 的安装结果:

代码语言:txt
AI代码解释
复制
kubectl get pods -n kruise-system
kubectl get crds | grep kruise
kubectl get all -n kruise-system
eb4d47b8ae7297e95d5a4f565c3dadc.png
eb4d47b8ae7297e95d5a4f565c3dadc.png
be2f0b2e5e91a631b14fcb2718152ae.png
be2f0b2e5e91a631b14fcb2718152ae.png

使用 CloneSet

CloneSet 控制器提供了高效管理无状态应用的能力,它可以对标本土的Deployment,但CloneSet提供了很多增强功能。

先创建一个namespace:

代码语言:txt
AI代码解释
复制
kubectl create ns kruise

部署一个nginx的测试资源:

代码语言:txt
AI代码解释
复制
cat <<EOF > cloneset.yaml
apiVersion: apps.kruise.io/v1alpha1
kind: CloneSet
metadata:
  labels:
    app: nginx-alpine
  name: nginx-alpine
spec:
  replicas: 5
  selector:
    matchLabels:
      app: nginx-alpine
  template:
    metadata:
      labels:
        app: nginx-alpine
    spec:
      containers:
      - name: nginx
        image: nginx:alpine
EOF
kubectl apply -f cloneset.yaml -n kruise
image.png
image.png

从输出结果看,和原生的Deployment没有啥区别 #注意,这里如果get deployment是看不到nginx-alpine这个应用的,需要get cloneset才能看到:

代码语言:txt
AI代码解释
复制
[root@k8s-master-01 kruise]#  kubectl get deployment -n kruise
No resources found in kruise namespace.
[root@k8s-master-01 kruise]#  kubectl get cloneset -n kruise
NAME           DESIRED   UPDATED   UPDATED_READY   READY   TOTAL   AGE
nginx-alpine   5         5         5               5       5       10m
代码语言:txt
AI代码解释
复制
kubectl get pods -n kruise -o wide
image.png
image.png

注:先不说其他,这点让我很烦啊.....四个pods全部调度在了一个node节点上了......先忽略

至于官方pvc扩容缩容的我就不想一一测试了我就想试一下更换镜像ip是否发生改变!因为我的初衷是保持ip!

修改一下cloneset.yaml配置文件 增加updateStrategy配置,并修改image tag为latest

代码语言:txt
AI代码解释
复制
cat <<EOF > cloneset.yaml
apiVersion: apps.kruise.io/v1alpha1
kind: CloneSet
metadata:
  labels:
    app: nginx-alpine
  name: nginx-alpine
spec:
  replicas: 5
  updateStrategy:
    type: InPlaceIfPossible
    inPlaceUpdateStrategy:
      gracePeriodSeconds: 10   
  selector:
    matchLabels:
      app: nginx-alpine     
  template:
    metadata:
      labels:
        app: nginx-alpine
    spec:
      containers:
      - name: nginx
        image: nginx:latest
EOF
kubectl apply -f cloneset.yaml -n kruise
image.png
image.png
image.png
image.png

nginx-alpine-x49vc pod发现重启了一次 describe一下:

代码语言:txt
AI代码解释
复制
 kubectl describe nginx-alpine-x49vc -n kruise
image.png
image.png

嗯镜像发生了改变!变成了新部署的。但是ip地址pod name确实保留了原有的 没有发生改变!

从输出可以看到,Container nginx definition changed, will be restarted,Pod并没有删除在重建,而是在原来的基础上直接更新了镜像文件,并重启了服务。

原地升级减少了删除重建环节,节省了升级时间和资源调度频率......

其他:

至于其他的就去看文档吧....就做个demo测试一下......

image.png
image.png

question:

  1. 如下图所示....5个pod都调度在一个节点上,有时间要研究一下调度策略。将pod打散。
image.png
image.png
  1. 也在群里问了一下大佬。如果节点下线该怎么办?kruise也就不灵了......
  2. 不过仅保持ip 不变这样的需求kruise已经很不错了。已经满足了我的需求了。有时间深度研究一下!
  3. 看文档,看文档,看文档。弄demo只是为了测试一下

参考:

  1. http://openkruise.io/en-us/docs/what_is_openkruise.html
  2. https://www.jianshu.com/p/cfa0d73a929a
  3. https://blog.csdn.net/easylife206/article/details/110152300
  4. https://blog.csdn.net/xujiamin0022016/article/details/112058944

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
NLP涉及技术原理和应用简单讲解【二】:paddle(分布式训练、AMP自动混合精度训练、模型量化、模型性能分析)
https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/06_distributed_training/cluster_quick_start_cn.html
汀丶人工智能
2022/12/21
8100
NLP涉及技术原理和应用简单讲解【二】:paddle(分布式训练、AMP自动混合精度训练、模型量化、模型性能分析)
5大典型模型测试单机训练速度超对标框架,飞桨如何做到?
为方便用户使用,飞桨提供一些不同粒度的Layer,其中有些Layer的组合可以通过单个Layer完成。比如:
AI科技大本营
2019/08/09
5610
更快更简单|飞桨PaddlePaddle单机训练速度优化最佳实践
导读:飞桨(PaddlePaddle)致力于让深度学习技术的创新与应用更简单。在单机训练速度方面,通过高并行、低开销的异步执行策略和高效率的核心算子,优化静态图训练性能,在Paddle Fluid v1.5.0的基准测试中,在7个典型模型上进行了测试(图像领域5个,NLP领域2个),其中5个模型的速度显著优于对标框架(大于15%),2个模型与对标框架持平(5%之内)。如果想让单机训练速度更快,可以根据这篇文档的建议从网络构建、数据准备、模型训练三个方向了解飞桨单机训练中常用的优化方法。来一组测试数据先睹为快。
用户1386409
2019/07/30
9880
更快更简单|飞桨PaddlePaddle单机训练速度优化最佳实践
训练提速60%!只需5行代码,PyTorch 1.6即将原生支持自动混合精度训练。
PyTorch 1.6 nightly增加了一个子模块 amp ,支持自动混合精度训练。值得期待。来看看性能如何,相比Nvidia Apex 有哪些优势?
McGL
2020/09/03
1.3K0
都9102年了还不懂动态图吗?一文带你了解飞桨动态图
导读:飞桨PaddlePaddle致力于让深度学习技术的创新与应用更简单。飞桨核心框架已提供了动态图(DyGraph)相关的API和文档,并且还附有Language model、Sentiment Classification、OCR、ResNet等模型的动态图版本官方实现。飞桨目前兼具了动态图和静态图的优势,同时具备灵活性和高效性。
用户1386409
2019/08/26
1.9K0
都9102年了还不懂动态图吗?一文带你了解飞桨动态图
【一】分布式训练---单机多卡多机多卡(飞桨paddle1.8)
     加快模型的训练速度。通过对训练任务按照一定方法拆分分配到多个计算节点进行计算,再按照一定的方法对需要汇总的信息进行聚合,从而实现加快训练速度的目的。
汀丶人工智能
2022/12/21
1.8K0
【一】分布式训练---单机多卡多机多卡(飞桨paddle1.8)
飞桨万能转换小工具X2Paddle,教你玩转模型迁移
百度推出飞桨(PaddlePaddle)后,不少开发者开始转向国内的深度学习框架。但是从代码的转移谈何容易,之前的工作重写一遍不太现实,成千上万行代码的手工转换等于是在做一次二次开发。
用户1386409
2019/07/02
9720
学界 | 减少模型半数内存用量:百度&amp;英伟达提出混合精度训练法
机器之心编译 选自:arXiv 参与:李泽南、蒋思源 深度学习的模型正在变得越来越复杂,所需要的计算资源也越来越多,在开发更加强大的硬件的同时,很多人也在致力于改进算法。最近,百度和英伟达共同提出了一
机器之心
2018/05/08
1.3K0
学界 | 减少模型半数内存用量:百度&amp;英伟达提出混合精度训练法
[源码分析] Facebook如何训练超大模型---(4)
我们在前文介绍过,微软 ZeRO 可以对一个万亿参数模型可以使用 8 路模型并行、64 路管道并行和 8 路数据并行在 4,096 个 NVIDIA A100 GPU 上进行扩展。而FSDP(Fully Sharded Data Parallel)是Facebook 深度借鉴微软ZeRO之后提出的PyTorch DDP升级版本,可以认为是对标微软 ZeRO,其本质是 parameter sharding。Parameter sharding 就是把模型参数等切分到各个GPU之上。我们会以 Google,微软和 Facebook 的论文,博客以及代码来进行学习分析。
罗西的思考
2022/05/09
1.6K0
[源码分析] Facebook如何训练超大模型---(4)
PyTorch重大更新:将支持自动混合精度训练!
混合精度训练(mixed precision training)可以让模型训练在尽量不降低性能的情形下提升训练速度,而且也可以降低显卡使用内存。目前主流的深度学习框架都开始支持混合精度训练。对于PyTorch,混合精度训练还主要是采用NVIDIA开源的apex库。但是,PyTorch将迎来重大更新,那就是提供内部支持的混合精度训练,而且是自动混合精度训练:
lujohn3li
2020/11/11
2.6K1
PyTorch重大更新:将支持自动混合精度训练!
优化PyTorch速度和内存效率的技巧汇总
深度学习模型的训练/推理过程涉及很多步骤。在有限的时间和资源条件下,每个迭代的速度越快,整个模型的预测性能就越快。我收集了几个PyTorch技巧,以最大化内存使用效率和最小化运行时间。为了更好地利用这些技巧,我们还需要理解它们如何以及为什么有效。
炼丹笔记
2022/10/27
2.6K0
优化PyTorch速度和内存效率的技巧汇总
ERNIE2.0背后的神助攻:飞桨高性能分布式训练引擎
ERNIE 连续获得业界 SOTA 效果,离不开飞桨高性能分布式训练引擎提供的强大支撑。举例来说,在计算复杂度较高的深层 Multi Head Self-Attention 结构和成本较低的海量无监督的中文预训练语料,数据量和算力需求都是超乎想象的,不仅要求我们拥有大量高性能计算芯片,还要有非常强大的分布式训练能力。
用户1386409
2019/08/15
6530
ERNIE2.0背后的神助攻:飞桨高性能分布式训练引擎
ERNIE 连续获得业界 SOTA 效果,离不开飞桨高性能分布式训练引擎提供的强大支撑。举例来说,在计算复杂度较高的深层 Multi Head Self-Attention 结构和成本较低的海量无监督的中文预训练语料,数据量和算力需求都是超乎想象的,不仅要求我们拥有大量高性能计算芯片,还要有非常强大的分布式训练能力。
机器之心
2019/08/09
5470
ERNIE2.0背后的神助攻:飞桨高性能分布式训练引擎
基于飞桨复现 SRGAN 模型,对图像进行超分辨率重构
SRGAN是一种用于图像超分辨率(SR)的生成对抗网络(GAN),能够推断四倍放大因子的照片般逼真的自然图像。
用户1386409
2020/11/06
8860
基于飞桨复现 SRGAN 模型,对图像进行超分辨率重构
Pytorch mixed precision 概述(混合精度)
本文对pytorch中的mixed precision进行测试。主要包括两部分,第一部分为mixed precision使用概述,第二部分为实际测试。参考torch官网 Automatic Mixed Precision
公众号机器学习与AI生成创作
2021/04/19
2K0
Pytorch mixed precision 概述(混合精度)
人脸表情识别实战:你的喜怒哀乐飞桨统统get!
【飞桨开发者说】李增保,2019年于安徽工业大学取得学士学位,目前在东南大学攻读硕士研究生学位,主要的研究方向为分布式无人机集群协同控制、算法设计与优化等。
用户1386409
2020/06/10
2.7K0
手把手教你如何用飞桨自动生成二次元人物头像
每次生成一组shape为[1,72]的随机数,更改其中某个数值,依次生成20组随机数,作为生成网络的输入,得到横向对比图片,观察GAN带来的神奇效果,如下所示。
用户1386409
2020/06/17
8220
手把手教你如何用飞桨自动生成二次元人物头像
性能领先,即训即用,快速部署,飞桨首次揭秘服务器端推理库
为什么难呢?因为调参就像厨师根据食材找到了料理配方,药剂师根据药材找到了药方,充满了玄幻色彩。
量子位
2020/03/18
8700
改动一行代码,PyTorch训练三倍提速,这些「高级技术」是关键
GitHub 地址:https://github.com/rasbt/cvpr2023
计算机视觉研究院
2023/08/23
5360
改动一行代码,PyTorch训练三倍提速,这些「高级技术」是关键
【DL】模型训练太慢?显存不够用?这个算法让你的GPU老树开新花
小夕找了一份开源代码,结果刚开始跑小夕就震惊了!什么鬼?训练速度怎么这么快?出bug了吧????
yuquanle
2020/02/20
1.8K0
【DL】模型训练太慢?显存不够用?这个算法让你的GPU老树开新花
推荐阅读
NLP涉及技术原理和应用简单讲解【二】:paddle(分布式训练、AMP自动混合精度训练、模型量化、模型性能分析)
8100
5大典型模型测试单机训练速度超对标框架,飞桨如何做到?
5610
更快更简单|飞桨PaddlePaddle单机训练速度优化最佳实践
9880
训练提速60%!只需5行代码,PyTorch 1.6即将原生支持自动混合精度训练。
1.3K0
都9102年了还不懂动态图吗?一文带你了解飞桨动态图
1.9K0
【一】分布式训练---单机多卡多机多卡(飞桨paddle1.8)
1.8K0
飞桨万能转换小工具X2Paddle,教你玩转模型迁移
9720
学界 | 减少模型半数内存用量:百度&amp;英伟达提出混合精度训练法
1.3K0
[源码分析] Facebook如何训练超大模型---(4)
1.6K0
PyTorch重大更新:将支持自动混合精度训练!
2.6K1
优化PyTorch速度和内存效率的技巧汇总
2.6K0
ERNIE2.0背后的神助攻:飞桨高性能分布式训练引擎
6530
ERNIE2.0背后的神助攻:飞桨高性能分布式训练引擎
5470
基于飞桨复现 SRGAN 模型,对图像进行超分辨率重构
8860
Pytorch mixed precision 概述(混合精度)
2K0
人脸表情识别实战:你的喜怒哀乐飞桨统统get!
2.7K0
手把手教你如何用飞桨自动生成二次元人物头像
8220
性能领先,即训即用,快速部署,飞桨首次揭秘服务器端推理库
8700
改动一行代码,PyTorch训练三倍提速,这些「高级技术」是关键
5360
【DL】模型训练太慢?显存不够用?这个算法让你的GPU老树开新花
1.8K0
相关推荐
NLP涉及技术原理和应用简单讲解【二】:paddle(分布式训练、AMP自动混合精度训练、模型量化、模型性能分析)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档