Documentation
¶
Overview ¶
Package controlplane contains code for setting up and running a Kubernetes cluster control plane API server.
Index ¶
- Constants
- Variables
- func DefaultAPIResourceConfigSource() *serverstorage.ResourceConfig
- type CompletedConfig
- type Config
- type Controller
- func (c *Controller) CreateOrUpdateMasterServiceIfNeeded(serviceName string, serviceIP net.IP, servicePorts []corev1.ServicePort, ...) error
- func (c *Controller) PostStartHook(hookContext genericapiserver.PostStartHookContext) error
- func (c *Controller) PreShutdownHook() error
- func (c *Controller) RunKubernetesService(ch chan struct{})
- func (c *Controller) Start()
- func (c *Controller) Stop()
- func (c *Controller) UpdateKubernetesService(reconcile bool) error
- type EndpointReconcilerConfig
- type ExtraConfig
- type Instance
- type RESTStorageProvider
Constants ¶
const ( // DefaultEndpointReconcilerInterval is the default amount of time for how often the endpoints for // the kubernetes Service are reconciled. DefaultEndpointReconcilerInterval = 10 * time.Second // DefaultEndpointReconcilerTTL is the default TTL timeout for the storage layer DefaultEndpointReconcilerTTL = 15 * time.Second // IdentityLeaseComponentLabelKey is used to apply a component label to identity lease objects, indicating: // 1. the lease is an identity lease (different from leader election leases) // 2. which component owns this lease IdentityLeaseComponentLabelKey = "apiserver.kubernetes.io/identity" // KubeAPIServer defines variable used internally when referring to kube-apiserver component KubeAPIServer = "kube-apiserver" // DeprecatedKubeAPIServerIdentityLeaseLabelSelector selects kube-apiserver identity leases DeprecatedKubeAPIServerIdentityLeaseLabelSelector = "k8s.io/component=kube-apiserver" // KubeAPIServerIdentityLeaseLabelSelector selects kube-apiserver identity leases KubeAPIServerIdentityLeaseLabelSelector = IdentityLeaseComponentLabelKey + "=" + KubeAPIServer )
Variables ¶
var ( // IdentityLeaseGCPeriod is the interval which the lease GC controller checks for expired leases // IdentityLeaseGCPeriod is exposed so integration tests can tune this value. IdentityLeaseGCPeriod = 3600 * time.Second // IdentityLeaseDurationSeconds is the duration of kube-apiserver lease in seconds // IdentityLeaseDurationSeconds is exposed so integration tests can tune this value. IdentityLeaseDurationSeconds = 3600 // IdentityLeaseRenewIntervalSeconds is the interval of kube-apiserver renewing its lease in seconds // IdentityLeaseRenewIntervalSeconds is exposed so integration tests can tune this value. IdentityLeaseRenewIntervalPeriod = 10 * time.Second )
Functions ¶
func DefaultAPIResourceConfigSource ¶
func DefaultAPIResourceConfigSource() *serverstorage.ResourceConfig
DefaultAPIResourceConfigSource returns default configuration for an APIResource.
Types ¶
type CompletedConfig ¶
type CompletedConfig struct {
// contains filtered or unexported fields
}
CompletedConfig embeds a private pointer that cannot be instantiated outside of this package
func (CompletedConfig) New ¶
func (c CompletedConfig) New(delegationTarget genericapiserver.DelegationTarget) (*Instance, error)
New returns a new instance of Master from the given config. Certain config fields will be set to a default value if unset. Certain config fields must be specified, including: KubeletClientConfig
func (CompletedConfig) NewBootstrapController ¶
func (c CompletedConfig) NewBootstrapController(legacyRESTStorage corerest.LegacyRESTStorage, client kubernetes.Interface) (*Controller, error)
NewBootstrapController returns a controller for watching the core capabilities of the master
type Config ¶
type Config struct { GenericConfig *genericapiserver.Config ExtraConfig ExtraConfig }
Config defines configuration for the master
func (*Config) Complete ¶
func (c *Config) Complete() CompletedConfig
Complete fills in any fields not set that are required to have valid data. It's mutating the receiver.
type Controller ¶
type Controller struct { ServiceClusterIPRegistry rangeallocation.RangeRegistry ServiceClusterIPRange net.IPNet SecondaryServiceClusterIPRegistry rangeallocation.RangeRegistry SecondaryServiceClusterIPRange net.IPNet ServiceClusterIPInterval time.Duration ServiceNodePortRegistry rangeallocation.RangeRegistry ServiceNodePortInterval time.Duration ServiceNodePortRange utilnet.PortRange EndpointReconciler reconcilers.EndpointReconciler EndpointInterval time.Duration PublicIP net.IP // ServiceIP indicates where the kubernetes service will live. It may not be nil. ServiceIP net.IP ServicePort int PublicServicePort int KubernetesServiceNodePort int // contains filtered or unexported fields }
Controller is the controller manager for the core bootstrap Kubernetes controller loops, which manage creating the "kubernetes" service and provide the IP repair check on service IPs
func (*Controller) CreateOrUpdateMasterServiceIfNeeded ¶
func (c *Controller) CreateOrUpdateMasterServiceIfNeeded(serviceName string, serviceIP net.IP, servicePorts []corev1.ServicePort, serviceType corev1.ServiceType, reconcile bool) error
CreateOrUpdateMasterServiceIfNeeded will create the specified service if it doesn't already exist.
func (*Controller) PostStartHook ¶
func (c *Controller) PostStartHook(hookContext genericapiserver.PostStartHookContext) error
PostStartHook initiates the core controller loops that must exist for bootstrapping.
func (*Controller) PreShutdownHook ¶
func (c *Controller) PreShutdownHook() error
PreShutdownHook triggers the actions needed to shut down the API Server cleanly.
func (*Controller) RunKubernetesService ¶
func (c *Controller) RunKubernetesService(ch chan struct{})
RunKubernetesService periodically updates the kubernetes service
func (*Controller) Start ¶
func (c *Controller) Start()
Start begins the core controller loops that must exist for bootstrapping a cluster.
func (*Controller) Stop ¶
func (c *Controller) Stop()
Stop cleans up this API Servers endpoint reconciliation leases so another master can take over more quickly.
func (*Controller) UpdateKubernetesService ¶
func (c *Controller) UpdateKubernetesService(reconcile bool) error
UpdateKubernetesService attempts to update the default Kube service.
type EndpointReconcilerConfig ¶
type EndpointReconcilerConfig struct { Reconciler reconcilers.EndpointReconciler Interval time.Duration }
EndpointReconcilerConfig holds the endpoint reconciler and endpoint reconciliation interval to be used by the master.
type ExtraConfig ¶
type ExtraConfig struct { ClusterAuthenticationInfo clusterauthenticationtrust.ClusterAuthenticationInfo APIResourceConfigSource serverstorage.APIResourceConfigSource StorageFactory serverstorage.StorageFactory EndpointReconcilerConfig EndpointReconcilerConfig EventTTL time.Duration KubeletClientConfig kubeletclient.KubeletClientConfig EnableLogsSupport bool ProxyTransport *http.Transport // Values to build the IP addresses used by discovery // The range of IPs to be assigned to services with type=ClusterIP or greater ServiceIPRange net.IPNet // The IP address for the GenericAPIServer service (must be inside ServiceIPRange) APIServerServiceIP net.IP // dual stack services, the range represents an alternative IP range for service IP // must be of different family than primary (ServiceIPRange) SecondaryServiceIPRange net.IPNet // the secondary IP address the GenericAPIServer service (must be inside SecondaryServiceIPRange) SecondaryAPIServerServiceIP net.IP // Port for the apiserver service. APIServerServicePort int // The range of ports to be assigned to services with type=NodePort or greater ServiceNodePortRange utilnet.PortRange // If non-zero, the "kubernetes" services uses this port as NodePort. KubernetesServiceNodePort int // Number of masters running; all masters must be started with the // same value for this field. (Numbers > 1 currently untested.) MasterCount int // MasterEndpointReconcileTTL sets the time to live in seconds of an // endpoint record recorded by each master. The endpoints are checked at an // interval that is 2/3 of this value and this value defaults to 15s if // unset. In very large clusters, this value may be increased to reduce the // possibility that the master endpoint record expires (due to other load // on the etcd server) and causes masters to drop in and out of the // kubernetes service record. It is not recommended to set this value below // 15s. MasterEndpointReconcileTTL time.Duration // Selects which reconciler to use EndpointReconcilerType reconcilers.Type ServiceAccountIssuer serviceaccount.TokenGenerator ServiceAccountMaxExpiration time.Duration ExtendExpiration bool // ServiceAccountIssuerDiscovery ServiceAccountIssuerURL string ServiceAccountJWKSURI string ServiceAccountPublicKeys []interface{} VersionedInformers informers.SharedInformerFactory // RepairServicesInterval interval used by the repair loops for // the Services NodePort and ClusterIP resources RepairServicesInterval time.Duration }
ExtraConfig defines extra configuration for the master
type Instance ¶
type Instance struct { GenericAPIServer *genericapiserver.GenericAPIServer ClusterAuthenticationInfo clusterauthenticationtrust.ClusterAuthenticationInfo }
Instance contains state for a Kubernetes cluster api server instance.
func (*Instance) InstallAPIs ¶
func (m *Instance) InstallAPIs(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter, restStorageProviders ...RESTStorageProvider) error
InstallAPIs will install the APIs for the restStorageProviders if they are enabled.
func (*Instance) InstallLegacyAPI ¶
func (m *Instance) InstallLegacyAPI(c *completedConfig, restOptionsGetter generic.RESTOptionsGetter) error
InstallLegacyAPI will install the legacy APIs for the restStorageProviders if they are enabled.
type RESTStorageProvider ¶
type RESTStorageProvider interface { GroupName() string NewRESTStorage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, error) }
RESTStorageProvider is a factory type for REST storage.
Source Files
¶
Directories
¶
Path | Synopsis |
---|---|
options
Package options contains flags and options for initializing an apiserver
|
Package options contains flags and options for initializing an apiserver |
controller
|
|
Package reconcilers provides objects for managing the list of active masters.
|
Package reconcilers provides objects for managing the list of active masters. |
Package storageversionhashdata is for test only.
|
Package storageversionhashdata is for test only. |