学习 Kubernetes Operator(四):Controller Runtime

栏目: IT技术 · 发布时间: 6年前

内容简介:添加 Controller Runtime 依赖:①③ 创建 Manager 并启动,Manager 内部维护了 Client、Cache 和 Schema 等;

kubernetes-sigs/controller-runtimekubernetes-sigs/kubebuilder 子项目,构建在 kubernetes/client-go 基础之上,实现 Controller。

准备

添加 Controller Runtime 依赖:

go get sigs.k8s.io/controller-runtime

代码

Controller Manager

import (  
    "context"
    "os"

    appsv1 "k8s.io/api/apps/v1"
    corev1 "k8s.io/api/core/v1"
    "sigs.k8s.io/controller-runtime/pkg/builder"
    "sigs.k8s.io/controller-runtime/pkg/client"
    "sigs.k8s.io/controller-runtime/pkg/client/config"
    "sigs.k8s.io/controller-runtime/pkg/manager"
    "sigs.k8s.io/controller-runtime/pkg/manager/signals"
    "sigs.k8s.io/controller-runtime/pkg/reconcile"
)

func main() {  
    // ①
    mgr, err := manager.New(config.GetConfigOrDie(), manager.Options{})
    if err != nil {
        os.Exit(1)
    }

    // ②
    err = builder.
        ControllerManagedBy(mgr).
        For(&appsv1.ReplicaSet{}).
        Owns(&corev1.Pod{}).
        Complete(&DemoReconcile{})
    if err != nil {
        os.Exit(1)
    }

    // ③
    if err := mgr.Start(signals.SetupSignalHandler()); err != nil {
        os.Exit(1)
    }
}

①③ 创建 Manager 并启动,Manager 内部维护了 Client、Cache 和 Schema 等;

② 使用 Builder 模式创建 Controller,并指定 watch 的资源和对应的 Reconcile。

Reconcile

type DemoReconcile struct {  
    client.Client // ①
}

// ②
func (r *DemoReconcile) Reconcile(req reconcile.Request) (reconcile.Result, error) {  
    rs := &appsv1.ReplicaSet{}
    if err := r.Get(context.TODO(), req.NamespacedName, rs); err != nil {
        return reconcile.Result{}, err
    }

    // TODO 逻辑代码

    return reconcile.Result{}, nil
}

// ③
func (r *DemoReconcile) InjectClient(c client.Client) error {  
    r.Client = c
    return nil
}

①③ 定义 Client 字段,并自动注入;

② Reconcile 方法,内部实现具体的回调逻辑。

参考


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

支付战争

支付战争

埃里克•杰克逊 / 徐彬、王晓、清华大学五道口金融学院未央研究 审译 / 中信出版社 / 2015-5-19 / 49.00

这是一个野心勃勃的创业计划,在线支付鼻祖PayPal试图创造一个“统治世界”的金融操作系统,并在全球成功推广一款颠覆式的互联网产品。 《支付战争》的作者是“PayPal黑帮”成员之一,他真实还原了这个伟大产品是如何诞生的,以及在后来的发展壮大之路上,如何应对融资紧张、突破增长瓶颈,在竞争者凶猛围剿与平台商霸王条款的夹击下,逆境求生,改变业务模式,最终完成IPO,并成功出售给竞争对手eBay的......一起来看看 《支付战争》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具