首页 文章 精选 留言 我的

精选列表

搜索[Kubernetes],共7156篇文章
优秀的个人博客,低调大师

Kubernetes 之 YAML 语法

YAML 是一种非常简洁/强大/专门用来写配置文件的语言! YAML 全称是 ”YAML Ain’t a Markup Language” 的递归缩写,该语言的设计参考了 JSON / XML 和 SDL 等语言,强调以数据为中心,简洁易读,编写简单。 YAML 语法特性 学过编程的人理解起来应该非常容易 语法特点 大小写敏感 通过缩进表示层级关系 禁止使用tab缩进,只能使用空格键 缩进的空格数目不重要,只要相同层级左对齐 使用#表示注释 # yaml languages: - Ruby - Perl - Python websites: YAML: yaml.org Ruby: ruby-lang.org Python: python.org Perl: use.perl.org # Json { languages: [ 'Ruby', 'Perl', 'Python' ], websites: { YAML: 'yaml.org', Ruby: 'ruby-lang.org', Python: 'python.org', Perl: 'use.perl.org' } } 数据结构 -对象: 键值对的字典 -数组: 一组按次序排列的列表 -纯量: 单个的且不可再分的值 # 纯量 hello # 数组 - Cat - Dog - Goldfish # 对象 animal: pets 引号区别 单引号(''): 特殊字符作为普通字符串处理 双引号(""): 特殊字符作为本身想表示的意思 # 单引号 name: 'Hi,\nTom' # 双引号 name: "Hi,\nTom" 内置类型列表 # YAML允许使用个感叹号(!)强制转换数据类型 # 单叹号通常是自定义类型,双叹号是内置类型 money: !!str 123 date: !Boolean true YAML 中的纯量 纯量是最基本的且不可再分的值 字符串 # 不适用引号 name: Tom # 使用单引号 name: 'Tom' # 使用双引号 name: "Tom" 布尔值 debug: true debug: false 数字 12 # 十进制整数 014 # 八进制整数 0xC #十六进制整数 13.4 #浮点数 1.2e+34 #指数 .inf #无穷大 Null date: ~ date: null 时间 # 使用iso-8601标准表示日期 date: 2018-01-01t16:59:43.10-05:00 YAML 特殊类型 日常使用中基本不会用到的类型 文本块 # 注意“|”与文本之间须另起一行 # 使用|标注的文本内容缩进表示的块,可以保留块中已有的回车换行 value: | hello world! # 输出结果 # hello 换行 world! # +表示保留文字块末尾的换行 # -表示删除字符串末尾的换行 value: | hello value: |- hello value: |+ hello # 输出结果 # hello\n hello hello\n\n # 注意“>”与文本之间的空格 # 使用>标注的文本内容缩进表示的块,将块中回车替换为空格最终连接成一行 value: > hello world! # 输出结果 # hello 空格 world! 锚点与引用 # 复制代码注意*引用部分不能追加内容 # 使用&定义数据锚点,即要复制的数据 # 使用*引用锚点数据,即数据的复制目的地 name: &a yaml book: *a books: - java - *a - python # 输出结果 book: yaml books:[java, yaml, python] YAML 实例说明 光说不练假把式 => JS-Yaml 官网实例地址https://nodeca.github.io/js-yaml --- # Collection Types ############################################################# ################################################################################ # http://yaml.org/type/map.html -----------------------------------------------# map: # Unordered set of key: value pairs. Block style: !!map Clark: Evans Ingy: döt Net Oren: Ben-Kiki Flow style: !!map { Clark: Evans, Ingy: döt Net, Oren: Ben-Kiki } # http://yaml.org/type/omap.html ----------------------------------------------# omap: # Explicitly typed ordered map (dictionary). Bestiary: !!omap - aardvark: African pig-like ant eater. Ugly. - anteater: South-American ant eater. Two species. - anaconda: South-American constrictor snake. Scaly. # Etc. # Flow style Numbers: !!omap [one: 1, two: 2, three: 3] # http://yaml.org/type/pairs.html ---------------------------------------------# pairs: # Explicitly typed pairs. Block tasks: !!pairs - meeting: with team. - meeting: with boss. - break: lunch. - meeting: with client. Flow tasks: !!pairs [meeting: with team, meeting: with boss] # http://yaml.org/type/set.html -----------------------------------------------# set: # Explicitly typed set. baseball players: !!set ? Mark McGwire ? Sammy Sosa ? Ken Griffey # Flow style baseball teams: !!set { Boston Red Sox, Detroit Tigers, New York Yankees } # http://yaml.org/type/seq.html -----------------------------------------------# seq: # Ordered sequence of nodes Block style: !!seq - Mercury # Rotates - no light/dark sides. - Venus # Deadliest. Aptly named. - Earth # Mostly dirt. - Mars # Seems empty. - Jupiter # The king. - Saturn # Pretty. - Uranus # Where the sun hardly shines. - Neptune # Boring. No rings. - Pluto # You call this a planet? Flow style: !!seq [ Mercury, Venus, Earth, Mars, # Rocks Jupiter, Saturn, Uranus, Neptune, # Gas Pluto, ] # Overrated # Scalar Types ################################################################# ################################################################################ # http://yaml.org/type/bool.html ----------------------------------------------# bool: - true - True - TRUE - false - False - FALSE # http://yaml.org/type/float.html ---------------------------------------------# float: canonical: 6.8523015e+5 exponentioal: 685.230_15e+03 fixed: 685_230.15 sexagesimal: 190:20:30.15 negative infinity: -.inf not a number: .NaN # http://yaml.org/type/int.html -----------------------------------------------# int: canonical: 685230 decimal: +685_230 octal: 02472256 hexadecimal: 0x_0A_74_AE binary: 0b1010_0111_0100_1010_1110 sexagesimal: 190:20:30 # http://yaml.org/type/merge.html ---------------------------------------------# merge: - &CENTER { x: 1, y: 2 } - &LEFT { x: 0, y: 2 } - &BIG { r: 10 } - &SMALL { r: 1 } # All the following maps are equal: - # Explicit keys x: 1 y: 2 r: 10 label: nothing - # Merge one map <<: *CENTER r: 10 label: center - # Merge multiple maps <<: [*CENTER, *BIG] label: center/big - # Override <<: [*BIG, *LEFT, *SMALL] x: 1 label: big/left/small # http://yaml.org/type/null.html ----------------------------------------------# null: # This mapping has four keys, # one has a value. empty: canonical: ~ english: null ~: null key # This sequence has five # entries, two have values. sparse: - ~ - 2nd entry - - 4th entry - Null # http://yaml.org/type/str.html -----------------------------------------------# string: abcd # http://yaml.org/type/timestamp.html -----------------------------------------# timestamp: canonical: 2001-12-15T02:59:43.1Z valid iso8601: 2001-12-14t21:59:43.10-05:00 space separated: 2001-12-14 21:59:43.10 -5 no time zone (Z): 2001-12-15 2:59:43.10 date (00:00:00Z): 2002-12-14 # JavaScript Specific Types #################################################### ################################################################################ # https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp regexp: simple: !!js/regexp foobar modifiers: !!js/regexp /foobar/mi # https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/undefined undefined: !!js/undefined ~ # https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function function: !!js/function > function foobar() { return 'Wow! JS-YAML Rocks!'; } # Custom types ################################################################# ################################################################################ # JS-YAML allows you to specify a custom YAML types for your structures. # This is a simple example of custom constructor defined in `js/demo.js` for # custom `!sexy` type: # # var SexyYamlType = new jsyaml.Type('!sexy', { # kind: 'sequence', # construct: function (data) { # return data.map(function (string) { return 'sexy ' + string; }); # } # }); # # var SEXY_SCHEMA = jsyaml.Schema.create([ SexyYamlType ]); # # result = jsyaml.load(yourData, { schema: SEXY_SCHEMA }); foobar: !sexy - bunny - chocolate

优秀的个人博客,低调大师

Kubernetes - 7.2 RBAC - RoleBinding

什么是RoleBinding RoleBinding通过已经定义的Role权限授予到用户、用户组,从而让用户获得在NameSpace对应的操作资源权限。 RoleBinding基本操作 通过YAML资源定义清单创建RoleBindingkubectl apply -f pod-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1beta1 kind: RoleBinding metadata: name: pod-rolebinding namespace: default subjects: - kind: User name: carry apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: pod-role apiGroup: rbac.authorization.k8s.io #### 什么是ClusterRoleBindingClusterRoleBinding通过已经定义的ClusterRole权限授予到用户或用户组,从而让用户获得集群内对应的操作资源权限。 ClusterRoleBinding基本操作 通过YAML资源定义清单创建ClusterRoleBindingkubectl apply -f pod-clusterrolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: pod-clusterrolebinding subjects: - kind: Group name: super-admin apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: pod-clusterrole apiGroup: rbac.authorization.k8s.io 相关参数 RoleBinding、ClusterRoleBinding绑定的Subject对象可以是User、Group、Service Account

优秀的个人博客,低调大师

Kubernetes - 4.7 Workload - Job

什么是Job? Job一般用于数据处理、迁移等一次性任务处理场景,Job会创建Pod进行作业并确保完成。 Job作业模式 非并行作业: 作业完成后Pod自动终止。 具有完成次数计数的并行作业:指定所需完成作业的次数,作业完成后Pod自动终止。 具有工作队列的并行作业:指定Pod之间或外部服务的协调确定作业,Pod全部终止后作业完成。 通过Yaml资源定义清单创建Job apiVersion: batch/v1 kind: Job metadata: name: pi spec: template: spec: containers: - name: pi image: perl command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] restartPolicy: Never backoffLimit: 4 参数 .spec.completions #需要Pod的执行成功次数 .spec.parallelism #Job同时可执行的Pod数量 .spec.backoffLimit #Job的容错次数 .spec.activeDeadlineSeconds #设置Job运行的超时时间

优秀的个人博客,低调大师

Kubernetes - 4.8 Workload - CronJob

什么是CronJob? CronJob负责处理周期性的任务,基于时间点触发运行,一般用于备份、数据清理、更新等自动化场景。CronJob也是使用Job对象来执行任务,每一次运行都是会创建一个Job对象,对于CronJob的管理是与Job一样的。 通过Yaml资源定义清单创建CronJob apiVersion: batch/v1beta1 kind: CronJob metadata: name: hello spec: schedule: "*/1 * * * *" #执行周期 jobTemplate: spec: template: spec: containers: - name: hello image: busybox args: - /bin/sh - -c - date; echo "Hello, World!" restartPolicy: OnFailure 参数说明 .spec.schedule 执行周期,由分、时、日、月、周组成,*代表每个周期都触发。 .spec.concurrencyPolicy 并发策略 Allow 允许同时作业。 Forbid 不允许并发作业,如果开始新作业并且之前的作业未完成,那么将跳过新的作业。 Replace 如果之前的作业未完成,那么将用当前的作业替换掉之前的作业。 .spec.suspend 如果为true则将后续的作业都挂起,不包括已开始运行的作业。 .spec.successfulJobsHistoryLimit 成功的作业历史记录 .spec.failedJobsHistoryLimit 失败的作业历史记录

优秀的个人博客,低调大师

Kubernetes - 4.5 Workload - StatefulSet

什么是StatefulSet? StatefulSet表示一组具有唯一持久身份标识和稳定主机名的有状态Pod,无论Pod在哪一个Node上运行,身份标识及持久化的数据其都会保留。一般用于持久化存储、固定网络标记、有序部署、有伸缩等场景。 什么是有状态应用? 有状态应用是将数据或应用程序状态持久化到关联的存储中,例如MySQL、Kafka、Zookeeper等应用场景,需要对其进行唯一持久身份的标识及数据的永久保存到存储中。 StatefulSet操作 像Deployment一样StatefulSet管理基于相同容器规范的Pod。但唯一不同的是StatefulSet为其每个Pod维护一个标识身份,StatefulSet需要Headless Service来负责Pod的网络身份。每个Pod具有一个存储类及存储声明,无论Pod被调度到哪一个节点,相关的存储挂载将伴随Pod。在删除Pod或者Stateful时,不会删除掉关联的PersistentVolume及PersistentVolumes。 通过yaml资源定义清单创建 apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 80 clusterIP: None selector: app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: selector: matchLabels: app: nginx serviceName: "nginx" replicas: 3 template: metadata: labels: app: nginx spec: terminationGracePeriodSeconds: 10 containers: - name: nginx image: nginx:1.16 volumeMounts: - name: www mountPath: /usr/share/nginx/html volumeClaimTemplates: - metadata: name: www spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi 查看StatefulSet列表kubectl get statefulset查看StatefulSet描述信息kubectl describe statefulset StatefulSet更新策略 通过指定 spec: updateStrategy 中定义的更新策略来确定如何处理更新。 OnDelete: 当手动删除旧的Pod时新的Pod才会被自动被创建。 RollingUpdate: 默认的更新策略。旧的Pod自动被删除,新的Pod也自动创建。 分区 通过指定 .spec.updateStrategy.rollingUpdate.partition 中定义的来对 RollingUpdate 更新策略进行分区,如果指定了分区,则当 StatefulSet 的 .spec.template 更新时,具有大于或等于分区序数的所有 Pod 将被更新。具有小于分区的序数的所有 Pod 将不会被更新,即使删除它们也将被重新创建。如果 StatefulSet 的 .spec.updateStrategy.rollingUpdate.partition 大于其 .spec.replicas,则其 .spec.template 的更新将不会传播到 Pod。一般情况下不需要使用分区,在金丝雀、预发布等场景下是比较有用的。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。