本文整理汇总了Golang中k8s/io/kubernetes/pkg/client/unversioned.Interface.Endpoints方法的典型用法代码示例。如果您正苦于以下问题:Golang Interface.Endpoints方法的具体用法?Golang Interface.Endpoints怎么用?Golang Interface.Endpoints使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类k8s/io/kubernetes/pkg/client/unversioned.Interface
的用法示例。
在下文中一共展示了Interface.Endpoints方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: getCurrentLeader
func getCurrentLeader(electionId, namespace string, c client.Interface) (string, *api.Endpoints, error) {
endpoints, err := c.Endpoints(namespace).Get(electionId)
if err != nil {
return "", nil, err
}
val, found := endpoints.Annotations[leaderelection.LeaderElectionRecordAnnotationKey]
if !found {
return "", endpoints, nil
}
electionRecord := leaderelection.LeaderElectionRecord{}
if err := json.Unmarshal([]byte(val), &electionRecord); err != nil {
return "", nil, err
}
return electionRecord.HolderIdentity, endpoints, err
}
示例2: NewElection
// NewElection creates an election. 'namespace'/'election' should be an existing Kubernetes Service
// 'id' is the id if this leader, should be unique.
func NewElection(electionId, id, namespace string, ttl time.Duration, callback func(leader string), c client.Interface) (*leaderelection.LeaderElector, error) {
_, err := c.Endpoints(namespace).Get(electionId)
if err != nil {
if errors.IsNotFound(err) {
_, err = c.Endpoints(namespace).Create(&api.Endpoints{
ObjectMeta: api.ObjectMeta{
Name: electionId,
},
})
if err != nil && !errors.IsConflict(err) {
return nil, err
}
} else {
return nil, err
}
}
leader, endpoints, err := getCurrentLeader(electionId, namespace, c)
if err != nil {
return nil, err
}
callback(leader)
broadcaster := record.NewBroadcaster()
hostname, err := os.Hostname()
if err != nil {
return nil, err
}
recorder := broadcaster.NewRecorder(api.EventSource{
Component: "leader-elector",
Host: hostname,
})
callbacks := leaderelection.LeaderCallbacks{
OnStartedLeading: func(stop <-chan struct{}) {
callback(id)
},
OnStoppedLeading: func() {
leader, _, err := getCurrentLeader(electionId, namespace, c)
if err != nil {
glog.Errorf("failed to get leader: %v", err)
// empty string means leader is unknown
callback("")
return
}
callback(leader)
},
}
config := leaderelection.LeaderElectionConfig{
Client: c,
EventRecorder: recorder,
EndpointsMeta: endpoints.ObjectMeta,
Identity: id,
LeaseDuration: ttl,
RenewDeadline: ttl / 2,
RetryPeriod: ttl / 4,
Callbacks: callbacks,
}
return leaderelection.NewLeaderElector(config)
}