ErrNoMemberIDForPeerURL is returned when it is not possible to obtain a member ID from a given peer URL
var ErrNoMemberIDForPeerURL = errors.New("no member id found for peer URL")
func CreateDataDirectory(dir string) error
CreateDataDirectory creates the etcd data directory (commonly /var/lib/etcd) with the right permissions.
func GetClientURL(localEndpoint *kubeadmapi.APIEndpoint) string
GetClientURL creates an HTTPS URL that uses the configured advertise address and client port for the API controller
func GetClientURLByIP(ip string) string
GetClientURLByIP creates an HTTPS URL based on an IP address and the client listening port.
func GetPeerURL(localEndpoint *kubeadmapi.APIEndpoint) string
GetPeerURL creates an HTTPS URL that uses the configured advertise address and peer port for the API controller
Client provides connection parameters for an etcd cluster
type Client struct { Endpoints []string // contains filtered or unexported fields }
func New(endpoints []string, ca, cert, key string) (*Client, error)
New creates a new EtcdCluster client
func NewFromCluster(client clientset.Interface, certificatesDir string) (*Client, error)
NewFromCluster creates an etcd client for the etcd endpoints present in etcd member list. In order to compose this information, it will first discover at least one etcd endpoint to connect to. Once created, the client synchronizes client's endpoints with the known endpoints from the etcd membership API, since it is the authoritative source of truth for the list of available members.
func (c *Client) AddMember(name string, peerAddrs string) ([]Member, error)
AddMember adds a new member into the etcd cluster
func (c *Client) AddMemberAsLearner(name string, peerAddrs string) ([]Member, error)
AddMemberAsLearner adds a new learner member into the etcd cluster.
func (c *Client) CheckClusterHealth() error
CheckClusterHealth returns nil for status Up or error for status Down
func (c *Client) GetMemberID(peerURL string) (uint64, error)
GetMemberID returns the member ID of the given peer URL
func (c *Client) ListMembers() ([]Member, error)
ListMembers returns the member list.
func (c *Client) MemberPromote(learnerID uint64) error
MemberPromote promotes a member as a voting member. If the given member ID is already a voting member this method will return early and do nothing.
func (c *Client) RemoveMember(id uint64) ([]Member, error)
RemoveMember notifies an etcd cluster to remove an existing member
func (c *Client) Sync() error
Sync synchronizes client's endpoints with the known endpoints from the etcd membership.
func (c *Client) WaitForClusterAvailable(retries int, retryInterval time.Duration) (bool, error)
WaitForClusterAvailable returns true if all endpoints in the cluster are available after retry attempts, an error is returned otherwise
ClusterInterrogator is an interface to get etcd cluster related information
type ClusterInterrogator interface { CheckClusterHealth() error WaitForClusterAvailable(retries int, retryInterval time.Duration) (bool, error) Sync() error ListMembers() ([]Member, error) AddMember(name string, peerAddrs string) ([]Member, error) AddMemberAsLearner(name string, peerAddrs string) ([]Member, error) MemberPromote(learnerID uint64) error GetMemberID(peerURL string) (uint64, error) RemoveMember(id uint64) ([]Member, error) }
Member struct defines an etcd member; it is used for avoiding to spread github.com/coreos/etcd dependency across kubeadm codebase
type Member struct { Name string PeerURL string }