Kubernetes -3-


这是yann的第98篇分享

本日状态:

​ 帮同事排了一天bug。

Kubernetes -3-

这是yann的第98篇分享

第 1 部分 承前

昨天用视屏的方式演示了构建 Deployment 的过程,并探讨了 crd 的流程和实现过程。从本篇开始就逐步实现这个过程,yann 保证大家都能完成一次 crd 的开发经历。

第 2 部分 项目

官方示例

我们先看一下官方的实例程序。

网址如下:

https://github.com/kubernetes/sample-controller

CRD的官方的示例程序还是很规整的,中规中矩。如果学习Go语言的话,用类似的示例做出发点还是很好的,比选择个人一时兴趣创建的工程或者某个网页上随便找的Hello World要好很多。

很多同学不喜欢看官方的示例程序,认为又臭又长,内容复杂,版本还老。喜欢个人博客里面简化介绍,一条线结束,操作几下结果就出来了。平心而论,yann 也不喜欢看。但是为了认知的准确性,会勉强自己看。

个人项目

从上面的截图来看, 官方示例还是略微复杂了一点。我们从零开始创建一个更简化的项目。

还是先创建一个 crd.yaml,注意内容和文件路径,有些值等会用到。

位置:github.com/kubernetes/yann-controller/artifacts/examples/crd.yaml

apiVersion: apiextensions.k8s.io/v1beta1kind: CustomResourceDefinitionmetadata:name: tests.yanncontroller.k8s.iospec:group: yanncontroller.k8s.ioversion: v1alpha1names:  kind: Test  plural: testsscope: Namespaced

在第一篇中我们说到的 apiVersionkindmetadataspec 等几个固定的字段全员出现了。类似的情况在 k8s 中大量存在,所以我们只关注有变化部分就好了。

这次要关注的是 tests 和 yanncontroller ,分别为类型名的复数和分组名。在 metadata 里面可以看到。

另外注意,定义成类型的 Test,首字母T是大写的。

工程文件

最后 yann 带大家补全代码生成的全部文件。在本篇中,yann只会给大家展示基本的文件结构,代码具体内容和每个文件的用途,会在后面的篇章中逐渐说明。

我们只要看 pkg 目录下的文件就好。该目录包含2个子目录 apis、signals ,这两个目录是固定不变的,分别代表了 api 和信号量 相关的文件。

而 apis 下面的目录及子目录是自己定义的,分别对应 crd.yaml 配置文件中的分组名前缀 yanncontroller 和spec 定义的版本号 v1alpha1

除了这2个目录外,其他文件的名字都是固定不变的。这样分析下来,应该好理解很多。

第 3 部分 总结

今天的内容并不是很多, 但是侧重理解。搞清楚 crd.yaml 中字段和构建工程的关系是重中之重。了解之后就会发现没什么难度了。

下一篇,会开始解析各个文件的内容,同时为官方示例构建环境。

交互操作是一个很好的做法, 通过构建好的环境编译执行官方示例,可以加深对项目的了解。

同时,有一个正确的环境,对自己创建项目的调试很有帮助。如果项目和环境都无法保证正确,排查难度会倍增。

本文由博客一文多发平台 OpenWrite 发布!

发布在平台的文章, 和原文存在格式差异, 阅读不便请见谅

最新内容欢迎关注公众号:

构建CRD工程 - 程序员学点xx 43 k8s的更多相关文章

  1. 成为k8s大佬,从这个操作开始(伪) - 程序员学点xx 42 k8s

    目录 Kubernetes -2- 这是yann的第97篇分享 本日状态: ​ 饿着肚子写公众号的 yann 同学. 第 1 部分 反省 昨天的内容被熊哥批评了. 熊哥说,「你光想着自己爽,一句我认为 ...

  2. 程序员学点xx 之 Redis

    程序员学点xx 之 Redis 概述 其实程序员也要和操作系统打交道, 比如最常见的,部署自己电脑上的开发环境. 当然有时某些牛人, 觉得运维或基础部门的同事不够给力, 亲自上手部署服务器或线上环境, ...

  3. 0基础入门 docker 部署 各种 Prometheus 案例 - 程序员学点xx 总集篇

    目录 大家好, 学点xx 系列也推出一段时间了.虽然 yann 能力有限,但还是收到了很多鼓励与赞赏.对这个系列 yann 还是很喜欢的,特别是 Prometheus 篇,在期间经历公众号 100 篇 ...

  4. 你浏览器的书签栏还够用么? - 程序员学点xx 特辑

    lluxury 运维开发时间 为什么会想到这个话题,是因为最近看到的一条广告:注册 xx 送2048GB资料.yann 暗自感慨:"都9012年了,还有人分享家里的祖传硬盘".2T ...

  5. .Net程序员学用Oracle系列(10):系统函数(下)

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.转换函数 1.1.TO_CHAR 1.2.TO_NUMBER 1.3.TO_DATE 1.4.CAST 2.近似值函数 2. ...

  6. CSharp程序员学Android开发---1.初识AndriodIDE,掌握工具使用

    最近公司组织项目组成员开发一个Android项目的Demo,之前没有人有Andoid方面的开发经验,都是开发C#的. 虽说项目要求并不是很高,但是对于没有这方面经验的人来说,第一步是最困难的. 项目历 ...

  7. C++程序员学Python

    目录 C++程序员学Python 第二章.变量和数据类型 1.注释语句前用#: 2.常用于大小写函数: 第三章.列表 1.列表简述 2.修改,增加,插入,删除列表元素 第四章操作列表 1.遍历 2.创 ...

  8. .Net程序员学用Oracle系列(1):导航目录

    本人从事基于 Oracle 的 .Net 企业级开发近三年,在此之前学习和使用的都是 (MS)SQL Server.未曾系统的了解过 Oracle,所以长时间感到各种不习惯.不方便.怪异和不解,常会遇 ...

  9. .Net程序员学用Oracle系列(2):准备测试环境

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.创建说明 1.1.为什么要创建的测试环境? 1.2.了解 Oracle 实例的默认用户 2.创建环境 2.1.创建基本环境 ...

随机推荐

  1. 【ZJOI2008】树的统计

    题目 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w. 我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: ...

  2. 【bzoj3195】【 [Jxoi2012]奇怪的道路】另类压缩的状压dp好题

    (上不了p站我要死了) 啊啊,其实想清楚了还是挺简单的. Description 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外.考古学家已经知道,这个文明在全盛时期 ...

  3. Nginx动静分离-tomcat

    一.动静分离 1.通过中间件将动态请求和静态请求分离. 2.为什么? 分离资源,减少不必要的请求消耗,减少请求延时. 3.场景 还可以利用php,fastcgi,python 等方式 处理动态请求 # ...

  4. 在github pages网站下用jekyll制作博客教程

    https://www.jekyll.com.cn/ https://github.com/onevcat/vno-jekyll https://help.github.com/articles/us ...

  5. CSS基础-background的那些属性

    background的那些属性 background:背景的意思常用的六个属性 1.background-color:背景颜色 2.background-image:背景图像 3.background ...

  6. TCP报文段首部格式详解

    TCP首部格式   格式字段详解   源端口.目标端口: 计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两 ...

  7. Linux驱动开发5——同步机制

    上一章讲到了并发,指的是多个进程同时存取临界区资源的处理机制.这一章讲的同步机制,讲的是多个进程之间协同工作的处理机制,如临界区数据还没有准备好,A进程负责准备数据,B进程等待A进程完成之后读取数据. ...

  8. CentOS7 日常操作 2

    常用命令 文件与目录操作 命令 解析 cd /home 进入 ‘/home’ 目录 cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd - 返回上次所在目录 cp file1 file ...

  9. 002-localStorage和sessionStorage操作

    一.概述 HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 一直存在除非用户手动清除缓存;是基于域的,任何该域下的所有页面都可访问localSto ...

  10. linux 软连接的使用

    软连接是linux中一个常用命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接. 具体用法是:ln -s 源文件 目标文件. 当 我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需 ...