Kubernetes pod被选为领导者后,如何使用leader with lease-in operator framework执行功能?
我正在尝试运行一个容器的3个吊舱/副本,其中我希望其中一个吊舱作为领队运行,如果该吊舱停止或失败,其他非领队运行吊舱应立即领队继续执行领队吊舱要求的执行。为了清楚起见,其他吊舱将执行,但一旦领导吊舱获得领导权,它将执行一些其他吊舱不会执行的额外代码。这是我所关注的问题的链接 下面是我运行的一个测试示例,在运行容器应该运行的实际代码时遇到问题Kubernetes pod被选为领导者后,如何使用leader with lease-in operator framework执行功能?,kubernetes,replicaset,operator-sdk,leader-election,Kubernetes,Replicaset,Operator Sdk,Leader Election,我正在尝试运行一个容器的3个吊舱/副本,其中我希望其中一个吊舱作为领队运行,如果该吊舱停止或失败,其他非领队运行吊舱应立即领队继续执行领队吊舱要求的执行。为了清楚起见,其他吊舱将执行,但一旦领导吊舱获得领导权,它将执行一些其他吊舱不会执行的额外代码。这是我所关注的问题的链接 下面是我运行的一个测试示例,在运行容器应该运行的实际代码时遇到问题 package main import ( "fmt" "github.com/operator-framew
package main
import (
"fmt"
"github.com/operator-framework/operator-lib/leader"
"sigs.k8s.io/controller-runtime/pkg/manager"
"sigs.k8s.io/controller-runtime/pkg/client/config"
"sigs.k8s.io/controller-runtime/pkg/manager/signals"
"context"
"time"
"os"
)
func main() {
fmt.Println("Program has started successfully")
cfg, err := config.GetConfig()
if err != nil {
os.Exit(1)
}
opts := manager.Options{
LeaderElection: true,
LeaderElectionID: "memcached-operator-lock",
}
fmt.Println("Creating a manager")
mgr, err := manager.New(cfg, opts)
if err := mgr.Start(signals.SetupSignalHandler()); err != nil {
fmt.Println(err, "Manager exited non-zero")
os.Exit(1)
}
fmt.Println("Competing to become the leader")
err = leader.Become(context.TODO(), "memcached-operator-lock")
if err != nil {
fmt.Println("Failed to retry for leader lock because : %v ", err)
}
fmt.Println("I am the leader, i will pause for 4 minutes")
time.Sleep(4 * time.Minute)
}
先导吊舱的日志如下所示:
[diamanti@appserv41 leader_test]$ kubectl logs test-rs-qbm7k
Program has started successfully
Creating a manager
I1007 00:14:10.785904 1 leaderelection.go:242] attempting to acquire leader lease default/memcached-operator-lock...
I1007 00:14:28.184916 1 leaderelection.go:252] successfully acquired lease default/memcached-operator-lock
我希望pod能够运行到“我是领导者”打印语句,并执行我希望领导者pod能够执行的任务。即使我能在某个地方传递一个函数,一旦它获得领导权,它就可以被执行,这对我来说也没问题。目前,我在某个地方犯了一个错误,在3个吊舱中的一个获得领导权后,我什么也做不了