k8s leaderelection

选主操作就是通过client去etcd获取锁信息,和本地一样,证明是主,开始启动各种controller,然后就更新主的锁的时间戳存入etcd,每过一段时间就更新时间戳等信息存入etcd. 如果发现有新主了,打个log,然后发送event到apiserver.停止master上的各种controller工作。

如果不一样就证明是有人是主了,就一直的过一段时间重试,不停的获取。

代码如下:

leaderelection.RunOrDie(leaderelection.LeaderElectionConfig{
   Lock:          &rl,
   LeaseDuration: s.LeaderElection.LeaseDuration.Duration,
   RenewDeadline: s.LeaderElection.RenewDeadline.Duration,
   RetryPeriod:   s.LeaderElection.RetryPeriod.Duration,
   Callbacks: leaderelection.LeaderCallbacks{
      OnStartedLeading: run,
      OnStoppedLeading: func() {
         glog.Fatalf("leaderelection lost")
      },
   },
})
// Run starts the leader election loop
func (le *LeaderElector) Run() {
   defer func() {
      runtime.HandleCrash()
      le.config.Callbacks.OnStoppedLeading()
   }()
   le.acquire()
   stop := make(chan struct{})
   go le.config.Callbacks.OnStartedLeading(stop)
   le.renew()
   close(stop)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值