本文整理匯總了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)
}