xshell传不了文件输出0000如何解决
centos版本
1,因为没有工具下载即可
yum -y install lrzsz
k8s中metalLB文件内容
2.metalLB文件内容
cat metallb-native.yaml
apiVersion: v1
kind: Namespace
metadata:labels:pod-security.kubernetes.io/audit: privilegedpod-security.kubernetes.io/enforce: privilegedpod-security.kubernetes.io/warn: privilegedname: metallb-system
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:annotations:controller-gen.kubebuilder.io/version: v0.14.0name: bfdprofiles.metallb.io
spec:group: metallb.ionames:kind: BFDProfilelistKind: BFDProfileListplural: bfdprofilessingular: bfdprofilescope: Namespacedversions:- additionalPrinterColumns:- jsonPath: .spec.passiveModename: Passive Modetype: boolean- jsonPath: .spec.transmitIntervalname: Transmit Intervaltype: integer- jsonPath: .spec.receiveIntervalname: Receive Intervaltype: integer- jsonPath: .spec.detectMultipliername: Multipliertype: integername: v1beta1schema:openAPIV3Schema:description: |-BFDProfile represents the settings of the bfd session that can beoptionally associated with a BGP session.properties:apiVersion:description: |-APIVersion defines the versioned schema of this representation of an object.Servers should convert recognized schemas to the latest internal value, andmay reject unrecognized values.More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resourcestype: stringkind:description: |-Kind is a string value representing the REST resource this object represents.Servers may infer this from the endpoint the client submits requests to.Cannot be updated.In CamelCase.More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kindstype: stringmetadata:type: objectspec:description: BFDProfileSpec defines the desired state of BFDProfile.properties:detectMultiplier:description: |-Configures the detection multiplier to determinepacket loss. The remote transmission interval will be multipliedby this value to determine the connection loss detection timer.format: int32maximum: 255minimum: 2type: integerechoInterval:description: |-Configures the minimal echo receive transmissioninterval that this system is capable of handling in milliseconds.Defaults to 50msformat: int32maximum: 60000minimum: 10type: integerechoMode:description: |-Enables or disables the echo transmission mode.This mode is disabled by default, and not supported on multihops setups.type: booleanminimumTtl:description: |-For multi hop sessions only: configure the minimumexpected TTL for an incoming BFD control packet.format: int32maximum: 254minimum: 1type: integerpassiveMode:description: |-Mark session as passive: a passive session will notattempt to start the connection and will wait for control packetsfrom peer before it begins replying.type: booleanreceiveInterval:description: |-The minimum interval that this system is capable ofreceiving control packets in milliseconds.Defaults to 300ms.format: int32maximum: 60000minimum: 10type: integertransmitInterval:description: |-The minimum transmission interval (less jitter)that this system wants to use to send BFD control packets inmilliseconds. Defaults to 300msformat: int32maximum: 60000minimum: 10type: integertype: objectstatus:description: BFDProfileStatus defines the observed state of BFDProfile.type: objecttype: objectserved: truestorage: truesubresources:status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:annotations:controller-gen.kubebuilder.io/version: v0.14.0name: bgpadvertisements.metallb.io
spec:group: metallb.ionames:kind: BGPAdvertisementlistKind: BGPAdvertisementListplural: bgpadvertisementssingular: bgpadvertisementscope: Namespacedversions:- additionalPrinterColumns:- jsonPath: .spec.ipAddressPoolsname: IPAddressPoolstype: string- jsonPath: .spec.ipAddressPoolSelectorsname: IPAddressPool Selectorstype: string- jsonPath: .spec.peersname: Peerstype: string- jsonPath: .spec.nodeSelectorsname: Node Selectorspriority: 10type: stringname: v1beta1schema:openAPIV3Schema:description: |-BGPAdvertisement allows to advertise the IPs comingfrom the selected IPAddressPools via BGP, setting the parameters of theBGP Advertisement.properties:apiVersion:description: |-APIVersion defines the versioned schema of this representation of an object.Servers should convert recognized schemas to the latest internal value, andmay reject unrecognized values.More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resourcestype: stringkind:description: |-Kind is a string value representing the REST resource this object represents.Servers may infer this from the endpoint the client submits requests to.Cannot be updated.In CamelCase.More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kindstype: stringmetadata:type: objectspec:description: BGPAdvertisementSpec defines the desired state of BGPAdvertisement.properties:aggregationLength:default: 32description: The aggregation-length advertisement option lets you“roll up” the /32s into a larger prefix. Defaults to 32. Works forIPv4 addresses.format: int32minimum: 1type: integeraggregationLengthV6:default: 128description: The aggregation-length advertisement option lets you“roll up” the /128s into a larger prefix. Defaults to 128. Worksfor IPv6 addresses.format: int32type: integercommunities:description: |-The BGP communities to be associated with the announcement. Each item can be a standard community of theform 1234:1234, a large community of the form large:1234:1234:1234 or the name of an alias defined in theCommunity CRD.items:type: stringtype: arrayipAddressPoolSelectors:description: |-A selector for the IPAddressPools which would get advertised via this advertisement.If no IPAddressPool is selected by this or by the list, the advertisement is applied to all the IPAddressPools.items:description: |-A label selector is a label query over a set of resources. The result of matchLabels andmatchExpressions are ANDed. An empty label selector matches all objects. A nulllabel selector matches no objects.properties:matchExpressions:description: matchExpressions is a list of label selector requirements.The requirements are ANDed.items:description: |-A label selector requirement is a selector that contains values, a key, and an operator thatrelates the key and values.properties:key:description: key is the label key that the selector appliesto.type: stringoperator:description: |-operator represents a key's relationship to a set of values.Valid operators are In, NotIn, Exists and DoesNotExist.type: stringvalues:description: |-values is an array of string values. If the operator is In or NotIn,the values array must be non-empty. If the operator is Exists or DoesNotExist,the values array must be empty. This array is replaced during a strategicmerge patch.items:type: stringtype: arrayrequired:- key- operatortype: objecttype: arraymatchLabels:additionalProperties:type: stringdescription: |-matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabelsmap is equivalent to an element of matchExpressions, whose key field is "key", theoperator is "In", and the values array contains only "value". The requirements are ANDed.type: objecttype: objectx-kubernetes-map-type: atomictype: arrayipAddressPools:description: The list of IPAddressPools to advertise via this advertisement,selected by name.items:type: stringtype: arraylocalPref:description: |-The BGP LOCAL_PREF attribute which is used by BGP best path algorithm,Path with higher localpref is preferred over one with lower localpref.format: int32type: integernodeSelectors:description: NodeSelectors allows to limit the nodes to announce asnext hops for the LoadBalancer IP. When empty, all the nodes having areannounced as next hops.items:description: |-A label selector is a label query over a set of resources. The result of matchLabels andmatchExpressions are ANDed. An empty label selector matches all objects. A nulllabel selector matches no objects.properties:matchExpressions:description: matchExpressions is a list of label selector requirements.The requirements are ANDed.items:description: |-A label selector requirement is a selector that contains values, a key, and an operator thatrelates the key and values.properties:key:description: key is the label key that the selector appliesto.type: stringoperator:description: |-operator represents a key's relationship to a set of values.Valid operators are In, NotIn, Exists and DoesNotExist.type: stringvalues:description: |-values is an array of string values. If the operator is In or NotIn,the values array must be non-empty. If the operator is Exists or DoesNotExist,the values array must be empty. This array is replaced during a strategicmerge patch.items:type: stringtype: arrayrequired:- key- operatortype: objecttype: arraymatchLabels:additionalProperties:type: stringdescription: |-matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabelsmap is equivalent to an element of matchExpressions, whose key field is "key", theoperator is "In", and the values array contains only "value". The requirements are ANDed.type: objecttype: objectx-kubernetes-map-type: atomictype: arraypeers:description: |-Peers limits the bgppeer to advertise the ips of the selected pools to.When empty, the loadbalancer IP is announced to all the BGPPeers configured.items:type: stringtype: arraytype: objectstatus:description: BGPAdvertisementStatus defines the observed state of BGPAdvertisement.type: objecttype: objectserved: truestorage: truesubresources:status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:annotations:controller-gen.kubebuilder.io/version: v0.14.0name: bgppeers.metallb.io
spec:conversion:strategy: Webhookwebhook:clientConfig:caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGWlRDQ0EwMmdBd0lCQWdJVU5GRW1XcTM3MVpKdGkrMmlSQzk1WmpBV1MxZ3dEUVlKS29aSWh2Y05BUUVMDQpCUUF3UWpFTE1Ba0dBMVVFQmhNQ1dGZ3hGVEFUQmdOVkJBY01ERVJsWm1GMWJIUWdRMmwwZVRFY01Cb0dBMVVFDQpDZ3dUUkdWbVlYVnNkQ0JEYjIxd1lXNTVJRXgwWkRBZUZ3MHlNakEzTVRrd09UTXlNek5hRncweU1qQTRNVGd3DQpPVE15TXpOYU1FSXhDekFKQmdOVkJBWVRBbGhZTVJVd0V3WURWUVFIREF4RVpXWmhkV3gwSUVOcGRIa3hIREFhDQpCZ05WQkFvTUUwUmxabUYxYkhRZ1EyOXRjR0Z1ZVNCTWRHUXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDDQpEd0F3Z2dJS0FvSUNBUUNxVFpxMWZRcC9vYkdlenhES0o3OVB3Ny94azJwellualNzMlkzb1ZYSm5sRmM4YjVlDQpma2ZZQnY2bndscW1keW5PL2phWFBaQmRQSS82aFdOUDBkdVhadEtWU0NCUUpyZzEyOGNXb3F0MGNTN3pLb1VpDQpvcU1tQ0QvRXVBeFFNZjhRZDF2c1gvVllkZ0poVTZBRXJLZEpIaXpFOUJtUkNkTDBGMW1OVW55Rk82UnRtWFZUDQpidkxsTDVYeTc2R0FaQVBLOFB4aVlDa0NtbDdxN0VnTWNiOXlLWldCYmlxQ3VkTXE5TGJLNmdKNzF6YkZnSXV4DQo1L1pXK2JraTB2RlplWk9ZODUxb1psckFUNzJvMDI4NHNTWW9uN0pHZVZkY3NoUnh5R1VpSFpSTzdkaXZVTDVTDQpmM2JmSDFYbWY1ZDQzT0NWTWRuUUV2NWVaOG8zeWVLa3ZrbkZQUGVJMU9BbjdGbDlFRVNNR2dhOGFaSG1URSttDQpsLzlMSmdDYjBnQmtPT0M0WnV4bWh2aERKV1EzWnJCS3pMQlNUZXN0NWlLNVlwcXRWVVk2THRyRW9FelVTK1lsDQpwWndXY2VQWHlHeHM5ZURsR3lNVmQraW15Y3NTU1UvVno2Mmx6MnZCS21NTXBkYldDQWhud0RsRTVqU2dyMjRRDQp0eGNXLys2N3d5KzhuQlI3UXdqVTFITndVRjBzeERWdEwrZ1NHVERnSEVZSlhZelYvT05zMy94TkpoVFNPSkxNDQpoeXNVdyttaGdackdhbUdXcHVIVU1DUitvTWJzMTc1UkcrQjJnUFFHVytPTjJnUTRyOXN2b0ZBNHBBQm8xd1dLDQpRYjRhY3pmeVVscElBOVFoSmFsZEY3S3dPSHVlV3gwRUNrNXg0T2tvVDBvWVp0dzFiR0JjRGtaSmF3SURBUUFCDQpvMU13VVRBZEJnTlZIUTRFRmdRVW90UlNIUm9IWTEyRFZ4R0NCdEhpb1g2ZmVFQXdId1lEVlIwakJCZ3dGb0FVDQpvdFJTSFJvSFkxMkRWeEdDQnRIaW9YNmZlRUF3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCDQpBUXNGQUFPQ0FnRUFSbkpsWWRjMTFHd0VxWnh6RDF2R3BDR2pDN2VWTlQ3aVY1d3IybXlybHdPYi9aUWFEa0xYDQpvVStaOVVXT1VlSXJTdzUydDdmQUpvVVAwSm5iYkMveVIrU1lqUGhvUXNiVHduOTc2ZldBWTduM3FMOXhCd1Y0DQphek41OXNjeUp0dlhMeUtOL2N5ak1ReDRLajBIMFg0bWJ6bzVZNUtzWWtYVU0vOEFPdWZMcEd0S1NGVGgrSEFDDQpab1Q5YnZHS25adnNHd0tYZFF0Wnh0akhaUjVqK3U3ZGtQOTJBT051RFNabS8rWVV4b2tBK09JbzdSR3BwSHNXDQo1ZTdNY0FTVXRtb1FORXd6dVFoVkJaRWQ1OGtKYjUrV0VWbGNzanlXNnRTbzErZ25tTWNqR1BsMWgxR2hVbjV4DQpFY0lWRnBIWXM5YWo1NmpBSjk1MVQvZjhMaWxmTlVnanBLQ0c1bnl0SUt3emxhOHNtdGlPdm1UNEpYbXBwSkI2DQo4bmdHRVluVjUrUTYwWFJ2OEhSSGp1VG9CRHVhaERrVDA2R1JGODU1d09FR2V4bkZpMXZYWUxLVllWb1V2MXRKDQo4dVdUR1pwNllDSVJldlBqbzg5ZytWTlJSaVFYUThJd0dybXE5c0RoVTlqTjA0SjdVL1RvRDFpNHE3VnlsRUc5DQorV1VGNkNLaEdBeTJIaEhwVncyTGFoOS9lUzdZMUZ1YURrWmhPZG1laG1BOCtqdHNZamJadnR5Mm1SWlF0UUZzDQpUU1VUUjREbUR2bVVPRVRmeStpRHdzK2RkWXVNTnJGeVVYV2dkMnpBQU4ydVl1UHFGY2pRcFNPODFzVTJTU3R3DQoxVzAyeUtYOGJEYmZFdjBzbUh3UzliQnFlSGo5NEM1Mjg0YXpsdTBmaUdpTm1OUEM4ckJLRmhBPQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ==service:name: metallb-webhook-servicenamespace: metallb-systempath: /convertconversionReviewVersions:- v1beta1- v1beta2group: metallb.ionames:kind: BGPPeerlistKind: BGPPeerListplural: bgppeerssingular: bgppeerscope: Namespacedversions:- additionalPrinterColumns:- jsonPath: .spec.peerAddressname: Addresstype: string- jsonPath: .spec.peerASNname: ASNtype: string- jsonPath: .spec.bfdProfilename: BFD Profiletype: string- jsonPath: .spec.ebgpMultiHopname: Multi Hopstype: stringname: v1beta1schema:openAPIV3Schema:description: BGPPeer is the Schema for the peers API.properties:apiVersion:description: |-APIVersion defines the versioned schema of this representation of an object.Servers should convert recognized schemas to the latest internal value, andmay reject unrecognized values.More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resourcestype: stringkind:description: |-Kind is a string value representing the REST resource this object represents.Servers may infer this from the endpoint the client submits requests to.Cannot be updated.In CamelCase.More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kindstype: stringmetadata:type: objectspec:description: BGPPeerSpec defines the desired state of Peer.properties:bfdProfile:type: stringebgpMultiHop:description: EBGP peer is multi-hops awaytype: booleanholdTime:description: Requested BGP hold time, per RFC4271.type: stringkeepaliveTime:description: Requested BGP keepalive time, per RFC4271.type: stringmyASN:description: AS number to use for the local end of the session.format: int32maximum: 4294967295minimum: 0type: integernodeSelectors:description: |-Only connect to this peer on nodes that match one of theseselectors.items:properties:matchExpressions:items:properties:key:type: stringoperator:type: stringvalues:items:type: stringminItems: 1type: arrayrequired:- key- operator- valuestype: objecttype: arraymatchLabels:additionalProperties:type: stringtype: objecttype: objecttype: arraypassword:description: Authentication password for routers enforcing TCP MD5authenticated sessionstype: stringpeerASN:description: AS number to expect from the remote end of the session.format: int32maximum: 4294967295minimum: 0type: integerpeerAddress:description: Address to dial when establishing the session.type: stringpeerPort:description: Port to dial when establishing the session.maximum: 16384minimum: 0type: integerrouterID:description: BGP router ID to advertise to the peertype: stringsourceAddress:description: Source address to use when establishing the session.type: stringrequired:- myASN- peerASN- peerAddresstype: objectstatus:description: BGPPeerStatus defines the observed state of Peer.type: objecttype: objectserved: truestorage: falsesubresources:status: {}- additionalPrinterColumns:- jsonPath: .spec.peerAddressname: Addresstype: string- jsonPath: .spec.peerASNname: ASNtype: string- jsonPath: .spec.bfdProfilename: BFD Profiletype: string- jsonPath: .spec.ebgpMultiHopname: Multi Hopstype: stringname: v1beta2schema:openAPIV3Schema:description: BGPPeer is the Schema for the peers API.properties:apiVersion:description: |-APIVersion defines the versioned schema of this representation of an object.Servers should convert recognized schemas to the latest internal value, andmay reject unrecognized values.More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resourcestype: stringkind:description: |-Kind is a string value representing the REST resource this object represents.Servers may infer this from the endpoint the client submits requests to.Cannot be updated.In CamelCase.More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kindstype: stringmetadata:type: objectspec:description: BGPPeerSpec defines the desired state of Peer.properties:bfdProfile:description: The name of the BFD Profile to be used for the BFD sessionassociated to the BGP session. If not set, the BFD session won'tbe set up.type: stringconnectTime:description: Requested BGP connect time, controls how long BGP waitsbetween connection attempts to a neighbor.type: stringx-kubernetes-validations:- message: connect time should be between 1 seconds to 65535rule: duration(self).getSeconds() >= 1 && duration(self).getSeconds()<= 65535- message: connect time should contain a whole number of secondsrule: duration(self).getMilliseconds() % 1000 == 0disableMP:default: falsedescription: To set if we want to disable MP BGP that will separateIPv4 and IPv6 route exchanges into distinct BGP sessions.type: booleanebgpMultiHop:description: To set if the BGPPeer is multi-hops away. Needed forFRR mode only.type: booleanholdTime:description: Requested BGP hold time, per RFC4271.type: stringkeepaliveTime:description: Requested BGP keepalive time, per RFC4271.type: stringmyASN:description: AS number to use for the local end of the session.format: int32maximum: 4294967295minimum: 0type: integernodeSelectors:description: |-Only connect to this peer on nodes that match one of theseselectors.items:description: |-A label selector is a label query over a set of resources. The result of matchLabels andmatchExpressions are ANDed. An empty label selector matches all objects. A nulllabel selector matches no objects.properties:matchExpressions:description: matchExpressions is a list of label selector requirements.The requirements are ANDed.items:description: |-A label selector requirement is a selector that contains values, a key, and an operator thatrelates the key and values.properties:key:description: key is the label key that the selector appliesto.type: stringoperator:description: |-operator represents a key's relationship to a set of values.Valid operators are In, NotIn, Exists and DoesNotExist.type: stringvalues:description: |-values is an array of string values. If the operator is In or NotIn,the values array must be non-empty. If the operator is Exists or DoesNotExist,the values array must be empty. This array is replaced during a strategicmerge patch.items:type: stringtype: arrayrequired:- key- operatortype: objecttype: arraymatchLabels:additionalProperties:type: stringdescription: |-matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabelsmap is equivalent to an element of matchExpressions, whose key field is "key", theoperator is "In", and the values array contains only "value". The requirements are ANDed.type: objecttype: objectx-kubernetes-map-type: atomictype: arraypassword:description: Authentication password for routers enforcing TCP MD5authenticated sessionstype: stringpasswordSecret:description: |-passwordSecret is name of the authentication secret for BGP Peer.the secret must be of type "kubernetes.io/basic-auth", and created in thesame namespace as the MetalLB deployment. The password is stored in thesecret as the key "password".properties:name:description: name is unique within a namespace to reference asecret resource.type: stringnamespace:description: namespace defines the space within which the secretname must be unique.type: stringtype: objectx-kubernetes-map-type: atomicpeerASN:description: AS number to expect from the remote end of the session.format: int32maximum: 4294967295minimum: 0type: integerpeerAddress:description: Address to dial when establishing the session.type: stringpeerPort:default: 179description: Port to dial when establishing the session.maximum: 16384minimum: 0type: integerrouterID:description: BGP router ID to advertise to the peertype: stringsourceAddress:description: Source address to use when establishing the session.type: stringvrf:description: |-To set if we want to peer with the BGPPeer using an interface belonging toa host vrftype: stringrequired:- myASN- peerASN- peerAddresstype: objectstatus:description: BGPPeerStatus defines the observed state of Peer.type: objecttype: objectserved: truestorage: truesubresources:status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:annotations:controller-gen.kubebuilder.io/version: v0.14.0name: communities.metallb.io
spec:group: metallb.ionames:kind: CommunitylistKind: CommunityListplural: communitiessingular: communityscope: Namespacedversions:- name: v1beta1schema:openAPIV3Schema:description: |-Community is a collection of aliases for communities.Users can define named aliases to be used in the BGPPeer CRD.properties:apiVersion:description: |-APIVersion defines the versioned schema of this representation of an object.Servers should convert recognized schemas to the latest internal value, andmay reject unrecognized values.More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resourcestype: stringkind:description: |-Kind is a string value representing the REST resource this object represents.Servers may infer this from the endpoint the client submits requests to.Cannot be updated.In CamelCase.More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kindstype: stringmetadata:type: objectspec:description: CommunitySpec defines the desired state of Community.properties:communities:items:properties:name:description: The name of the alias for the community.type: stringvalue:description: |-The BGP community value corresponding to the given name. Can be a standard community of the form 1234:1234or a large community of the form large:1234:1234:1234.type: stringtype: objecttype: arraytype: objectstatus:description: CommunityStatus defines the observed state of Community.type: objecttype: objectserved: truestorage: truesubresources:status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:annotations:controller-gen.kubebuilder.io/version: v0.14.0name: ipaddresspools.metallb.io
spec:group: metallb.ionames:kind: IPAddressPoollistKind: IPAddressPoolListplural: ipaddresspoolssingular: ipaddresspoolscope: Namespacedversions:- additionalPrinterColumns:- jsonPath: .spec.autoAssignname: Auto Assigntype: boolean- jsonPath: .spec.avoidBuggyIPsname: Avoid Buggy IPstype: boolean- jsonPath: .spec.addressesname: Addressestype: stringname: v1beta1schema:openAPIV3Schema:description: |-IPAddressPool represents a pool of IP addresses that can be allocatedto LoadBalancer services.properties:apiVersion:description: |-APIVersion defines the versioned schema of this representation of an object.Servers should convert recognized schemas to the latest internal value, andmay reject unrecognized values.More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resourcestype: stringkind:description: |-Kind is a string value representing the REST resource this object represents.Servers may infer this from the endpoint the client submits requests to.Cannot be updated.In CamelCase.More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kindstype: stringmetadata:type: objectspec:description: IPAddressPoolSpec defines the desired state of IPAddressPool.properties:addresses:description: |-A list of IP address ranges over which MetalLB has authority.You can list multiple ranges in a single pool, they will all share thesame settings. Each range can be either a CIDR prefix, or an explicitstart-end range of IPs.items:type: stringtype: arrayautoAssign:default: truedescription: |-AutoAssign flag used to prevent MetallB from automatic allocationfor a pool.type: booleanavoidBuggyIPs:default: falsedescription: |-AvoidBuggyIPs prevents addresses ending with .0 and .255to be used by a pool.type: booleanserviceAllocation:description: |-AllocateTo makes ip pool allocation to specific namespace and/or service.The controller will use the pool with lowest value of priority in case ofmultiple matches. A pool with no priority set will be used only if thepools with priority can't be used. If multiple matching IPAddressPools areavailable it will check for the availability of IPs sorting the matchingIPAddressPools by priority, starting from the highest to the lowest. Ifmultiple IPAddressPools have the same priority, choice will be random.properties:namespaceSelectors:description: |-NamespaceSelectors list of label selectors to select namespace(s) for ip pool,an alternative to using namespace list.items:description: |-A label selector is a label query over a set of resources. The result of matchLabels andmatchExpressions are ANDed. An empty label selector matches all objects. A nulllabel selector matches no objects.properties:matchExpressions:description: matchExpressions is a list of label selectorrequirements. The requirements are ANDed.items:description: |-A label selector requirement is a selector that contains values, a key, and an operator thatrelates the key and values.properties:key:description: key is the label key that the selectorapplies to.type: stringoperator:description: |-operator represents a key's relationship to a set of values.Valid operators are In, NotIn, Exists and DoesNotExist.type: stringvalues:description: |-values is an array of string values. If the operator is In or NotIn,the values array must be non-empty. If the operator is Exists or DoesNotExist,the values array must be empty. This array is replaced during a strategicmerge patch.items:type: stringtype: arrayrequired:- key- operatortype: objecttype: arraymatchLabels:additionalProperties:type: stringdescription: |-matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabelsmap is equivalent to an element of matchExpressions, whose key field is "key", theoperator is "In", and the values array contains only "value". The requirements are ANDed.type: objecttype: objectx-kubernetes-map-type: atomictype: arraynamespaces:description: Namespaces list of namespace(s) on which ip poolcan be attached.items:type: stringtype: arraypriority:description: Priority priority given for ip pool while ip allocationon a service.type: integerserviceSelectors:description: |-ServiceSelectors list of label selector to select service(s) for which ip poolcan be used for ip allocation.items:description: |-A label selector is a label query over a set of resources. The result of matchLabels andmatchExpressions are ANDed. An empty label selector matches all objects. A nulllabel selector matches no objects.properties:matchExpressions:description: matchExpressions is a list of label selectorrequirements. The requirements are ANDed.items:description: |-A label selector requirement is a selector that contains values, a key, and an operator thatrelates the key and values.properties:key:description: key is the label key that the selectorapplies to.type: stringoperator:description: |-operator represents a key's relationship to a set of values.Valid operators are In, NotIn, Exists and DoesNotExist.type: stringvalues:description: |-values is an array of string values. If the operator is In or NotIn,the values array must be non-empty. If the operator is Exists or DoesNotExist,the values array must be empty. This array is replaced during a strategicmerge patch.items:type: stringtype: arrayrequired:- key- operatortype: objecttype: arraymatchLabels:additionalProperties:type: stringdescription: |-matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabelsmap is equivalent to an element of matchExpressions, whose key field is "key", theoperator is "In", and the values array contains only "value". The requirements are ANDed.type: objecttype: objectx-kubernetes-map-type: atomictype: arraytype: objectrequired:- addressestype: objectstatus:description: IPAddressPoolStatus defines the observed state of IPAddressPool.type: objectrequired:- spectype: objectserved: truestorage: truesubresources:status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:annotations:controller-gen.kubebuilder.io/version: v0.14.0name: l2advertisements.metallb.io
spec:group: metallb.ionames:kind: L2AdvertisementlistKind: L2AdvertisementListplural: l2advertisementssingular: l2advertisementscope: Namespacedversions:- additionalPrinterColumns:- jsonPath: .spec.ipAddressPoolsname: IPAddressPoolstype: string- jsonPath: .spec.ipAddressPoolSelectorsname: IPAddressPool Selectorstype: string- jsonPath: .spec.interfacesname: Interfacestype: string- jsonPath: .spec.nodeSelectorsname: Node Selectorspriority: 10type: stringname: v1beta1schema:openAPIV3Schema:description: |-L2Advertisement allows to advertise the LoadBalancer IPs providedby the selected pools via L2.properties:apiVersion:description: |-APIVersion defines the versioned schema of this representation of an object.Servers should convert recognized schemas to the latest internal value, andmay reject unrecognized values.More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resourcestype: stringkind:description: |-Kind is a string value representing the REST resource this object represents.Servers may infer this from the endpoint the client submits requests to.Cannot be updated.In CamelCase.More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kindstype: stringmetadata:type: objectspec:description: L2AdvertisementSpec defines the desired state of L2Advertisement.properties:interfaces:description: |-A list of interfaces to announce from. The LB IP will be announced only from these interfaces.If the field is not set, we advertise from all the interfaces on the host.items:type: stringtype: arrayipAddressPoolSelectors:description: |-A selector for the IPAddressPools which would get advertised via this advertisement.If no IPAddressPool is selected by this or by the list, the advertisement is applied to all the IPAddressPools.items:description: |-A label selector is a label query over a set of resources. The result of matchLabels andmatchExpressions are ANDed. An empty label selector matches all objects. A nulllabel selector matches no objects.properties:matchExpressions:description: matchExpressions is a list of label selector requirements.The requirements are ANDed.items:description: |-A label selector requirement is a selector that contains values, a key, and an operator thatrelates the key and values.properties:key:description: key is the label key that the selector appliesto.type: stringoperator:description: |-operator represents a key's relationship to a set of values.Valid operators are In, NotIn, Exists and DoesNotExist.type: stringvalues:description: |-values is an array of string values. If the operator is In or NotIn,the values array must be non-empty. If the operator is Exists or DoesNotExist,the values array must be empty. This array is replaced during a strategicmerge patch.items:type: stringtype: arrayrequired:- key- operatortype: objecttype: arraymatchLabels:additionalProperties:type: stringdescription: |-matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabelsmap is equivalent to an element of matchExpressions, whose key field is "key", theoperator is "In", and the values array contains only "value". The requirements are ANDed.type: objecttype: objectx-kubernetes-map-type: atomictype: arrayipAddressPools:description: The list of IPAddressPools to advertise via this advertisement,selected by name.items:type: stringtype: arraynodeSelectors:description: NodeSelectors allows to limit the nodes to announce asnext hops for the LoadBalancer IP. When empty, all the nodes having areannounced as next hops.items:description: |-A label selector is a label query over a set of resources. The result of matchLabels andmatchExpressions are ANDed. An empty label selector matches all objects. A nulllabel selector matches no objects.properties:matchExpressions:description: matchExpressions is a list of label selector requirements.The requirements are ANDed.items:description: |-A label selector requirement is a selector that contains values, a key, and an operator thatrelates the key and values.properties:key:description: key is the label key that the selector appliesto.type: stringoperator:description: |-operator represents a key's relationship to a set of values.Valid operators are In, NotIn, Exists and DoesNotExist.type: stringvalues:description: |-values is an array of string values. If the operator is In or NotIn,the values array must be non-empty. If the operator is Exists or DoesNotExist,the values array must be empty. This array is replaced during a strategicmerge patch.items:type: stringtype: arrayrequired:- key- operatortype: objecttype: arraymatchLabels:additionalProperties:type: stringdescription: |-matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabelsmap is equivalent to an element of matchExpressions, whose key field is "key", theoperator is "In", and the values array contains only "value". The requirements are ANDed.type: objecttype: objectx-kubernetes-map-type: atomictype: arraytype: objectstatus:description: L2AdvertisementStatus defines the observed state of L2Advertisement.type: objecttype: objectserved: truestorage: truesubresources:status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:annotations:controller-gen.kubebuilder.io/version: v0.14.0name: servicel2statuses.metallb.io
spec:group: metallb.ionames:kind: ServiceL2StatuslistKind: ServiceL2StatusListplural: servicel2statusessingular: servicel2statusscope: Namespacedversions:- additionalPrinterColumns:- jsonPath: .status.nodename: Allocated Nodetype: stringname: v1beta1schema:openAPIV3Schema:description: ServiceL2Status reveals the actual traffic status of loadbalancerservices in layer2 mode.properties:apiVersion:description: |-APIVersion defines the versioned schema of this representation of an object.Servers should convert recognized schemas to the latest internal value, andmay reject unrecognized values.More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resourcestype: stringkind:description: |-Kind is a string value representing the REST resource this object represents.Servers may infer this from the endpoint the client submits requests to.Cannot be updated.In CamelCase.More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kindstype: stringmetadata:type: objectspec:description: ServiceL2StatusSpec defines the desired state of ServiceL2Status.type: objectstatus:description: MetalLBServiceL2Status defines the observed state of ServiceL2Status.properties:interfaces:description: Interfaces indicates the interfaces that receive thedirected trafficitems:description: InterfaceInfo defines interface info of layer2 announcement.properties:name:description: Name the name of network interface cardtype: stringtype: objecttype: arraynode:description: Node indicates the node that receives the directed traffictype: stringtype: objecttype: objectserved: truestorage: truesubresources:status: {}
---
apiVersion: v1
kind: ServiceAccount
metadata:labels:app: metallbname: controllernamespace: metallb-system
---
apiVersion: v1
kind: ServiceAccount
metadata:labels:app: metallbname: speakernamespace: metallb-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:labels:app: metallbname: controllernamespace: metallb-system
rules:
- apiGroups:- ""resources:- secretsverbs:- create- delete- get- list- patch- update- watch
- apiGroups:- ""resourceNames:- memberlistresources:- secretsverbs:- list
- apiGroups:- appsresourceNames:- controllerresources:- deploymentsverbs:- get
- apiGroups:- metallb.ioresources:- bgppeersverbs:- get- list
- apiGroups:- metallb.ioresources:- bfdprofilesverbs:- get- list- watch
- apiGroups:- metallb.ioresources:- ipaddresspoolsverbs:- get- list- watch
- apiGroups:- metallb.ioresources:- bgpadvertisementsverbs:- get- list- watch
- apiGroups:- metallb.ioresources:- l2advertisementsverbs:- get- list- watch
- apiGroups:- metallb.ioresources:- communitiesverbs:- get- list- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:labels:app: metallbname: pod-listernamespace: metallb-system
rules:
- apiGroups:- ""resources:- podsverbs:- list
- apiGroups:- ""resources:- secretsverbs:- get- list- watch
- apiGroups:- ""resources:- configmapsverbs:- get- list- watch
- apiGroups:- metallb.ioresources:- bfdprofilesverbs:- get- list- watch
- apiGroups:- metallb.ioresources:- bgppeersverbs:- get- list- watch
- apiGroups:- metallb.ioresources:- l2advertisementsverbs:- get- list- watch
- apiGroups:- metallb.ioresources:- bgpadvertisementsverbs:- get- list- watch
- apiGroups:- metallb.ioresources:- ipaddresspoolsverbs:- get- list- watch
- apiGroups:- metallb.ioresources:- communitiesverbs:- get- list- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:labels:app: metallbname: metallb-system:controller
rules:
- apiGroups:- ""resources:- services- namespacesverbs:- get- list- watch
- apiGroups:- ""resources:- nodesverbs:- list
- apiGroups:- ""resources:- services/statusverbs:- update
- apiGroups:- ""resources:- eventsverbs:- create- patch
- apiGroups:- policyresourceNames:- controllerresources:- podsecuritypoliciesverbs:- use
- apiGroups:- admissionregistration.k8s.ioresourceNames:- metallb-webhook-configurationresources:- validatingwebhookconfigurations- mutatingwebhookconfigurationsverbs:- create- delete- get- list- patch- update- watch
- apiGroups:- admissionregistration.k8s.ioresources:- validatingwebhookconfigurations- mutatingwebhookconfigurationsverbs:- list- watch
- apiGroups:- apiextensions.k8s.ioresourceNames:- bfdprofiles.metallb.io- bgpadvertisements.metallb.io- bgppeers.metallb.io- ipaddresspools.metallb.io- l2advertisements.metallb.io- communities.metallb.ioresources:- customresourcedefinitionsverbs:- create- delete- get- list- patch- update- watch
- apiGroups:- apiextensions.k8s.ioresources:- customresourcedefinitionsverbs:- list- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:labels:app: metallbname: metallb-system:speaker
rules:
- apiGroups:- metallb.ioresources:- servicel2statuses- servicel2statuses/statusverbs:- '*'
- apiGroups:- ""resources:- services- endpoints- nodes- namespacesverbs:- get- list- watch
- apiGroups:- discovery.k8s.ioresources:- endpointslicesverbs:- get- list- watch
- apiGroups:- ""resources:- eventsverbs:- create- patch
- apiGroups:- policyresourceNames:- speakerresources:- podsecuritypoliciesverbs:- use
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:labels:app: metallbname: controllernamespace: metallb-system
roleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename: controller
subjects:
- kind: ServiceAccountname: controllernamespace: metallb-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:labels:app: metallbname: pod-listernamespace: metallb-system
roleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename: pod-lister
subjects:
- kind: ServiceAccountname: speakernamespace: metallb-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:labels:app: metallbname: metallb-system:controller
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: metallb-system:controller
subjects:
- kind: ServiceAccountname: controllernamespace: metallb-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:labels:app: metallbname: metallb-system:speaker
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: metallb-system:speaker
subjects:
- kind: ServiceAccountname: speakernamespace: metallb-system
---
apiVersion: v1
data:excludel2.yaml: |announcedInterfacesToExclude: ["^docker.*", "^cbr.*", "^dummy.*", "^virbr.*", "^lxcbr.*", "^veth.*", "^lo$", "^cali.*", "^tunl.*", "^flannel.*", "^kube-ipvs.*", "^cni.*", "^nodelocaldns.*"]
kind: ConfigMap
metadata:name: metallb-excludel2namespace: metallb-system
---
apiVersion: v1
kind: Secret
metadata:name: metallb-webhook-certnamespace: metallb-system
---
apiVersion: v1
kind: Service
metadata:name: metallb-webhook-servicenamespace: metallb-system
spec:ports:- port: 443targetPort: 9443selector:component: controller
---
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: metallbcomponent: controllername: controllernamespace: metallb-system
spec:revisionHistoryLimit: 3selector:matchLabels:app: metallbcomponent: controllertemplate:metadata:annotations:prometheus.io/port: "7472"prometheus.io/scrape: "true"labels:app: metallbcomponent: controllerspec:containers:- args:- --port=7472- --log-level=info- --tls-min-version=VersionTLS12env:- name: METALLB_ML_SECRET_NAMEvalue: memberlist- name: METALLB_DEPLOYMENTvalue: controllerimage: quay.io/metallb/controller:v0.14.5livenessProbe:failureThreshold: 3httpGet:path: /metricsport: monitoringinitialDelaySeconds: 10periodSeconds: 10successThreshold: 1timeoutSeconds: 1name: controllerports:- containerPort: 7472name: monitoring- containerPort: 9443name: webhook-serverprotocol: TCPreadinessProbe:failureThreshold: 3httpGet:path: /metricsport: monitoringinitialDelaySeconds: 10periodSeconds: 10successThreshold: 1timeoutSeconds: 1securityContext:allowPrivilegeEscalation: falsecapabilities:drop:- allreadOnlyRootFilesystem: truevolumeMounts:- mountPath: /tmp/k8s-webhook-server/serving-certsname: certreadOnly: truenodeSelector:kubernetes.io/os: linuxsecurityContext:fsGroup: 65534runAsNonRoot: truerunAsUser: 65534serviceAccountName: controllerterminationGracePeriodSeconds: 0volumes:- name: certsecret:defaultMode: 420secretName: metallb-webhook-cert
---
apiVersion: apps/v1
kind: DaemonSet
metadata:labels:app: metallbcomponent: speakername: speakernamespace: metallb-system
spec:selector:matchLabels:app: metallbcomponent: speakertemplate:metadata:annotations:prometheus.io/port: "7472"prometheus.io/scrape: "true"labels:app: metallbcomponent: speakerspec:containers:- args:- --port=7472- --log-level=infoenv:- name: METALLB_NODE_NAMEvalueFrom:fieldRef:fieldPath: spec.nodeName- name: METALLB_HOSTvalueFrom:fieldRef:fieldPath: status.hostIP- name: METALLB_ML_BIND_ADDRvalueFrom:fieldRef:fieldPath: status.podIP- name: METALLB_ML_LABELSvalue: app=metallb,component=speaker- name: METALLB_ML_SECRET_KEY_PATHvalue: /etc/ml_secret_keyimage: quay.io/metallb/speaker:v0.14.5livenessProbe:failureThreshold: 3httpGet:path: /metricsport: monitoringinitialDelaySeconds: 10periodSeconds: 10successThreshold: 1timeoutSeconds: 1name: speakerports:- containerPort: 7472name: monitoring- containerPort: 7946name: memberlist-tcp- containerPort: 7946name: memberlist-udpprotocol: UDPreadinessProbe:failureThreshold: 3httpGet:path: /metricsport: monitoringinitialDelaySeconds: 10periodSeconds: 10successThreshold: 1timeoutSeconds: 1securityContext:allowPrivilegeEscalation: falsecapabilities:add:- NET_RAWdrop:- ALLreadOnlyRootFilesystem: truevolumeMounts:- mountPath: /etc/ml_secret_keyname: memberlistreadOnly: true- mountPath: /etc/metallbname: metallb-excludel2readOnly: truehostNetwork: truenodeSelector:kubernetes.io/os: linuxserviceAccountName: speakerterminationGracePeriodSeconds: 2tolerations:- effect: NoSchedulekey: node-role.kubernetes.io/masteroperator: Exists- effect: NoSchedulekey: node-role.kubernetes.io/control-planeoperator: Existsvolumes:- name: memberlistsecret:defaultMode: 420secretName: memberlist- configMap:defaultMode: 256name: metallb-excludel2name: metallb-excludel2
---
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:creationTimestamp: nullname: metallb-webhook-configuration
webhooks:
- admissionReviewVersions:- v1clientConfig:service:name: metallb-webhook-servicenamespace: metallb-systempath: /validate-metallb-io-v1beta2-bgppeerfailurePolicy: Failname: bgppeersvalidationwebhook.metallb.iorules:- apiGroups:- metallb.ioapiVersions:- v1beta2operations:- CREATE- UPDATEresources:- bgppeerssideEffects: None
- admissionReviewVersions:- v1clientConfig:service:name: metallb-webhook-servicenamespace: metallb-systempath: /validate-metallb-io-v1beta1-bfdprofilefailurePolicy: Failname: bfdprofilevalidationwebhook.metallb.iorules:- apiGroups:- metallb.ioapiVersions:- v1beta1operations:- CREATE- DELETEresources:- bfdprofilessideEffects: None
- admissionReviewVersions:- v1clientConfig:service:name: metallb-webhook-servicenamespace: metallb-systempath: /validate-metallb-io-v1beta1-bgpadvertisementfailurePolicy: Failname: bgpadvertisementvalidationwebhook.metallb.iorules:- apiGroups:- metallb.ioapiVersions:- v1beta1operations:- CREATE- UPDATEresources:- bgpadvertisementssideEffects: None
- admissionReviewVersions:- v1clientConfig:service:name: metallb-webhook-servicenamespace: metallb-systempath: /validate-metallb-io-v1beta1-communityfailurePolicy: Failname: communityvalidationwebhook.metallb.iorules:- apiGroups:- metallb.ioapiVersions:- v1beta1operations:- CREATE- UPDATEresources:- communitiessideEffects: None
- admissionReviewVersions:- v1clientConfig:service:name: metallb-webhook-servicenamespace: metallb-systempath: /validate-metallb-io-v1beta1-ipaddresspoolfailurePolicy: Failname: ipaddresspoolvalidationwebhook.metallb.iorules:- apiGroups:- metallb.ioapiVersions:- v1beta1operations:- CREATE- UPDATEresources:- ipaddresspoolssideEffects: None
- admissionReviewVersions:- v1clientConfig:service:name: metallb-webhook-servicenamespace: metallb-systempath: /validate-metallb-io-v1beta1-l2advertisementfailurePolicy: Failname: l2advertisementvalidationwebhook.metallb.iorules:- apiGroups:- metallb.ioapiVersions:- v1beta1operations:- CREATE- UPDATEresources:- l2advertisementssideEffects: None