我的编程空间,编程开发者的网络收藏夹
学习永远不晚

kubernetes中如何使用PodPreset

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

kubernetes中如何使用PodPreset

这篇文章主要介绍了kubernetes中如何使用PodPreset,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一:简介

    PodPreset 资源对象只有 kubernetes 1.8 以上版本才支持。Preset 就是预设,有时候想要让一批容器在启动的时候就注入一些信息,比如 secret、volume、volume mount 和环境变量,而又不想一个一个的改这些 Pod 的 tmeplate,这时候就可以用到 PodPreset 这个资源对象了。该对象用来在 Pod 创建的时候向 Pod 中注入某些特定信息。该信息可以包括 secret、volume、volume mount 和环境变量。

    Pod Preset 是用来在 Pod 被创建的时候向其中注入额外的运行时需求的 API 资源。可以使用 label selector 来指定为哪些 Pod 应用 Pod Preset。使用 Pod Preset 使得 pod 模板的作者可以不必为每个 Pod 明确提供所有信息。这样一来,pod 模板的作者就不需要知道关于该服务的所有细节。

二:开启PodPreset

1.开启API:在apiserver配置文件中增加--runtime-config=settings.k8s.io/v1alpha1/podpreset
2.开启准入控制器:在apiserver配置文件中增加--admission-control=PodPreset

三:PodPreset工作机制

当有 Pod 创建请求发生时,系统将执行以下操作:
1.检索所有可用的 PodPresets。
2.检查 PodPreset 标签选择器上的标签,看看其是否能够匹配正在创建的 Pod 上的标签。
3.尝试将由 PodPreset 定义的各种资源合并到正在创建的 Pod 中。
4.出现错误时,在该 Pod 上引发记录合并错误的事件,PodPreset 不会注入任何资源到创建的 Pod 中。
5.注释刚生成的修改过的 Pod spec,以表明它已被 PodPreset 修改过。注释的格式为 podpreset.admission.kubernetes.io/podpreset-<pod-preset name>": "<resource version>"。

    每个 Pod 可以匹配零个或多个 Pod Prestet;并且每个 PodPreset 可以应用于零个或多个 Pod。 PodPreset 应用于一个或多个 Pod 时,Kubernetes 会修改 Pod Spec。对于 Env、EnvFrom 和 VolumeMounts 的更改,Kubernetes 修改 Pod 中所有容器的容器 spec;对于 Volume 的更改,Kubernetes 修改 Pod Spec。

四:示例

1.增加环境变量和存储卷的PodPreset
PodPreset

  1. kind: PodPreset

  2. apiVersion: settings.k8s.io/v1alpha1

  3. metadata:

  4.   name: allow-database

  5.   namespace: myns

  6. spec:

  7.   selector:

  8.     matchLabels:

  9.       role: frontend

  10.   env:

  11.     - name: DB_PORT

  12.       value: "6379"

  13.   volumeMounts:

  14.     - mountPath: /cache

  15.       name: cache-volume

  16.   volumes:

  17.     - name: cache-volume

  18.       emptyDir: {}

用户提交的Pod

  1. apiVersion: v1

  2. kind: Pod

  3. metadata:

  4.   name: website

  5.   labels:

  6.     app: website

  7.     role: frontend

  8. spec:

  9.   containers:

  10.     - name: website

  11.       image: ecorp/website

  12.       ports:

  13.         - containerPort: 80

经过准入控制PodPreset后,Pod会自动增加环境变量和存储卷

  1. apiVersion: v1

  2. kind: Pod

  3. metadata:

  4.   name: website

  5.   labels:

  6.     app: website

  7.     role: frontend

  8.   annotations:

  9.     podpreset.admission.kubernetes.io/allow-database: "resource version"

  10. spec:

  11.   containers:

  12.     - name: website

  13.       image: ecorp/website

  14.       volumeMounts:

  15.         - mountPath: /cache

  16.           name: cache-volume

  17.       ports:

  18.         - containerPort: 80

  19.       env:

  20.         - name: DB_PORT

  21.           value: "6379"

  22.   volumes:

  23.     - name: cache-volume

  24.       emptyDir: {}

2.ConfigMap示例

  1. apiVersion: v1

  2. kind: ConfigMap

  3. metadata:

  4.   name: etcd-env-config

  5. data:

  6.   number_of_members: "1"

  7.   initial_cluster_state: new

  8.   initial_cluster_token: DUMMY_ETCD_INITIAL_CLUSTER_TOKEN

  9.   discovery_token: DUMMY_ETCD_DISCOVERY_TOKEN

  10.   discovery_url: http://etcd_discovery:2379

  11.   etcdctl_peers: http://etcd:2379

  12.   duplicate_key: FROM_CONFIG_MAP

  13.   REPLACE_ME: "a value"

  1. kind: PodPreset

  2. apiVersion: settings.k8s.io/v1alpha1

  3. metadata:

  4.   name: allow-database

  5.   namespace: myns

  6. spec:

  7.   selector:

  8.     matchLabels:

  9.       role: frontend

  10.   env:

  11.     - name: DB_PORT

  12.       value: 6379

  13.     - name: duplicate_key

  14.       value: FROM_ENV

  15.     - name: expansion

  16.       value: $(REPLACE_ME)

  17.   envFrom:

  18.     - configMapRef:

  19.         name: etcd-env-config

  20.   volumeMounts:

  21.     - mountPath: /cache

  22.       name: cache-volume

  23.     - mountPath: /etc/app/config.json

  24.       readOnly: true

  25.       name: secret-volume

  26.   volumes:

  27.     - name: cache-volume

  28.       emptyDir: {}

  29.     - name: secret-volume

  30.       secretName: config-details

用户提交的Pod

  1. apiVersion: v1

  2. kind: Pod

  3. metadata:

  4.   name: website

  5.   labels:

  6.     app: website

  7.     role: frontend

  8. spec:

  9.   containers:

  10.     - name: website

  11.       image: ecorp/website

  12.       ports:

  13.         - containerPort: 80

经过准入控制 PodPreset后,Pod会自动增加ConfigMap环境变量

  1. apiVersion: v1

  2. kind: Pod

  3. metadata:

  4.   name: website

  5.   labels:

  6.     app: website

  7.     role: frontend

  8.   annotations:

  9.     podpreset.admission.kubernetes.io/allow-database: "resource version"

  10. spec:

  11.   containers:

  12.     - name: website

  13.       image: ecorp/website

  14.       volumeMounts:

  15.         - mountPath: /cache

  16.           name: cache-volume

  17.         - mountPath: /etc/app/config.json

  18.           readOnly: true

  19.           name: secret-volume

  20.       ports:

  21.         - containerPort: 80

  22.       env:

  23.         - name: DB_PORT

  24.           value: "6379"

  25.         - name: duplicate_key

  26.           value: FROM_ENV

  27.         - name: expansion

  28.           value: $(REPLACE_ME)

  29.       envFrom:

  30.         - configMapRef:

  31.           name: etcd-env-config

  32.   volumes:

  33.     - name: cache-volume

  34.       emptyDir: {}

  35.     - name: secret-volume

  36.       secretName: config-details

感谢你能够认真阅读完这篇文章,希望小编分享的“kubernetes中如何使用PodPreset”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

kubernetes中如何使用PodPreset

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

kubernetes中如何使用PodPreset

这篇文章主要介绍了kubernetes中如何使用PodPreset,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一:简介 PodPreset 资源对象只有 kubern
2023-06-04

kubernetes中Secret如何使用

小编给大家分享一下kubernetes中Secret如何使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一: 简介Secret 可以作为数据卷被挂载,或作为环境
2023-06-04

kubernetes中如何使用kubectl port-forward

小编给大家分享一下kubernetes中如何使用kubectl port-forward,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一:简介kubectl po
2023-06-04

YAML文件如何在kubernetes中使用

YAML文件如何在kubernetes中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。01 YAML文件介绍 K8S在启动Pod的时候,会使用yaml文件的方
2023-06-14

Kubernetes中如何使用Rancher部署K8S集群

本篇文章给大家分享的是有关Kubernetes中如何使用Rancher部署K8S集群,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.安装Rancher这里使用三台机器来搭建K
2023-06-19

如何使用Go构建Kubernetes应用

这篇文章主要介绍“如何使用Go构建Kubernetes应用”,在日常操作中,相信很多人在如何使用Go构建Kubernetes应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Go构建Kubernete
2023-06-15

kubernetes中如何使用 kubeadm 创建高可用集群

本篇文章为大家展示了kubernetes中如何使用 kubeadm 创建高可用集群,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一. 环境和版本信息OS: CentOS 7.6.1810HAPro
2023-06-19

如何使用Kubeadm快速搭建Kubernetes

这篇文章主要讲解了“如何使用Kubeadm快速搭建Kubernetes”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Kubeadm快速搭建Kubernetes”吧!##版本说明 ##
2023-06-19

Python如何使用Kubernetes API访问集群

这篇文章主要介绍了Python如何使用Kubernetes API访问集群,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。通过将身份认证令牌直接传给 API 服务器,可以避免使
2023-06-15

如何使用VirtualBox+Ubuntu16搭建Kubernetes集群

小编给大家分享一下如何使用VirtualBox+Ubuntu16搭建Kubernetes集群,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Kubernetes 运
2023-06-15

Mac上如何使用Docker Desktop启动Kubernetes

本篇内容主要讲解“Mac上如何使用Docker Desktop启动Kubernetes”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Mac上如何使用Docker Desktop启动Kuberne
2023-06-03

Kubernetes中如何部署Spark

小编给大家分享一下Kubernetes中如何部署Spark,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Spark是新一代分布式内存计算框架,Apache开源的顶
2023-06-27

kubernetes中如何实现Helm

这篇文章主要介绍kubernetes中如何实现Helm,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一:简介在Kubernetes上进行容器化部署并非易事,通常需要先研究Docker镜像的运行需求,环境变量等内容,并
2023-06-04

Azure中如何部署Kubernetes

这篇文章将为大家详细讲解有关Azure中如何部署Kubernetes,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Azure 命令行接口 (CLI) 是用于管理 Azure 资源的 Microsoft 跨
2023-06-27

Kubernetes中如何使用临时容器进行故障排查

小编给大家分享一下Kubernetes中如何使用临时容器进行故障排查,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言容器及其周围的生态系统改变了工程师部署、维护
2023-06-29

Kubernetes上如何使用Jaeger分布式追踪

今天小编给大家分享一下Kubernetes上如何使用Jaeger分布式追踪的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。正文
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录