v2

package
v0.0.0-...-686bfca Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 18, 2024 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Overview

  • Copyright (c) 2023 Baidu, Inc. All Rights Reserved. *
  • Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
  • except in compliance with the License. You may obtain a copy of the License at *
  • http://www.apache.org/licenses/LICENSE-2.0 *
  • Unless required by applicable law or agreed to in writing, software distributed under the
  • License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
  • either express or implied. See the License for the specific language governing permissions
  • and limitations under the License. *

Package v2 is the v2 version of the API. +groupName=cce.baidubce.com

Index

Constants

View Source
const (
	BindwidthModeEDT  = "edt"
	BindwidthModeTC   = "tc"
	BindwidthModeNone = ""
)
View Source
const (
	// errors for eni
	ErrorCodeENIIPCapacityExceed = "ENIIPCapacityExceed"
	ErrorCodeENISubnetNoMoreIP   = "SubnetNoMoreIP"
	ErrorCodeWaitNewENIInuse     = "WaitCreateMoreENI"
	ErrorCodeENICapacityExceed   = "ENICapacityExceed"
	ErrorCodeIPPoolExhausted     = "IPPoolExhausted"
	ErrorCodeNoMoreIP            = "NoMoreIP"
	ErrorCodeNoAvailableSubnet   = "NoAvailableSubnet"

	// errors for open api
	ErrorCodeOpenAPIError = "OpenAPIError"
)
View Source
const (
	// CustomResourceDefinitionGroup is the name of the third party resource group
	CustomResourceDefinitionGroup = k8sconst.CustomResourceDefinitionGroup

	// CustomResourceDefinitionVersion is the current version of the resource
	CustomResourceDefinitionVersion = "v2"

	// CustomResourceDefinitionSchemaVersion is semver-conformant version of CRD schema
	// Used to determine if CRD needs to be updated in cluster
	//
	// Maintainers: Run ./Documentation/check-crd-compat-table.sh for each release
	// Developers: Bump patch for each change in the CRD schema.
	CustomResourceDefinitionSchemaVersion = "1.25.4"

	// CustomResourceDefinitionSchemaVersionKey is key to label which holds the CRD schema version
	CustomResourceDefinitionSchemaVersionKey = "cce.baidubce.com.k8s.crd.schema.version"

	// CESingularName is the singular name of CCE Endpoint
	CEPSingularName = "cceendpoint"

	// CEPluralName is the plural name of CCE Endpoint
	CEPPluralName = "cceendpoints"

	// CEKindDefinition is the kind name for CCE Endpoint
	CEPKindDefinition = "CCEEndpoint"

	// CEPName is the full name of CCE Endpoint
	CEPName = CEPPluralName + "." + CustomResourceDefinitionGroup

	// NRSSingularName is the singular name of CCE Node
	NRSSingularName = "netresourceset"

	// NRSPluralName is the plural name of CCE Node
	NRSPluralName = "netresourcesets"

	// NRSKindDefinition is the kind name for CCE Node
	NRSKindDefinition = "NetResourceSet"

	// NRSName is the full name of CCE Node
	NRSName = NRSPluralName + "." + CustomResourceDefinitionGroup

	// ENISingularName is the singular name of ENI
	ENISingularName = "eni"

	// CNPluralName is the plural name of CCE Node
	ENIPluralName = "enis"

	// ENIKindDefinition is the kind name for CCE Node
	ENIKindDefinition = "ENI"

	// ENIName is the full name of CCE Node
	ENIName = ENIPluralName + "." + CustomResourceDefinitionGroup
)
View Source
const (
	// DefaultPodIPTTLSeconds If the fixed IP is stuck for a long time when the pod fails, IP recycling will be triggered
	DefaultPodIPTTLSeconds int64 = 7 * 24 * 3600
)

ReleaseStrategy

Variables

View Source
var (
	EgressPriorityGuaranteed EgressPriority = 1
	EgressPriorityBestEffort EgressPriority = 2
	EgressPriorityBurstable  EgressPriority = 3

	EgressDSCPGuaranteed EgressDSCP = 17
	EgressDSCPBurstable  EgressDSCP = 1
	EgressDSCPBestEffort EgressDSCP = 9
)
View Source
var (
	// SchemeBuilder is needed by DeepCopy generator.
	SchemeBuilder runtime.SchemeBuilder

	// AddToScheme adds all types of this clientset into the given scheme.
	// This allows composition of clientsets, like in:
	//
	//   import (
	//     "k8s.io/client-go/kubernetes"
	//     clientsetscheme "k8s.io/client-go/kubernetes/scheme"
	//     aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme"
	//   )
	//
	//   kclientset, _ := kubernetes.NewForConfig(c)
	//   aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme)
	AddToScheme = localSchemeBuilder.AddToScheme
)
View Source
var (
	// DefaultReuseIPTTL default timeout for reusing IP addresses.
	// If this time is not set, the default value is 7 days
	DefaultReuseIPTTL = &metav1.Duration{Duration: time.Hour * 24 * 7}
)

SchemeGroupVersion is group version used to register these objects

Functions

func FiltePrimaryAddress

func FiltePrimaryAddress(IPs []*models.PrivateIP) []*models.PrivateIP

func GetPrimaryIPs

func GetPrimaryIPs(ips []*models.PrivateIP) *models.PrivateIP

GetPrimaryIP get the primary IP of ENI from the IP list

func Resource

func Resource(resource string) schema.GroupResource

Resource takes an unqualified resource and returns a Group qualified GroupResource

Types

type AddressPair

type AddressPair struct {
	// Family is the kind of address. E.g. "4" or "6".
	Family    IPFamily `json:"family"`
	IP        string   `json:"ip,omitempty"`
	Interface string   `json:"interface,omitempty"`
	VPCID     string   `json:"vpcID,omitempty"`
	Subnet    string   `json:"subnet,omitempty"`
	// CIDRs is a list of all CIDRs to which the IP has direct access to.
	// This is primarily useful if the IP has been allocated out of a VPC
	// subnet range and the VPC provides routing to a set of CIDRs in which
	// the IP is routable.
	CIDRs   []string `json:"cidr,omitempty"`
	Gateway string   `json:"gateway,omitempty"`
}

AddressPair is is a par of IPv4 and/or IPv6 address.

func (*AddressPair) DeepCopy

func (in *AddressPair) DeepCopy() *AddressPair

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddressPair.

func (*AddressPair) DeepCopyInto

func (in *AddressPair) DeepCopyInto(out *AddressPair)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AddressPairList

type AddressPairList []*AddressPair

AddressPairList is a list of address pairs.

func (AddressPairList) DeepCopy

func (in AddressPairList) DeepCopy() AddressPairList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddressPairList.

func (AddressPairList) DeepCopyInto

func (in AddressPairList) DeepCopyInto(out *AddressPairList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (AddressPairList) ToIPsString

func (list AddressPairList) ToIPsString() string

type BindwidthMode

type BindwidthMode string

type BindwidthOption

type BindwidthOption struct {
	Mode    BindwidthMode `json:"mode,omitempty"`
	Ingress int64         `json:"ingress,omitempty"`
	Egress  int64         `json:"egress,omitempty"`
}

BindwidthOption is the option of bindwidth

func (*BindwidthOption) DeepCopy

func (in *BindwidthOption) DeepCopy() *BindwidthOption

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BindwidthOption.

func (*BindwidthOption) DeepCopyInto

func (in *BindwidthOption) DeepCopyInto(out *BindwidthOption)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*BindwidthOption) IsValid

func (opt *BindwidthOption) IsValid() bool

type CCEENIStatus

type CCEENIStatus string
const (
	ENIStatusNone        CCEENIStatus = ""
	ENIStatusPending     CCEENIStatus = "Pending"
	ENIStatusReadyOnNode CCEENIStatus = "ReadyOnNode"
	ENIStatusUsingInPod  CCEENIStatus = "UsingInPod"
)

cce 中 ENI 状态: * Pending: 创建 crd 之后的初始状态 * Created: 向 VPC 发起创建 ENI 请求成功之后 * ReadyInVPC: attach 成功,VPC 中进入 inuse 状态 * ReadyOnNode: ReadyInVPC 之后单机对 ENI check ok * UsingInPod: ENI 被 pod 独占使用中 * DeletedInVPC: ENI 被从 VPC 中强删后的最终状态 * * 独占 ENI 状态机流转: * * 创建请求成功(ipam写) attach后进入inuse状态(ipam写) * Pending ----------------------> Created ---------------------------> ReadyInVPC * ^ | * VPC中强制detach后(ipam写) | |单机check ok(agent写) * | | * --------------------------------- | * | | | * VPC中强删后(ipam写) | pod创建后(agent写) | v * DeletedInVPC <--------------------- UsingInPod <-------------------- ReadyOnNode -- * | | ^ | * | | | | * | | pod删除后(agent写) | | * | ---------------------------------- | * | | * -------------------------------------------------------

func (CCEENIStatus) IsReadyOnNode

func (s CCEENIStatus) IsReadyOnNode() bool

type CCEEndpoint

type CCEEndpoint struct {
	// +deepequal-gen=false
	metav1.TypeMeta `json:",inline"`
	// +deepequal-gen=false
	metav1.ObjectMeta `json:"metadata"`

	Spec EndpointSpec `json:"spec"`
	// +kubebuilder:validation:Optional
	Status EndpointStatus `json:"status"`
}

CCEEndpoint is the status of pod

func (*CCEEndpoint) AsObjectReference

func (ep *CCEEndpoint) AsObjectReference() *ObjectReference

func (*CCEEndpoint) DeepCopy

func (in *CCEEndpoint) DeepCopy() *CCEEndpoint

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CCEEndpoint.

func (*CCEEndpoint) DeepCopyInto

func (in *CCEEndpoint) DeepCopyInto(out *CCEEndpoint)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*CCEEndpoint) DeepCopyObject

func (in *CCEEndpoint) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type CCEEndpointList

type CCEEndpointList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`

	// Items is a list of CCEEndpoint
	Items []CCEEndpoint `json:"items"`
}

CCEEndpointList is a list of CCEEndpoint objects.

func (*CCEEndpointList) DeepCopy

func (in *CCEEndpointList) DeepCopy() *CCEEndpointList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CCEEndpointList.

func (*CCEEndpointList) DeepCopyInto

func (in *CCEEndpointList) DeepCopyInto(out *CCEEndpointList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*CCEEndpointList) DeepCopyObject

func (in *CCEEndpointList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type CodeError

type CodeError struct {
	Code string `json:"code,omitempty"`
	Msg  string `json:"msg,omitempty"`
}

func NewCodeError

func NewCodeError(code, msg string) *CodeError

func (*CodeError) DeepCopy

func (in *CodeError) DeepCopy() *CodeError

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CodeError.

func (*CodeError) DeepCopyInto

func (in *CodeError) DeepCopyInto(out *CodeError)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*CodeError) Error

func (e *CodeError) Error() string

type CodeErrorList

type CodeErrorList []*CodeError

ErrorList holds a set of Errors. It is plausible that we might one day have non-field errors in this same umbrella package, but for now we don't, so we can keep it simple and leave ErrorList here.

func (CodeErrorList) DeepCopy

func (in CodeErrorList) DeepCopy() CodeErrorList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CodeErrorList.

func (CodeErrorList) DeepCopyInto

func (in CodeErrorList) DeepCopyInto(out *CodeErrorList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (CodeErrorList) Filter

func (list CodeErrorList) Filter(fns ...utilerrors.Matcher) CodeErrorList

Filter removes items from the ErrorList that match the provided fns.

func (CodeErrorList) ToAggregate

func (list CodeErrorList) ToAggregate() utilerrors.Aggregate

ToAggregate converts the ErrorList into an errors.Aggregate.

type ControllerList

type ControllerList []ControllerStatus

ControllerList is a list of ControllerStatus.

func (ControllerList) DeepCopy

func (in ControllerList) DeepCopy() ControllerList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControllerList.

func (ControllerList) DeepCopyInto

func (in ControllerList) DeepCopyInto(out *ControllerList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (ControllerList) Sort

func (c ControllerList) Sort()

Sort sorts the ControllerList by controller name

type ControllerStatus

type ControllerStatus struct {
	// Name is the name of the controller
	Name string `json:"name,omitempty"`

	// Configuration is the controller configuration
	Configuration *models.ControllerStatusConfiguration `json:"configuration,omitempty"`

	// Status is the status of the controller
	Status ControllerStatusStatus `json:"status,omitempty"`

	// UUID is the UUID of the controller
	UUID string `json:"uuid,omitempty"`
}

ControllerStatus is the status of a failing controller.

func (*ControllerStatus) DeepCopy

func (in *ControllerStatus) DeepCopy() *ControllerStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControllerStatus.

func (*ControllerStatus) DeepCopyInto

func (in *ControllerStatus) DeepCopyInto(out *ControllerStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ControllerStatusStatus

type ControllerStatusStatus struct {
	ConsecutiveFailureCount int64  `json:"consecutive-failure-count,omitempty"`
	FailureCount            int64  `json:"failure-count,omitempty"`
	LastFailureMsg          string `json:"last-failure-msg,omitempty"`
	LastFailureTimestamp    string `json:"last-failure-timestamp,omitempty"`
	LastSuccessTimestamp    string `json:"last-success-timestamp,omitempty"`
	SuccessCount            int64  `json:"success-count,omitempty"`
}

ControllerStatusStatus is the detailed status section of a controller.

func (*ControllerStatusStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControllerStatusStatus.

func (*ControllerStatusStatus) DeepCopyInto

func (in *ControllerStatusStatus) DeepCopyInto(out *ControllerStatusStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CustomAllocation

type CustomAllocation struct {
	// +kubebuilder:default:=4
	// Family of IP Address. 4 or 6
	Family IPFamily `json:"family,omitempty"`
	// Range User defined IP address range. Note that this range must be smaller than the subnet range
	// Note that the definitions of multiple ranges cannot be duplicate
	Range []CustomIPRange `json:"range,omitempty"`
}

CustomAllocation User defined IP address management policy

func (*CustomAllocation) DeepCopy

func (in *CustomAllocation) DeepCopy() *CustomAllocation

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomAllocation.

func (*CustomAllocation) DeepCopyInto

func (in *CustomAllocation) DeepCopyInto(out *CustomAllocation)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CustomAllocationList

type CustomAllocationList []CustomAllocation

func (CustomAllocationList) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomAllocationList.

func (CustomAllocationList) DeepCopyInto

func (in CustomAllocationList) DeepCopyInto(out *CustomAllocationList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CustomIPRange

type CustomIPRange struct {
	Start string `json:"start"`
	// End end address must be greater than or equal to the start address
	End string `json:"end"`
}

CustomIPRange User defined IP address range. Note that this range must be smaller than the subnet range

func (*CustomIPRange) DeepCopy

func (in *CustomIPRange) DeepCopy() *CustomIPRange

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomIPRange.

func (*CustomIPRange) DeepCopyInto

func (in *CustomIPRange) DeepCopyInto(out *CustomIPRange)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DirectIPAllocation

type DirectIPAllocation struct {
	// +kubebuilder:default:=Elastic
	// this filed is only valid then the pstsName is empty
	Type IPAllocType `json:"type,omitempty"`

	// +kubebuilder:default:=TTL
	// IP address recycling policy
	// TTL: represents the default dynamic IP address recycling policy,default.
	// Never: this policy can only be used in fixed IP scenarios
	// this filed is only valid when the pstsName is empty
	ReleaseStrategy ReleaseStrategy `json:"releaseStrategy,omitempty"`

	// TTLSecondsAfterFinished is the TTL duration after this pod has been deleted when using fixed IP mode.
	// This field is only valid in the Fixed mode and the ReleaseStrategy is TTL
	// default is 7d
	// this filed is only valid when the pstsName is empty
	TTLSecondsAfterDeleted *int64 `json:"ttlSecondsAfterDeleted,omitempty"`
}

DirectIPAllocation is the addressing information of an endpoint.

func (*DirectIPAllocation) DeepCopy

func (in *DirectIPAllocation) DeepCopy() *DirectIPAllocation

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DirectIPAllocation.

func (*DirectIPAllocation) DeepCopyInto

func (in *DirectIPAllocation) DeepCopyInto(out *DirectIPAllocation)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ENI

type ENI struct {
	// +deepequal-gen=false
	metav1.TypeMeta `json:",inline"`
	// +deepequal-gen=false
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec ENISpec `json:"spec,omitempty"`
	// +kubebuilder:validation:Optional
	Status ENIStatus `json:"status,omitempty"`
}

+genclient +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +deepequal-gen=false +genclient:nonNamespaced +kubebuilder:resource:categories={cce},singular="eni",path="enis",scope="Cluster" +kubebuilder:storageversion +kubebuilder:subresource:status

This columns will be printed by exec `kubectl get enis` +kubebuilder:printcolumn:JSONPath=".spec.nodeName",description="eni attached to node",name="Node",type=string +kubebuilder:printcolumn:JSONPath=".spec.useMode",description="mode of eni",name="Mode",type=string +kubebuilder:printcolumn:JSONPath=".status.CCEStatus",description="status of eni",name="CStatus",type=string +kubebuilder:printcolumn:JSONPath=".status.VPCStatus",description="eni status of vpc",name="VStatus",type=string +kubebuilder:printcolumn:JSONPath=".status.interfaceIndex",description="interface number on node",name="INumber",type=integer

func (*ENI) DeepCopy

func (in *ENI) DeepCopy() *ENI

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ENI.

func (*ENI) DeepCopyInto

func (in *ENI) DeepCopyInto(out *ENI)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ENI) DeepCopyObject

func (in *ENI) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ENIList

type ENIList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`

	Items []ENI `json:"items"`
}

+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +k8s:openapi-gen=false +deepequal-gen=false

func (*ENIList) DeepCopy

func (in *ENIList) DeepCopy() *ENIList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ENIList.

func (*ENIList) DeepCopyInto

func (in *ENIList) DeepCopyInto(out *ENIList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ENIList) DeepCopyObject

func (in *ENIList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ENISpec

type ENISpec struct {
	models.ENI `json:",inline"`

	// ENI 要绑定的节点名
	NodeName string `json:"nodeName"`

	// By default, the secondary IP mode is ENI, and pod IP is
	// the secondary IP of ENI The use scenario of this mode
	// is to use the virtual network device via the veth
	// pair or IPVLAN
	UseMode ENIUseMode `json:"useMode"`

	// RouteTableOffset route policy offset, default 127
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:default:=127
	RouteTableOffset int `json:"routeTableOffset"`

	// InstallSourceBasedRouting install source based routing, default false
	InstallSourceBasedRouting bool `json:"installSourceBasedRouting,omitempty"`

	// VPCVersion vpc version, default 0
	// data version of vpc, used to determine whether the object needs to be updated
	VPCVersion int64 `json:"vpcVersion,omitempty"`

	// Type eni type, default bcc
	// +kubebuilder:default:=bcc
	Type ENIType `json:"type,omitempty"`
}

func (*ENISpec) DeepCopy

func (in *ENISpec) DeepCopy() *ENISpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ENISpec.

func (*ENISpec) DeepCopyInto

func (in *ENISpec) DeepCopyInto(out *ENISpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ENIStatus

type ENIStatus struct {
	// GatewayIP is the interface's subnet's default route
	//
	// +optional
	GatewayIPv4 string `json:"gatewayIPv4,omitempty"`
	GatewayIPv6 string `json:"gatewayIPv6,omitempty"`

	// InterfaceIndex is the interface index, it used in combination with
	// FirstInterfaceIndex
	//
	// +optional
	InterfaceIndex int `json:"interfaceIndex,omitempty"`

	// InterfaceName is the interface name, it is generated by the agent
	//
	// +optional
	InterfaceName string `json:"interfaceName,omitempty"`

	// Number is the ENI index, it is generated by the agent
	//
	// +optional
	ENIIndex int `json:"index,omitempty"`

	// Endpoint of eni associated In Primary use mode, Pod will directly use the
	// primary IP of ENI, so it needs to move the ENI device directly to the
	// network namespace of Pod.
	// In order to avoid possible failures during the creation of Pod, we need
	// to record the endpoint currently associated with ENI to further find
	// ENI devices
	EndpointReference *ObjectReference `json:"endpointReference,omitempty"`

	// +kubebuilder:default:=Pending
	CCEStatus CCEENIStatus `json:"CCEStatus"`
	// +kubebuilder:validation:MaxItems=20
	CCEStatusChangeLog []ENIStatusChange `json:"CCEStatusChangeLog,omitempty"`
	// +kubebuilder:default:=none
	VPCStatus VPCENIStatus `json:"VPCStatus"`
	// +kubebuilder:validation:MaxItems=20
	VPCStatusChangeLog []ENIStatusChange `json:"VPCStatusChangeLog,omitempty"`

	// VPCVersion vpc version, default 0
	// data version of vpc, used to determine whether the object needs to be updated
	VPCVersion int64 `json:"vpcVersion,omitempty"`
}

func (*ENIStatus) AppendCCEENIStatus

func (s *ENIStatus) AppendCCEENIStatus(status CCEENIStatus)

func (*ENIStatus) AppendCCEStatus

func (s *ENIStatus) AppendCCEStatus(cceStatus CCEENIStatus)

func (*ENIStatus) AppendVPCStatus

func (s *ENIStatus) AppendVPCStatus(vpcStatus VPCENIStatus)

func (*ENIStatus) DeepCopy

func (in *ENIStatus) DeepCopy() *ENIStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ENIStatus.

func (*ENIStatus) DeepCopyInto

func (in *ENIStatus) DeepCopyInto(out *ENIStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ENIStatusChange

type ENIStatusChange struct {
	StatusChange `json:",inline"`

	// state
	CCEENIStatus CCEENIStatus `json:"CCEStatus,omitempty"`
	VPCStatus    VPCENIStatus `json:"VPCStatus,omitempty"`
}

ENIStatusChange history of ENIStatus. This is used to track changes

func (*ENIStatusChange) DeepCopy

func (in *ENIStatusChange) DeepCopy() *ENIStatusChange

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ENIStatusChange.

func (*ENIStatusChange) DeepCopyInto

func (in *ENIStatusChange) DeepCopyInto(out *ENIStatusChange)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ENIType

type ENIType string
const (
	ENIDefaultBCC ENIType = ""
	ENIForBCC     ENIType = "bcc"
	ENIForBBC     ENIType = "bbc"
	ENIForEBC     ENIType = "ebc"
)

type ENIUseMode

type ENIUseMode string
const (
	// ENIUseModeSecondaryIP Pod IP is the secondary IP of ENI
	ENIUseModeSecondaryIP ENIUseMode = "Secondary"

	// ENIUseModePrimaryIP Pod IP is the primamry IP of ENI
	ENIUseModePrimaryIP ENIUseMode = "Primary"

	// ENIUseModePrimaryWithSecondaryIP Pod IP is the primary interface with secondary IP
	// this mode is only used for ebc
	ENIUseModePrimaryWithSecondaryIP ENIUseMode = "PrimaryWithSecondaryIP"
)

type EgressDSCP

type EgressDSCP uint32

type EgressPriority

type EgressPriority uint32

type EgressPriorityOpt

type EgressPriorityOpt struct {
	Bands    EgressPriority `json:"bands,omitempty"`
	DSCP     EgressDSCP     `json:"dscp,omitempty"`
	Priority string         `json:"priority,omitempty"`
}

func NewEngressPriorityOpt

func NewEngressPriorityOpt(priority string) *EgressPriorityOpt

func (*EgressPriorityOpt) DeepCopy

func (in *EgressPriorityOpt) DeepCopy() *EgressPriorityOpt

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EgressPriorityOpt.

func (*EgressPriorityOpt) DeepCopyInto

func (in *EgressPriorityOpt) DeepCopyInto(out *EgressPriorityOpt)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type EncryptionSpec

type EncryptionSpec struct {
	// Key is the index to the key to use for encryption or 0 if encryption is
	// disabled.
	//
	// +kubebuilder:validation:Optional
	Key int `json:"key,omitempty"`
}

EncryptionSpec defines the encryption relevant configuration of a node.

func (*EncryptionSpec) DeepCopy

func (in *EncryptionSpec) DeepCopy() *EncryptionSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EncryptionSpec.

func (*EncryptionSpec) DeepCopyInto

func (in *EncryptionSpec) DeepCopyInto(out *EncryptionSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type EndpointNetworkSpec

type EndpointNetworkSpec struct {
	IPAllocation   *IPAllocation      `json:"ipAllocation,omitempty"`
	Bindwidth      *BindwidthOption   `json:"bindwidth,omitempty"`
	EgressPriority *EgressPriorityOpt `json:"egressPriority,omitempty"`
}

EndpointNetworkSpec Network config for CCE Endpoint

func (*EndpointNetworkSpec) DeepCopy

func (in *EndpointNetworkSpec) DeepCopy() *EndpointNetworkSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EndpointNetworkSpec.

func (*EndpointNetworkSpec) DeepCopyInto

func (in *EndpointNetworkSpec) DeepCopyInto(out *EndpointNetworkSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type EndpointNetworking

type EndpointNetworking struct {
	// IP4/6 addresses assigned to this Endpoint
	Addressing AddressPairList `json:"addressing"`

	// NodeIP is the IP of the node the endpoint is running on. The IP must
	// be reachable between nodes.
	NodeIP string `json:"node,omitempty"`

	// IPs is the list of IP addresses assigned to this Endpoint
	IPs string `json:"ips,omitempty"`
}

EndpointNetworking is the addressing information of an endpoint.

func (*EndpointNetworking) DeepCopy

func (in *EndpointNetworking) DeepCopy() *EndpointNetworking

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EndpointNetworking.

func (*EndpointNetworking) DeepCopyInto

func (in *EndpointNetworking) DeepCopyInto(out *EndpointNetworking)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type EndpointSpec

type EndpointSpec struct {
	// ExternalIdentifiers is a set of identifiers to identify the endpoint
	// apart from the pod name. This includes container runtime IDs.
	ExternalIdentifiers *models.EndpointIdentifiers `json:"external-identifiers,omitempty"`
	Network             EndpointNetworkSpec         `json:"network,omitempty"`

	// ExtFeatureGates is a set of feature gates to enable or disable specific features like publicIP
	// every feature gate will have its own .status.extFeatureStatus
	ExtFeatureGates []string `json:"extFeatureGates,omitempty"`
}

func (*EndpointSpec) DeepCopy

func (in *EndpointSpec) DeepCopy() *EndpointSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EndpointSpec.

func (*EndpointSpec) DeepCopyInto

func (in *EndpointSpec) DeepCopyInto(out *EndpointSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type EndpointStatus

type EndpointStatus struct {
	// Controllers is the list of failing controllers for this endpoint.
	Controllers ControllerList `json:"controllers,omitempty"`

	// ExternalIdentifiers is a set of identifiers to identify the endpoint
	// apart from the pod name. This includes container runtime IDs.
	ExternalIdentifiers *models.EndpointIdentifiers `json:"external-identifiers,omitempty"`

	// Log is the list of the last few warning and error log entries
	Log []*models.EndpointStatusChange `json:"log,omitempty"`

	// Networking is the networking properties of the endpoint.
	//
	// +kubebuilder:validation:Optional
	Networking *EndpointNetworking `json:"networking,omitempty"`

	// A list of node selector requirements by node's labels.
	// +optional
	NodeSelectorRequirement []corev1.NodeSelectorRequirement `json:"matchExpressions,omitempty" protobuf:"bytes,1,rep,name=matchExpressions"`

	// State is the state of the endpoint.
	State string `json:"state,omitempty"`

	// ExtFeatureStatus is a set of feature status to indicate the status of specific features like publicIP
	ExtFeatureStatus map[string]*ExtFeatureStatus `json:"extFeatureStatus,omitempty"`
}

EndpointStatus is the status of a CCE endpoint.

func (*EndpointStatus) DeepCopy

func (in *EndpointStatus) DeepCopy() *EndpointStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EndpointStatus.

func (*EndpointStatus) DeepCopyInto

func (in *EndpointStatus) DeepCopyInto(out *EndpointStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExtFeatureStatus

type ExtFeatureStatus struct {
	// Ready the external feature is ready to use
	// External features are only considered ready when both `container-id“ and `ready` are in place
	// ready is only valid when the container-id is equals to `.spec.external-identifiers.container-id`
	Ready bool `json:"ready"`

	// ID assigned by container runtime
	ContainerID string `json:"container-id"`

	Msg string `json:"msg,omitempty"`

	// UpdateTime is the time when the status was last updated
	UpdateTime *metav1.Time `json:"updateTime,omitempty"`

	// Data is a set of key-value pairs that can be used to store additional information
	Data map[string]string `json:"data,omitempty"`
}

ExtFeatureStatus is the status of external feature

func (*ExtFeatureStatus) DeepCopy

func (in *ExtFeatureStatus) DeepCopy() *ExtFeatureStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExtFeatureStatus.

func (*ExtFeatureStatus) DeepCopyInto

func (in *ExtFeatureStatus) DeepCopyInto(out *ExtFeatureStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type HealthAddressingSpec

type HealthAddressingSpec struct {
	// IPv4 is the IPv4 address of the IPv4 health endpoint.
	//
	// +kubebuilder:validation:Optional
	IPv4 string `json:"ipv4,omitempty"`

	// IPv6 is the IPv6 address of the IPv4 health endpoint.
	//
	// +kubebuilder:validation:Optional
	IPv6 string `json:"ipv6,omitempty"`
}

HealthAddressingSpec is the addressing information required to do connectivity health checking.

func (*HealthAddressingSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HealthAddressingSpec.

func (*HealthAddressingSpec) DeepCopyInto

func (in *HealthAddressingSpec) DeepCopyInto(out *HealthAddressingSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type IPAllocType

type IPAllocType string

IPAllocType is the type for ip alloc strategy

const (
	IPAllocTypeNil        IPAllocType = ""
	IPAllocTypeElastic    IPAllocType = "Elastic"
	IPAllocTypeFixed      IPAllocType = "Fixed"
	IPAllocTypeENIPrimary IPAllocType = "PrimaryENI"
)

IPAllocType

type IPAllocation

type IPAllocation struct {
	DirectIPAllocation `json:",inline"`
	// PSTSName is the name of the PSTS
	// This field is only valid in the PSTS mode
	PSTSName string `json:"pstsName,omitempty"`

	// NodeIP is the IP of the node the endpoint is running on. The IP must
	// be reachable between nodes.
	NodeIP string `json:"node,omitempty"`

	UseIPV4 bool `json:"useIPV4,omitempty"`
	UseIPV6 bool `json:"useIPV6,omitempty"`
}

func (*IPAllocation) DeepCopy

func (in *IPAllocation) DeepCopy() *IPAllocation

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAllocation.

func (*IPAllocation) DeepCopyInto

func (in *IPAllocation) DeepCopyInto(out *IPAllocation)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type IPAllocationStrategy

type IPAllocationStrategy struct {
	// If the type is empty, the subnet type is used
	Type IPAllocType `json:"type,omitempty"`

	// IP address recycling policy
	// TTL: represents the default dynamic IP address recycling policy,default.
	// Never: this policy can only be used in fixed IP scenarios
	ReleaseStrategy ReleaseStrategy `json:"releaseStrategy,omitempty"`

	// ReuseIPAddress Whether to enable address reuse with the same pod name
	EnableReuseIPAddress bool `json:"enableReuseIPAddress,omitempty"`

	// TTL How long after the pod is deleted, the IP will be deleted, regardless of whether the IP reuse mode is enabled
	TTL *metav1.Duration `json:"ttl,omitempty"`
}

IPAllocationStrategy The policy determines whether to use fixed IP, Elastic IP or custom mode

func (*IPAllocationStrategy) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAllocationStrategy.

func (*IPAllocationStrategy) DeepCopyInto

func (in *IPAllocationStrategy) DeepCopyInto(out *IPAllocationStrategy)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type IPFamily

type IPFamily string
const (
	IPv4Family IPFamily = "4"
	IPv6Family IPFamily = "6"
)

func IPFamilyByIP

func IPFamilyByIP(ipstr string) IPFamily

type NetResourceSet

type NetResourceSet struct {
	// +deepequal-gen=false
	metav1.TypeMeta `json:",inline"`
	// +deepequal-gen=false
	metav1.ObjectMeta `json:"metadata"`

	// Spec defines the desired specification/configuration of the node.
	Spec NetResourceSpec `json:"spec"`

	// Status defines the realized specification/configuration and status
	// of the node.
	//
	// +kubebuilder:validation:Optional
	Status NetResourceStatus `json:"status,omitempty"`
}

+genclient +genclient:nonNamespaced +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +kubebuilder:resource:categories={cce},singular="netresourceset",path="netresourcesets",scope="Cluster",shortName={nrs,nr} +kubebuilder:storageversion +kubebuilder:subresource:status

+kubebuilder:printcolumn:JSONPath=".spec.instance-id",description="",name="ID",type=string +kubebuilder:printcolumn:JSONPath=".spec.eni.useMode",description="",name="MODE",type=string,priority=0 +kubebuilder:printcolumn:JSONPath=".spec.eni.instance-type",description="",name="TYPE",type=string,priority=0 NetResourceSet represents a node managed by CCE. It contains a specification to control various node specific configuration aspects and a status section to represent the status of the node.

func (*NetResourceSet) DeepCopy

func (in *NetResourceSet) DeepCopy() *NetResourceSet

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetResourceSet.

func (*NetResourceSet) DeepCopyInto

func (in *NetResourceSet) DeepCopyInto(out *NetResourceSet)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*NetResourceSet) DeepCopyObject

func (in *NetResourceSet) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*NetResourceSet) InstanceID

func (n *NetResourceSet) InstanceID() (instanceID string)

InstanceID returns the InstanceID of a NetResourceSet.

func (*NetResourceSet) SpeculationNoMoreIPReson

func (n *NetResourceSet) SpeculationNoMoreIPReson(crossSubnet bool) error

SpeculationNoMoreIPReson speculation on the reason for IP application failure in ENI mode when failed to allocate IP, it will return a list of error codes

type NetResourceSetList

type NetResourceSetList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`

	// Items is a list of NetResourceSet
	Items []NetResourceSet `json:"items"`
}

NetResourceSetList is a list of NetResourceSet objects.

func (*NetResourceSetList) DeepCopy

func (in *NetResourceSetList) DeepCopy() *NetResourceSetList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetResourceSetList.

func (*NetResourceSetList) DeepCopyInto

func (in *NetResourceSetList) DeepCopyInto(out *NetResourceSetList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*NetResourceSetList) DeepCopyObject

func (in *NetResourceSetList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type NetResourceSpec

type NetResourceSpec struct {
	// InstanceID is the identifier of the node. This is different from the
	// node name which is typically the FQDN of the node. The InstanceID
	// typically refers to the identifier used by the cloud provider or
	// some other means of identification.
	InstanceID string `json:"instance-id,omitempty"`

	// Addresses is the list of all node addresses.
	//
	// +kubebuilder:validation:Optional
	Addresses []NodeAddress `json:"addresses,omitempty"`

	// IPAM is the address management specification. This section can be
	// populated by a user or it can be automatically populated by an IPAM
	// operator.
	//
	// +kubebuilder:validation:Optional
	IPAM ipamTypes.IPAMSpec `json:"ipam,omitempty"`

	// ENI declaration expectation is used to describe what kind of ENI you want on a node
	// This field is applicable to eni mode
	//
	// +kubebuilder:validation:Optional
	ENI *api.ENISpec `json:"eni,omitempty"`
}

NetResourceSpec is the configuration specific to a node.

func (*NetResourceSpec) DeepCopy

func (in *NetResourceSpec) DeepCopy() *NetResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetResourceSpec.

func (*NetResourceSpec) DeepCopyInto

func (in *NetResourceSpec) DeepCopyInto(out *NetResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NetResourceStatus

type NetResourceStatus struct {

	// IPAM is the IPAM status of the node.
	//
	// +kubebuilder:validation:Optional
	IPAM ipamTypes.IPAMStatus `json:"ipam,omitempty"`

	// ENIs The details of the ENI that has been bound on the node, including all the
	// IP lists of the ENI
	//
	// +kubebuilder:validation:Optional
	ENIs map[string]SimpleENIStatus `json:"enis,omitempty"`

	// PrivateCloudSubnet is the baidu private cloud base specific status of the node.
	//
	// +kubebuilder:validation:Optional
	PrivateCloudSubnet *pcbapi.Subnet `json:"privateCloudSubnet,omitempty"`
}

NetResourceStatus is the status of a node.

func (*NetResourceStatus) DeepCopy

func (in *NetResourceStatus) DeepCopy() *NetResourceStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetResourceStatus.

func (*NetResourceStatus) DeepCopyInto

func (in *NetResourceStatus) DeepCopyInto(out *NetResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NodeAddress

type NodeAddress struct {
	// Type is the type of the node address
	Type addressing.AddressType `json:"type,omitempty"`

	// IP is an IP of a node
	IP string `json:"ip,omitempty"`
}

NodeAddress is a node address.

func (*NodeAddress) DeepCopy

func (in *NodeAddress) DeepCopy() *NodeAddress

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeAddress.

func (*NodeAddress) DeepCopyInto

func (in *NodeAddress) DeepCopyInto(out *NodeAddress)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ObjectReference

type ObjectReference struct {
	Namespace string `json:"namespace,omitempty"`
	Name      string `json:"name,omitempty"`
	UID       string `json:"uid,omitempty"`
}

func (*ObjectReference) DeepCopy

func (in *ObjectReference) DeepCopy() *ObjectReference

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectReference.

func (*ObjectReference) DeepCopyInto

func (in *ObjectReference) DeepCopyInto(out *ObjectReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PodSubnetTopologySpread

type PodSubnetTopologySpread struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   PodSubnetTopologySpreadSpec   `json:"spec,omitempty"`
	Status PodSubnetTopologySpreadStatus `json:"status,omitempty"`
}

PodSubnetTopologySpread describes how to distribute pods in the scenario of sub customized subnets

func (*PodSubnetTopologySpread) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodSubnetTopologySpread.

func (*PodSubnetTopologySpread) DeepCopyInto

func (in *PodSubnetTopologySpread) DeepCopyInto(out *PodSubnetTopologySpread)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*PodSubnetTopologySpread) DeepCopyObject

func (in *PodSubnetTopologySpread) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type PodSubnetTopologySpreadList

type PodSubnetTopologySpreadList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []PodSubnetTopologySpread `json:"items"`
}

PodSubnetTopologySpreadList contains a list of PodSubnetTopologySpread

func (*PodSubnetTopologySpreadList) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodSubnetTopologySpreadList.

func (*PodSubnetTopologySpreadList) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*PodSubnetTopologySpreadList) DeepCopyObject

func (in *PodSubnetTopologySpreadList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type PodSubnetTopologySpreadSpec

type PodSubnetTopologySpreadSpec struct {
	Name string `json:"name,omitempty"`

	// Subnets for the subnet used by the object, each subnet topology constraint
	// object must specify at least one available subnet.
	// The subnet must be the subnet ID of the same VPC as the current cluster.
	// The format is `sbn-*` for example, sbn-ccfud13pwcqf
	// If a dedicated subnet is used, the user should confirm that the subnet
	// is only used by the current CCE cluster
	Subnets map[string]CustomAllocationList `json:"subnets"`

	// Strategy IP allocate strategy, which is a global ip application strategy.
	// If the subnet also sets these fields, the subnet will override the global configuration
	// If no global policy is defined, the policy of the first subnet is the global policy by default
	Strategy *IPAllocationStrategy `json:"strategy,omitempty"`

	// A label query over pods that are managed by the daemon set.
	// Must match in order to be controlled.
	// It must match the pod template's labels.
	// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
	Selector *metav1.LabelSelector `json:"selector,omitempty"`

	// Priority describes which object the target pod should use when multiple
	// objects affect a pod at the same time. The higher the priority value,
	// the earlier the object is configured. When multiple objects have the same
	// priority value, only the configuration of the first object is taken.
	Priority int32 `json:"priority,omitempty"`

	// MaxSkew describes the degree to which pods may be unevenly distributed.
	// It's the maximum permitted difference between the number of matching pods in
	// any two topology domains of a given topology type.
	// For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
	// labelSelector spread as 1/1/0:
	// +-------+-------+-------+
	// | zone1 | zone2 | zone3 |
	// +-------+-------+-------+
	// |   P   |   P   |       |
	// +-------+-------+-------+
	// - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1;
	// scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2)
	// violate MaxSkew(1).
	// - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
	// It's a required field. Default value is 1 and 0 is not allowed.
	MaxSkew int32 `json:"maxSkew,omitempty"`

	// WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
	// the spread constraint.
	// - DoNotSchedule (default) tells the scheduler not to schedule it
	// - ScheduleAnyway tells the scheduler to still schedule it
	// It's considered as "Unsatisfiable" if and only if placing incoming pod on any
	// topology violates "MaxSkew".
	// For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
	// labelSelector spread as 3/1/1:
	// +-------+-------+-------+
	// | zone1 | zone2 | zone3 |
	// +-------+-------+-------+
	// | P P P |   P   |   P   |
	// +-------+-------+-------+
	// If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
	// to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
	// MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
	// won't make it *more* imbalanced.
	// It's a required field.
	WhenUnsatisfiable UnsatisfiableConstraintAction `json:"whenUnsatisfiable,omitempty"`
}

func (*PodSubnetTopologySpreadSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodSubnetTopologySpreadSpec.

func (*PodSubnetTopologySpreadSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PodSubnetTopologySpreadStatus

type PodSubnetTopologySpreadStatus struct {
	Name                    string                     `json:"name,omitempty"`
	SchedulableSubnetsNum   int32                      `json:"availableSubnetsNum,omitempty"`
	UnSchedulableSubnetsNum int32                      `json:"unavailableSubnetsNum,omitempty"`
	AvailableSubnets        map[string]SubnetPodStatus `json:"availableSubnets,omitempty"`
	// total number of pods match label selector
	PodMatchedCount int32 `json:"podMatchedCount,omitempty"`
	// Total pod expected to be affected
	PodAffectedCount   int32                      `json:"podAffectedCount,omitempty"`
	UnavailableSubnets map[string]SubnetPodStatus `json:"unavailableSubnets,omitempty"`
}

func (*PodSubnetTopologySpreadStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodSubnetTopologySpreadStatus.

func (*PodSubnetTopologySpreadStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReleaseStrategy

type ReleaseStrategy string

ReleaseStrategy is the type for ip release strategy

const (
	ReleaseStrategyTTL   ReleaseStrategy = "TTL"
	ReleaseStrategyNever ReleaseStrategy = "Never"
)

ReleaseStrategy

type SimpleENIStatus

type SimpleENIStatus struct {
	ID        string `json:"id"`
	VPCStatus string `json:"vpcStatus"`
	CCEStatus string `json:"cceStatus"`

	// AvailableIPNum how many more IPs can be applied for on eni
	// This field only considers the ip quota of eni
	AvailableIPNum int `json:"availableIPNum,omitempty"`

	// AllocatedIPNum Number of IPs assigned to eni
	AllocatedIPNum int `json:"allocatedIPNum,omitempty"`

	// AllocatedCrossSubnetIPNum number of IPs assigned to eni across subnet
	AllocatedCrossSubnetIPNum int `json:"allocatedCrossSubnetIPNum,omitempty"`

	// SubnetID the subnet id of eni primary ip
	SubnetID string `json:"subnetId,omitempty"`

	// IsMoreAvailableIPInSubnet Are there more available IPs in the subnet
	IsMoreAvailableIPInSubnet bool `json:"isMoreAvailableIPInSubnet,omitempty"`

	LastAllocatedIPError *StatusChange `json:"lastAllocatedIPError,omitempty"`
}

SimpleENIStatus is the simple status of a ENI.

func (*SimpleENIStatus) DeepCopy

func (in *SimpleENIStatus) DeepCopy() *SimpleENIStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SimpleENIStatus.

func (*SimpleENIStatus) DeepCopyInto

func (in *SimpleENIStatus) DeepCopyInto(out *SimpleENIStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type StatusChange

type StatusChange struct {

	// Code indicate type of status change
	// Enum: [ok failed]
	Code string `json:"code"`

	// Status message
	Message string `json:"message,omitempty"`

	Time metav1.Time `json:"time,omitempty"`
}

func NewErrorStatusChange

func NewErrorStatusChange(msg string) *StatusChange

func (*StatusChange) DeepCopy

func (in *StatusChange) DeepCopy() *StatusChange

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatusChange.

func (*StatusChange) DeepCopyInto

func (in *StatusChange) DeepCopyInto(out *StatusChange)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SubenetDetail

type SubenetDetail struct {
	AvailableIPNum   int    `json:"availableIPNum,omitempty"`
	Enable           bool   `json:"enable,omitempty"`
	HasNoMoreIP      bool   `json:"hasNoMoreIP,omitempty"`
	ID               string `json:"id,omitempty"`
	Name             string `json:"name,omitempty"`
	AvailabilityZone string `json:"availabilityZone,omitempty"`
	CIDR             string `json:"cidr,omitempty"`
	IPv6CIDR         string `json:"ipv6Cidr,omitempty"`
}

func (*SubenetDetail) DeepCopy

func (in *SubenetDetail) DeepCopy() *SubenetDetail

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubenetDetail.

func (*SubenetDetail) DeepCopyInto

func (in *SubenetDetail) DeepCopyInto(out *SubenetDetail)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SubnetPodStatus

type SubnetPodStatus struct {
	SubenetDetail `json:",inline"`
	// total number of pods under this subnet
	PodCount int32 `json:"podCount,omitempty"`
	// error message for subnets
	Message string `json:"message,omitempty"`

	// IP address allocation details under the subnet
	// KEY: ip address
	// VALUE: pod name
	// Only when the `PodSubnetTopologySpread.spec.enableIPAllocationStatus` spec value is true,
	// the IP address allocation information will be recorded
	IPAllocations map[string]string `json:"ipAllocations,omitempty"`
}

func (*SubnetPodStatus) DeepCopy

func (in *SubnetPodStatus) DeepCopy() *SubnetPodStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetPodStatus.

func (*SubnetPodStatus) DeepCopyInto

func (in *SubnetPodStatus) DeepCopyInto(out *SubnetPodStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type UnsatisfiableConstraintAction

type UnsatisfiableConstraintAction string
const (
	// DoNotSchedule instructs the scheduler not to schedule the pod
	// when constraints are not satisfied.
	DoNotSchedule UnsatisfiableConstraintAction = "DoNotSchedule"
	// ScheduleAnyway instructs the scheduler to schedule the pod
	// even if constraints are not satisfied.
	ScheduleAnyway UnsatisfiableConstraintAction = "ScheduleAnyway"
)

type VPCENIStatus

type VPCENIStatus string
const (
	// eni is not exist in vpc
	VPCENIStatusNone VPCENIStatus = ""

	// status provider by bce cloud
	VPCENIStatusAvailable VPCENIStatus = "available"
	VPCENIStatusAttaching VPCENIStatus = "attaching"
	VPCENIStatusInuse     VPCENIStatus = "inuse"
	VPCENIStatusDetaching VPCENIStatus = "detaching"
	VPCENIStatusDeleted   VPCENIStatus = "deleted"
)

vpc 中 ENI 共 4 种状态(https://cloud.baidu.com/doc/VPC/s/6kknfn5m8): * available:创建完成,未挂载 * attaching:挂载中 * inuse: 已挂载到单机,vpc 认为的可用状态 * detaching:卸载中

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL