diff --git a/pkg/apis/apps/types.go b/pkg/apis/apps/types.go index 9b9b2d1b..08a0d9a3 100644 --- a/pkg/apis/apps/types.go +++ b/pkg/apis/apps/types.go @@ -44,6 +44,21 @@ type StatefulSet struct { Status StatefulSetStatus } +// PodManagementPolicyType defines the policy for creating pods under a stateful set. +type PodManagementPolicyType string + +const ( + // OrderedReadyPodManagement will create pods in strictly increasing order on + // scale up and strictly decreasing order on scale down, progressing only when + // the previous pod is ready or terminated. At most one pod will be changed + // at any time. + OrderedReadyPodManagement PodManagementPolicyType = "OrderedReady" + // ParallelPodManagement will create and delete pods as soon as the stateful set + // replica count is changed, and will not wait for pods to be ready or complete + // termination. + ParallelPodManagement = "Parallel" +) + // A StatefulSetSpec is the specification of a StatefulSet. type StatefulSetSpec struct { // Replicas is the desired number of replicas of the given Template. @@ -82,6 +97,17 @@ type StatefulSetSpec struct { // pattern: pod-specific-string.serviceName.default.svc.cluster.local // where "pod-specific-string" is managed by the StatefulSet controller. ServiceName string + + // PodManagementPolicy controls how pods are created during initial scale up, + // when replacing pods on nodes, or when scaling down. The default policy is + // `OrderedReady`, where pods are created in increasing order (pod-0, then + // pod-1, etc) and the controller will wait until each pod is ready before + // continuing. When scaling down, the pods are removed in the opposite order. + // The alternative policy is `Parallel` which will create pods in parallel + // to match the desired scale without waiting, and on scale down will delete + // all pods at once. + // +optional + PodManagementPolicy PodManagementPolicyType } // StatefulSetStatus represents the current state of a StatefulSet. diff --git a/pkg/apis/apps/v1beta1/conversion.go b/pkg/apis/apps/v1beta1/conversion.go index 6631cd37..9ab3ce2b 100644 --- a/pkg/apis/apps/v1beta1/conversion.go +++ b/pkg/apis/apps/v1beta1/conversion.go @@ -110,6 +110,7 @@ func Convert_v1beta1_StatefulSetSpec_To_apps_StatefulSetSpec(in *StatefulSetSpec out.VolumeClaimTemplates = nil } out.ServiceName = in.ServiceName + out.PodManagementPolicy = apps.PodManagementPolicyType(in.PodManagementPolicy) return nil } @@ -140,6 +141,7 @@ func Convert_apps_StatefulSetSpec_To_v1beta1_StatefulSetSpec(in *apps.StatefulSe out.VolumeClaimTemplates = nil } out.ServiceName = in.ServiceName + out.PodManagementPolicy = PodManagementPolicyType(in.PodManagementPolicy) return nil } diff --git a/pkg/apis/apps/v1beta1/defaults.go b/pkg/apis/apps/v1beta1/defaults.go index def2bab7..52b881d6 100644 --- a/pkg/apis/apps/v1beta1/defaults.go +++ b/pkg/apis/apps/v1beta1/defaults.go @@ -27,6 +27,9 @@ func addDefaultingFuncs(scheme *runtime.Scheme) error { } func SetDefaults_StatefulSet(obj *StatefulSet) { + if len(obj.Spec.PodManagementPolicy) == 0 { + obj.Spec.PodManagementPolicy = OrderedReadyPodManagement + } labels := obj.Spec.Template.Labels if labels != nil { if obj.Spec.Selector == nil { diff --git a/pkg/apis/apps/v1beta1/generated.pb.go b/pkg/apis/apps/v1beta1/generated.pb.go index 32b6f40e..39b91937 100644 --- a/pkg/apis/apps/v1beta1/generated.pb.go +++ b/pkg/apis/apps/v1beta1/generated.pb.go @@ -788,6 +788,10 @@ func (m *StatefulSetSpec) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.ServiceName))) i += copy(dAtA[i:], m.ServiceName) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.PodManagementPolicy))) + i += copy(dAtA[i:], m.PodManagementPolicy) return i, nil } @@ -1068,6 +1072,8 @@ func (m *StatefulSetSpec) Size() (n int) { } l = len(m.ServiceName) n += 1 + l + sovGenerated(uint64(l)) + l = len(m.PodManagementPolicy) + n += 1 + l + sovGenerated(uint64(l)) return n } @@ -1297,6 +1303,7 @@ func (this *StatefulSetSpec) String() string { `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_kubernetes_pkg_api_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, `VolumeClaimTemplates:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.VolumeClaimTemplates), "PersistentVolumeClaim", "k8s_io_kubernetes_pkg_api_v1.PersistentVolumeClaim", 1), `&`, ``, 1) + `,`, `ServiceName:` + fmt.Sprintf("%v", this.ServiceName) + `,`, + `PodManagementPolicy:` + fmt.Sprintf("%v", this.PodManagementPolicy) + `,`, `}`, }, "") return s @@ -3635,6 +3642,35 @@ func (m *StatefulSetSpec) Unmarshal(dAtA []byte) error { } m.ServiceName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodManagementPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PodManagementPolicy = PodManagementPolicyType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -3855,101 +3891,103 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 1525 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0xcb, 0x6f, 0x5b, 0xc5, - 0x17, 0xce, 0x4d, 0xec, 0xc4, 0x99, 0x34, 0x4e, 0x33, 0xc9, 0xaf, 0xf1, 0x2f, 0x45, 0x4e, 0xe5, - 0x45, 0x1f, 0xa8, 0xbd, 0xa6, 0x69, 0xa1, 0x8f, 0x40, 0x45, 0xdc, 0x96, 0x52, 0x94, 0xd0, 0x6a, - 0xec, 0x54, 0xb4, 0x14, 0x89, 0xb1, 0x3d, 0xbd, 0x9d, 0xfa, 0xbe, 0x74, 0x67, 0x6c, 0xc5, 0x3b, - 0x36, 0x2c, 0x90, 0x58, 0xb0, 0x62, 0x87, 0xd8, 0x23, 0x24, 0x76, 0xfc, 0x0d, 0x11, 0x6c, 0xba, - 0x44, 0x2c, 0x22, 0xe2, 0xfe, 0x17, 0x5d, 0xa1, 0x99, 0x3b, 0xf7, 0xe5, 0x6b, 0x27, 0x8e, 0x11, - 0xdd, 0xb0, 0xf3, 0x9d, 0x39, 0xdf, 0x77, 0xce, 0xcc, 0x7c, 0xe7, 0xcc, 0x19, 0x83, 0x6b, 0xad, - 0xeb, 0x4c, 0xa7, 0x4e, 0xb9, 0xd5, 0xae, 0x13, 0xcf, 0x26, 0x9c, 0xb0, 0xb2, 0xdb, 0x32, 0xca, - 0xd8, 0xa5, 0xac, 0x8c, 0x5d, 0x97, 0x95, 0x3b, 0x97, 0xeb, 0x84, 0xe3, 0xcb, 0x65, 0x83, 0xd8, - 0xc4, 0xc3, 0x9c, 0x34, 0x75, 0xd7, 0x73, 0xb8, 0x03, 0xcf, 0xf9, 0x40, 0x3d, 0x02, 0xea, 0x6e, - 0xcb, 0xd0, 0x05, 0x50, 0x17, 0x40, 0x5d, 0x01, 0x57, 0x2f, 0x19, 0x94, 0x3f, 0x6f, 0xd7, 0xf5, - 0x86, 0x63, 0x95, 0x0d, 0xc7, 0x70, 0xca, 0x12, 0x5f, 0x6f, 0x3f, 0x93, 0x5f, 0xf2, 0x43, 0xfe, - 0xf2, 0x79, 0x57, 0xaf, 0xaa, 0x80, 0xb0, 0x4b, 0x2d, 0xdc, 0x78, 0x4e, 0x6d, 0xe2, 0x75, 0xa3, - 0x90, 0x2c, 0xc2, 0x71, 0xb9, 0x93, 0x8a, 0x66, 0xb5, 0x3c, 0x0c, 0xe5, 0xb5, 0x6d, 0x4e, 0x2d, - 0x92, 0x02, 0xbc, 0x77, 0x14, 0x80, 0x35, 0x9e, 0x13, 0x0b, 0xa7, 0x70, 0x57, 0x86, 0xe1, 0xda, - 0x9c, 0x9a, 0x65, 0x6a, 0x73, 0xc6, 0xbd, 0x14, 0x28, 0xb6, 0x26, 0x46, 0xbc, 0x0e, 0xf1, 0xa2, - 0x05, 0x91, 0x5d, 0x6c, 0xb9, 0x26, 0x19, 0xb4, 0xa6, 0x8b, 0x43, 0x8f, 0x66, 0x90, 0xf5, 0x07, - 0x87, 0x1c, 0x24, 0xd9, 0xe5, 0xc4, 0x66, 0xd4, 0xb1, 0x87, 0x1e, 0x67, 0xe9, 0xe7, 0x49, 0x00, - 0xee, 0x10, 0xd7, 0x74, 0xba, 0x16, 0xb1, 0x39, 0xfc, 0x12, 0xe4, 0xc4, 0x56, 0x37, 0x31, 0xc7, - 0x05, 0xed, 0x8c, 0x76, 0x7e, 0x6e, 0xfd, 0x1d, 0x5d, 0x1d, 0x78, 0x7c, 0xe5, 0xd1, 0x91, 0x0b, - 0x6b, 0xbd, 0x73, 0x59, 0x7f, 0x50, 0x7f, 0x41, 0x1a, 0x7c, 0x9b, 0x70, 0x5c, 0x81, 0x7b, 0xfb, - 0x6b, 0x13, 0xbd, 0xfd, 0x35, 0x10, 0x8d, 0xa1, 0x90, 0x15, 0x3e, 0x06, 0x19, 0xe6, 0x92, 0x46, - 0x61, 0x52, 0xb2, 0x5f, 0xd3, 0x47, 0x94, 0x93, 0x1e, 0x05, 0x59, 0x75, 0x49, 0xa3, 0x72, 0x42, - 0x39, 0xc9, 0x88, 0x2f, 0x24, 0x29, 0x21, 0x06, 0xd3, 0x8c, 0x63, 0xde, 0x66, 0x85, 0x29, 0x49, - 0x7e, 0x63, 0x1c, 0x72, 0x49, 0x50, 0xc9, 0x2b, 0xfa, 0x69, 0xff, 0x1b, 0x29, 0xe2, 0xd2, 0xc1, - 0x14, 0x58, 0x8a, 0x8c, 0x6f, 0x3b, 0x76, 0x93, 0x72, 0xea, 0xd8, 0x70, 0x03, 0x64, 0x78, 0xd7, - 0x25, 0x72, 0xcf, 0x66, 0x2b, 0xe7, 0x82, 0xe0, 0x6a, 0x5d, 0x97, 0xbc, 0xde, 0x5f, 0x5b, 0x19, - 0x00, 0x11, 0x53, 0x48, 0x82, 0xe0, 0xa3, 0x30, 0xee, 0x49, 0x09, 0xbf, 0x95, 0x74, 0xfe, 0x7a, - 0x7f, 0xed, 0x50, 0x49, 0xe8, 0x21, 0x67, 0x32, 0x58, 0x78, 0x16, 0x4c, 0x7b, 0x04, 0x33, 0xc7, - 0x2e, 0x64, 0x24, 0x6f, 0xb8, 0x28, 0x24, 0x47, 0x91, 0x9a, 0x85, 0x17, 0xc0, 0x8c, 0x45, 0x18, - 0xc3, 0x06, 0x29, 0x64, 0xa5, 0xe1, 0x82, 0x32, 0x9c, 0xd9, 0xf6, 0x87, 0x51, 0x30, 0x0f, 0x5f, - 0x80, 0xbc, 0x89, 0x19, 0xdf, 0x71, 0x9b, 0x98, 0x93, 0x1a, 0xb5, 0x48, 0x61, 0x5a, 0x6e, 0xf5, - 0xdb, 0xa3, 0xa9, 0x44, 0x20, 0x2a, 0xa7, 0x14, 0x7b, 0x7e, 0x2b, 0xc1, 0x84, 0xfa, 0x98, 0x61, - 0x07, 0x40, 0x31, 0x52, 0xf3, 0xb0, 0xcd, 0xfc, 0x2d, 0x13, 0xfe, 0x66, 0x8e, 0xed, 0x6f, 0x55, - 0xf9, 0x83, 0x5b, 0x29, 0x36, 0x34, 0xc0, 0x43, 0x69, 0x4f, 0x03, 0xf9, 0xe8, 0xc0, 0xb6, 0x28, - 0xe3, 0xf0, 0x69, 0x2a, 0x2d, 0xf4, 0xd1, 0x02, 0x10, 0x68, 0x99, 0x14, 0x27, 0x55, 0x10, 0xb9, - 0x60, 0x24, 0x96, 0x12, 0x9f, 0x81, 0x2c, 0xe5, 0xc4, 0x12, 0xc7, 0x3f, 0x75, 0x7e, 0x6e, 0xfd, - 0xca, 0x18, 0xb2, 0xad, 0xcc, 0x2b, 0xfe, 0xec, 0x7d, 0xc1, 0x84, 0x7c, 0xc2, 0xd2, 0xb7, 0x53, - 0x00, 0x46, 0x46, 0xc8, 0x31, 0xcd, 0x3a, 0x6e, 0xb4, 0xe0, 0x19, 0x90, 0xb1, 0xb1, 0x15, 0xa8, - 0x35, 0x4c, 0xa5, 0x4f, 0xb1, 0x45, 0x90, 0x9c, 0x81, 0x3f, 0x6a, 0x00, 0xb6, 0xe5, 0x51, 0x34, - 0x37, 0x6d, 0xdb, 0xe1, 0x58, 0xec, 0x4e, 0x10, 0x60, 0x75, 0x8c, 0x00, 0x03, 0xdf, 0xfa, 0x4e, - 0x8a, 0xf5, 0xae, 0xcd, 0xbd, 0x6e, 0x74, 0x4a, 0x69, 0x03, 0x34, 0x20, 0x14, 0xd8, 0x02, 0xc0, - 0x53, 0x9c, 0x35, 0x47, 0x25, 0xfc, 0xe8, 0xd5, 0x24, 0x08, 0xe7, 0xb6, 0x63, 0x3f, 0xa3, 0x46, - 0x54, 0xb2, 0x50, 0x48, 0x89, 0x62, 0xf4, 0xab, 0x77, 0xc1, 0xca, 0x90, 0xb8, 0xe1, 0x49, 0x30, - 0xd5, 0x22, 0x5d, 0x7f, 0x2b, 0x91, 0xf8, 0x09, 0x97, 0x41, 0xb6, 0x83, 0xcd, 0x36, 0xf1, 0xb3, - 0x19, 0xf9, 0x1f, 0x37, 0x27, 0xaf, 0x6b, 0xa5, 0x3f, 0xb3, 0x71, 0x65, 0x89, 0xca, 0x05, 0xcf, - 0x83, 0x9c, 0x47, 0x5c, 0x93, 0x36, 0x30, 0x93, 0x1c, 0xd9, 0xca, 0x09, 0xa1, 0x12, 0xa4, 0xc6, - 0x50, 0x38, 0x0b, 0xbf, 0x00, 0x39, 0x46, 0x4c, 0xd2, 0xe0, 0x8e, 0xa7, 0x8a, 0xe7, 0x95, 0x11, - 0x35, 0x88, 0xeb, 0xc4, 0xac, 0x2a, 0xa8, 0x4f, 0x1f, 0x7c, 0xa1, 0x90, 0x12, 0x7e, 0x0e, 0x72, - 0x9c, 0x58, 0xae, 0x89, 0x39, 0x51, 0xbb, 0x79, 0x69, 0xf8, 0x6e, 0x0a, 0xda, 0x87, 0x4e, 0xb3, - 0xa6, 0x00, 0xb2, 0x22, 0x87, 0x0a, 0x0f, 0x46, 0x51, 0x48, 0x08, 0x29, 0xc8, 0x31, 0x2e, 0xae, - 0x1d, 0xa3, 0x2b, 0x6b, 0xd1, 0xdc, 0xfa, 0xc6, 0x58, 0xb5, 0xd9, 0xa7, 0x88, 0x5c, 0x05, 0x23, - 0x28, 0xa4, 0x87, 0x9b, 0x60, 0xc1, 0xa2, 0x36, 0x22, 0xb8, 0xd9, 0xad, 0x92, 0x86, 0x63, 0x37, - 0x99, 0x2c, 0x6a, 0xd9, 0xca, 0x8a, 0x02, 0x2d, 0x6c, 0x27, 0xa7, 0x51, 0xbf, 0x3d, 0xdc, 0x02, - 0xcb, 0x1e, 0xe9, 0x50, 0x71, 0x71, 0x7e, 0x4c, 0x19, 0x77, 0xbc, 0xee, 0x16, 0xb5, 0x28, 0x97, - 0xa5, 0x2e, 0x5b, 0x29, 0xf4, 0xf6, 0xd7, 0x96, 0xd1, 0x80, 0x79, 0x34, 0x10, 0x25, 0xaa, 0xb0, - 0x8b, 0xdb, 0x8c, 0x34, 0x65, 0xe9, 0xca, 0x45, 0x55, 0xf8, 0xa1, 0x1c, 0x45, 0x6a, 0x16, 0x1a, - 0x09, 0x41, 0xe7, 0xfe, 0x99, 0xa0, 0xf3, 0xc3, 0xc5, 0x0c, 0x77, 0xc0, 0x8a, 0xeb, 0x39, 0x86, - 0x47, 0x18, 0xbb, 0x43, 0x70, 0xd3, 0xa4, 0x36, 0x09, 0x76, 0x6a, 0x56, 0xae, 0xf0, 0x74, 0x6f, - 0x7f, 0x6d, 0xe5, 0xe1, 0x60, 0x13, 0x34, 0x0c, 0x5b, 0xfa, 0x3e, 0x03, 0x4e, 0xf6, 0xdf, 0xa3, - 0xf0, 0x13, 0x00, 0x9d, 0xba, 0xec, 0x7d, 0x9a, 0xf7, 0xfc, 0xce, 0x83, 0x3a, 0xb6, 0x14, 0xfa, - 0x54, 0x94, 0xf1, 0x0f, 0x52, 0x16, 0x68, 0x00, 0x0a, 0x5e, 0x8c, 0xa5, 0xca, 0xa4, 0x0c, 0x34, - 0xd4, 0xc1, 0x80, 0x74, 0xd9, 0x04, 0x0b, 0xaa, 0x6a, 0x04, 0x93, 0x52, 0xd6, 0x31, 0x1d, 0xec, - 0x24, 0xa7, 0x51, 0xbf, 0x3d, 0xbc, 0x07, 0x16, 0x71, 0x07, 0x53, 0x13, 0xd7, 0x4d, 0x12, 0x92, - 0x64, 0x24, 0xc9, 0xff, 0x15, 0xc9, 0xe2, 0x66, 0xbf, 0x01, 0x4a, 0x63, 0xe0, 0x36, 0x58, 0x6a, - 0xdb, 0x69, 0x2a, 0x5f, 0x97, 0xa7, 0x15, 0xd5, 0xd2, 0x4e, 0xda, 0x04, 0x0d, 0xc2, 0x41, 0x17, - 0x80, 0x46, 0x70, 0xe5, 0xb3, 0xc2, 0xb4, 0xac, 0xc9, 0xef, 0x8f, 0x91, 0x4f, 0x61, 0xdf, 0x10, - 0xd5, 0xbf, 0x70, 0x88, 0xa1, 0x98, 0x0f, 0xb8, 0x01, 0xe6, 0x3d, 0x91, 0x21, 0x61, 0xe8, 0x33, - 0x32, 0xf4, 0xff, 0x29, 0xd8, 0x3c, 0x8a, 0x4f, 0xa2, 0xa4, 0x6d, 0xe9, 0x77, 0x2d, 0x7e, 0x09, - 0x05, 0x29, 0x0b, 0x6f, 0x26, 0x5a, 0xa6, 0xb3, 0x7d, 0x2d, 0xd3, 0xa9, 0x34, 0x22, 0xd6, 0x31, - 0x75, 0xc1, 0xbc, 0x10, 0x34, 0xb5, 0x0d, 0xff, 0x10, 0x55, 0x41, 0xfc, 0xf0, 0x58, 0xe9, 0x12, - 0xa2, 0x63, 0xd7, 0xe8, 0xa2, 0x5c, 0x4d, 0x7c, 0x12, 0x25, 0x3d, 0x95, 0x6e, 0x81, 0x7c, 0x32, - 0xd7, 0x7c, 0x5d, 0xfa, 0x89, 0xaf, 0x94, 0x1d, 0xd3, 0xa5, 0x3f, 0x8e, 0x42, 0x8b, 0xd2, 0x2b, - 0x0d, 0xac, 0x0c, 0xf1, 0x0e, 0x4d, 0x90, 0xb7, 0xf0, 0x6e, 0x4c, 0x07, 0x47, 0xf6, 0xe0, 0xe2, - 0xf5, 0xa1, 0xfb, 0xaf, 0x0f, 0xfd, 0xbe, 0xcd, 0x1f, 0x78, 0x55, 0xee, 0x51, 0xdb, 0xa8, 0x40, - 0xd1, 0x5f, 0x6d, 0x27, 0xb8, 0x50, 0x1f, 0x37, 0x7c, 0x02, 0x72, 0x16, 0xde, 0xad, 0xb6, 0x3d, - 0x23, 0xd8, 0xbf, 0xe3, 0xfb, 0x91, 0xb7, 0xc9, 0xb6, 0x62, 0x41, 0x21, 0x5f, 0xe9, 0x87, 0x49, - 0x90, 0xad, 0x36, 0xb0, 0x49, 0xde, 0xc0, 0x8b, 0xa2, 0x96, 0x78, 0x51, 0xac, 0x8f, 0xac, 0x01, - 0x19, 0xdf, 0xd0, 0xc7, 0xc4, 0xd3, 0xbe, 0xc7, 0xc4, 0xd5, 0x63, 0xf2, 0x1e, 0xfe, 0x8e, 0xb8, - 0x01, 0x66, 0x43, 0xf7, 0x89, 0xc2, 0xa6, 0x1d, 0x55, 0xd8, 0x4a, 0x3f, 0x4d, 0x82, 0xb9, 0x98, - 0x8b, 0xe3, 0xa1, 0xa1, 0x9b, 0xe8, 0x22, 0x44, 0xe5, 0xa8, 0x8c, 0xb3, 0x30, 0x3d, 0xe8, 0x20, - 0xfc, 0xe6, 0x2d, 0xba, 0x90, 0xd3, 0x8d, 0xc5, 0x2d, 0x90, 0xe7, 0xd8, 0x33, 0x08, 0x0f, 0xe6, - 0xe4, 0x86, 0xce, 0x46, 0xcf, 0x80, 0x5a, 0x62, 0x16, 0xf5, 0x59, 0xaf, 0x6e, 0x80, 0xf9, 0x84, - 0xb3, 0x63, 0x75, 0x5c, 0xbf, 0x88, 0xcd, 0xe2, 0x98, 0x93, 0x67, 0x6d, 0xb3, 0x4a, 0xde, 0xc4, - 0xfb, 0xf6, 0x49, 0x42, 0x8d, 0xd7, 0x47, 0xdf, 0xdc, 0x28, 0xca, 0xa1, 0x9a, 0xac, 0xf7, 0x69, - 0xf2, 0xe6, 0x58, 0xec, 0x87, 0x2b, 0xf3, 0x37, 0x0d, 0x2c, 0xc4, 0xac, 0xdf, 0xc0, 0xf3, 0xe7, - 0x71, 0xf2, 0xf9, 0x73, 0x75, 0x9c, 0x45, 0x0d, 0x79, 0xff, 0xfc, 0x3a, 0x95, 0x58, 0xcc, 0x7f, - 0xa8, 0xe3, 0xfe, 0x5a, 0x03, 0xcb, 0x1d, 0xc7, 0x6c, 0x5b, 0xe4, 0xb6, 0x89, 0xa9, 0x15, 0x58, - 0x88, 0xfe, 0xe5, 0x88, 0x37, 0xa6, 0xf4, 0x44, 0x3c, 0x46, 0x19, 0x27, 0x36, 0x7f, 0x14, 0x71, - 0x54, 0xde, 0x52, 0xfe, 0x96, 0x1f, 0x0d, 0x20, 0x46, 0x03, 0xdd, 0xc1, 0x77, 0xc1, 0x9c, 0x68, - 0xe4, 0x68, 0x83, 0x88, 0xd7, 0xa5, 0xfa, 0x7f, 0x61, 0x49, 0x11, 0xcd, 0x55, 0xa3, 0x29, 0x14, - 0xb7, 0x2b, 0x7d, 0xa3, 0x81, 0xc5, 0x94, 0x66, 0xe1, 0x47, 0x87, 0x74, 0x93, 0xa7, 0xfe, 0xad, - 0x4e, 0xb2, 0x72, 0x61, 0xef, 0xa0, 0x38, 0xf1, 0xf2, 0xa0, 0x38, 0xf1, 0xc7, 0x41, 0x71, 0xe2, - 0xab, 0x5e, 0x51, 0xdb, 0xeb, 0x15, 0xb5, 0x97, 0xbd, 0xa2, 0xf6, 0x57, 0xaf, 0xa8, 0x7d, 0xf7, - 0xaa, 0x38, 0xf1, 0x64, 0x46, 0x29, 0xf2, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd6, 0xb9, 0xde, - 0x1a, 0x56, 0x15, 0x00, 0x00, + // 1563 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0xcb, 0x6f, 0x1b, 0x37, + 0x13, 0xf7, 0xda, 0x92, 0x2d, 0xd3, 0xb1, 0x1c, 0xd3, 0xfe, 0x62, 0x7d, 0xce, 0x07, 0x39, 0xd0, + 0x21, 0x8f, 0x0f, 0xc9, 0xaa, 0x71, 0xd2, 0xbc, 0xdc, 0x06, 0xb5, 0x92, 0x34, 0x4d, 0x61, 0x37, + 0x06, 0x65, 0x07, 0x4d, 0x9a, 0x02, 0xa5, 0x24, 0x66, 0xcd, 0x78, 0x5f, 0x58, 0x52, 0x82, 0x75, + 0xeb, 0xa5, 0x87, 0x02, 0x3d, 0xf4, 0xd4, 0x5b, 0xd1, 0x9e, 0x8b, 0x02, 0xfd, 0x37, 0x8c, 0xf6, + 0x92, 0x63, 0xd1, 0x83, 0x51, 0x3b, 0xff, 0x45, 0x4e, 0x05, 0xb9, 0xdc, 0x97, 0x76, 0x65, 0xcb, + 0x2a, 0x9a, 0x4b, 0x6f, 0x5a, 0xce, 0xfc, 0x7e, 0x33, 0x24, 0x67, 0x86, 0x33, 0x02, 0x37, 0x77, + 0x6e, 0x31, 0x9d, 0x3a, 0xd5, 0x9d, 0x76, 0x83, 0x78, 0x36, 0xe1, 0x84, 0x55, 0xdd, 0x1d, 0xa3, + 0x8a, 0x5d, 0xca, 0xaa, 0xd8, 0x75, 0x59, 0xb5, 0x73, 0xb5, 0x41, 0x38, 0xbe, 0x5a, 0x35, 0x88, + 0x4d, 0x3c, 0xcc, 0x49, 0x4b, 0x77, 0x3d, 0x87, 0x3b, 0xf0, 0x82, 0x0f, 0xd4, 0x23, 0xa0, 0xee, + 0xee, 0x18, 0xba, 0x00, 0xea, 0x02, 0xa8, 0x2b, 0xe0, 0xe2, 0x15, 0x83, 0xf2, 0xed, 0x76, 0x43, + 0x6f, 0x3a, 0x56, 0xd5, 0x70, 0x0c, 0xa7, 0x2a, 0xf1, 0x8d, 0xf6, 0x0b, 0xf9, 0x25, 0x3f, 0xe4, + 0x2f, 0x9f, 0x77, 0xf1, 0xba, 0x72, 0x08, 0xbb, 0xd4, 0xc2, 0xcd, 0x6d, 0x6a, 0x13, 0xaf, 0x1b, + 0xb9, 0x64, 0x11, 0x8e, 0xab, 0x9d, 0x94, 0x37, 0x8b, 0xd5, 0x7e, 0x28, 0xaf, 0x6d, 0x73, 0x6a, + 0x91, 0x14, 0xe0, 0xc6, 0x71, 0x00, 0xd6, 0xdc, 0x26, 0x16, 0x4e, 0xe1, 0xae, 0xf5, 0xc3, 0xb5, + 0x39, 0x35, 0xab, 0xd4, 0xe6, 0x8c, 0x7b, 0x29, 0x50, 0x6c, 0x4f, 0x8c, 0x78, 0x1d, 0xe2, 0x45, + 0x1b, 0x22, 0xbb, 0xd8, 0x72, 0x4d, 0x92, 0xb5, 0xa7, 0xcb, 0x7d, 0xaf, 0x26, 0x4b, 0xfb, 0xfd, + 0x23, 0x2e, 0x92, 0xec, 0x72, 0x62, 0x33, 0xea, 0xd8, 0x7d, 0xaf, 0xb3, 0xf2, 0xf3, 0x28, 0x00, + 0xf7, 0x89, 0x6b, 0x3a, 0x5d, 0x8b, 0xd8, 0x1c, 0x7e, 0x01, 0x0a, 0xe2, 0xa8, 0x5b, 0x98, 0xe3, + 0x92, 0x76, 0x4e, 0xbb, 0x38, 0xb5, 0xfc, 0x8e, 0xae, 0x2e, 0x3c, 0xbe, 0xf3, 0xe8, 0xca, 0x85, + 0xb6, 0xde, 0xb9, 0xaa, 0x3f, 0x6e, 0xbc, 0x24, 0x4d, 0xbe, 0x4e, 0x38, 0xae, 0xc1, 0xbd, 0xfd, + 0xa5, 0x91, 0xc3, 0xfd, 0x25, 0x10, 0xad, 0xa1, 0x90, 0x15, 0x3e, 0x05, 0x39, 0xe6, 0x92, 0x66, + 0x69, 0x54, 0xb2, 0xdf, 0xd4, 0x07, 0x0c, 0x27, 0x3d, 0x72, 0xb2, 0xee, 0x92, 0x66, 0xed, 0x94, + 0x32, 0x92, 0x13, 0x5f, 0x48, 0x52, 0x42, 0x0c, 0xc6, 0x19, 0xc7, 0xbc, 0xcd, 0x4a, 0x63, 0x92, + 0xfc, 0xf6, 0x30, 0xe4, 0x92, 0xa0, 0x56, 0x54, 0xf4, 0xe3, 0xfe, 0x37, 0x52, 0xc4, 0x95, 0x83, + 0x31, 0x30, 0x17, 0x29, 0xdf, 0x73, 0xec, 0x16, 0xe5, 0xd4, 0xb1, 0xe1, 0x0a, 0xc8, 0xf1, 0xae, + 0x4b, 0xe4, 0x99, 0x4d, 0xd6, 0x2e, 0x04, 0xce, 0x6d, 0x76, 0x5d, 0xf2, 0x66, 0x7f, 0x69, 0x21, + 0x03, 0x22, 0x44, 0x48, 0x82, 0xe0, 0x93, 0xd0, 0xef, 0x51, 0x09, 0xbf, 0x9b, 0x34, 0xfe, 0x66, + 0x7f, 0xe9, 0xc8, 0x90, 0xd0, 0x43, 0xce, 0xa4, 0xb3, 0xf0, 0x3c, 0x18, 0xf7, 0x08, 0x66, 0x8e, + 0x5d, 0xca, 0x49, 0xde, 0x70, 0x53, 0x48, 0xae, 0x22, 0x25, 0x85, 0x97, 0xc0, 0x84, 0x45, 0x18, + 0xc3, 0x06, 0x29, 0xe5, 0xa5, 0xe2, 0x8c, 0x52, 0x9c, 0x58, 0xf7, 0x97, 0x51, 0x20, 0x87, 0x2f, + 0x41, 0xd1, 0xc4, 0x8c, 0x6f, 0xb9, 0x2d, 0xcc, 0xc9, 0x26, 0xb5, 0x48, 0x69, 0x5c, 0x1e, 0xf5, + 0xff, 0x07, 0x8b, 0x12, 0x81, 0xa8, 0x9d, 0x51, 0xec, 0xc5, 0xb5, 0x04, 0x13, 0xea, 0x61, 0x86, + 0x1d, 0x00, 0xc5, 0xca, 0xa6, 0x87, 0x6d, 0xe6, 0x1f, 0x99, 0xb0, 0x37, 0x71, 0x62, 0x7b, 0x8b, + 0xca, 0x1e, 0x5c, 0x4b, 0xb1, 0xa1, 0x0c, 0x0b, 0x95, 0x3d, 0x0d, 0x14, 0xa3, 0x0b, 0x5b, 0xa3, + 0x8c, 0xc3, 0xe7, 0xa9, 0xb4, 0xd0, 0x07, 0x73, 0x40, 0xa0, 0x65, 0x52, 0x9c, 0x56, 0x4e, 0x14, + 0x82, 0x95, 0x58, 0x4a, 0x7c, 0x0a, 0xf2, 0x94, 0x13, 0x4b, 0x5c, 0xff, 0xd8, 0xc5, 0xa9, 0xe5, + 0x6b, 0x43, 0x84, 0x6d, 0x6d, 0x5a, 0xf1, 0xe7, 0x1f, 0x09, 0x26, 0xe4, 0x13, 0x56, 0xbe, 0x19, + 0x03, 0x30, 0x52, 0x42, 0x8e, 0x69, 0x36, 0x70, 0x73, 0x07, 0x9e, 0x03, 0x39, 0x1b, 0x5b, 0x41, + 0xb4, 0x86, 0xa9, 0xf4, 0x09, 0xb6, 0x08, 0x92, 0x12, 0xf8, 0x83, 0x06, 0x60, 0x5b, 0x5e, 0x45, + 0x6b, 0xd5, 0xb6, 0x1d, 0x8e, 0xc5, 0xe9, 0x04, 0x0e, 0xd6, 0x87, 0x70, 0x30, 0xb0, 0xad, 0x6f, + 0xa5, 0x58, 0x1f, 0xd8, 0xdc, 0xeb, 0x46, 0xb7, 0x94, 0x56, 0x40, 0x19, 0xae, 0xc0, 0x1d, 0x00, + 0x3c, 0xc5, 0xb9, 0xe9, 0xa8, 0x84, 0x1f, 0xbc, 0x9a, 0x04, 0xee, 0xdc, 0x73, 0xec, 0x17, 0xd4, + 0x88, 0x4a, 0x16, 0x0a, 0x29, 0x51, 0x8c, 0x7e, 0xf1, 0x01, 0x58, 0xe8, 0xe3, 0x37, 0x3c, 0x0d, + 0xc6, 0x76, 0x48, 0xd7, 0x3f, 0x4a, 0x24, 0x7e, 0xc2, 0x79, 0x90, 0xef, 0x60, 0xb3, 0x4d, 0xfc, + 0x6c, 0x46, 0xfe, 0xc7, 0x9d, 0xd1, 0x5b, 0x5a, 0xe5, 0x8f, 0x7c, 0x3c, 0xb2, 0x44, 0xe5, 0x82, + 0x17, 0x41, 0xc1, 0x23, 0xae, 0x49, 0x9b, 0x98, 0x49, 0x8e, 0x7c, 0xed, 0x94, 0x88, 0x12, 0xa4, + 0xd6, 0x50, 0x28, 0x85, 0x9f, 0x83, 0x02, 0x23, 0x26, 0x69, 0x72, 0xc7, 0x53, 0xc5, 0xf3, 0xda, + 0x80, 0x31, 0x88, 0x1b, 0xc4, 0xac, 0x2b, 0xa8, 0x4f, 0x1f, 0x7c, 0xa1, 0x90, 0x12, 0x7e, 0x06, + 0x0a, 0x9c, 0x58, 0xae, 0x89, 0x39, 0x51, 0xa7, 0x79, 0xa5, 0xff, 0x69, 0x0a, 0xda, 0x0d, 0xa7, + 0xb5, 0xa9, 0x00, 0xb2, 0x22, 0x87, 0x11, 0x1e, 0xac, 0xa2, 0x90, 0x10, 0x52, 0x50, 0x60, 0x5c, + 0x3c, 0x3b, 0x46, 0x57, 0xd6, 0xa2, 0xa9, 0xe5, 0x95, 0xa1, 0x6a, 0xb3, 0x4f, 0x11, 0x99, 0x0a, + 0x56, 0x50, 0x48, 0x0f, 0x57, 0xc1, 0x8c, 0x45, 0x6d, 0x44, 0x70, 0xab, 0x5b, 0x27, 0x4d, 0xc7, + 0x6e, 0x31, 0x59, 0xd4, 0xf2, 0xb5, 0x05, 0x05, 0x9a, 0x59, 0x4f, 0x8a, 0x51, 0xaf, 0x3e, 0x5c, + 0x03, 0xf3, 0x1e, 0xe9, 0x50, 0xf1, 0x70, 0x7e, 0x44, 0x19, 0x77, 0xbc, 0xee, 0x1a, 0xb5, 0x28, + 0x97, 0xa5, 0x2e, 0x5f, 0x2b, 0x1d, 0xee, 0x2f, 0xcd, 0xa3, 0x0c, 0x39, 0xca, 0x44, 0x89, 0x2a, + 0xec, 0xe2, 0x36, 0x23, 0x2d, 0x59, 0xba, 0x0a, 0x51, 0x15, 0xde, 0x90, 0xab, 0x48, 0x49, 0xa1, + 0x91, 0x08, 0xe8, 0xc2, 0xdf, 0x0b, 0xe8, 0x62, 0xff, 0x60, 0x86, 0x5b, 0x60, 0xc1, 0xf5, 0x1c, + 0xc3, 0x23, 0x8c, 0xdd, 0x27, 0xb8, 0x65, 0x52, 0x9b, 0x04, 0x27, 0x35, 0x29, 0x77, 0x78, 0xf6, + 0x70, 0x7f, 0x69, 0x61, 0x23, 0x5b, 0x05, 0xf5, 0xc3, 0x56, 0xbe, 0xcb, 0x81, 0xd3, 0xbd, 0xef, + 0x28, 0xfc, 0x18, 0x40, 0xa7, 0x21, 0x7b, 0x9f, 0xd6, 0x43, 0xbf, 0xf3, 0xa0, 0x8e, 0x2d, 0x03, + 0x7d, 0x2c, 0xca, 0xf8, 0xc7, 0x29, 0x0d, 0x94, 0x81, 0x82, 0x97, 0x63, 0xa9, 0x32, 0x2a, 0x1d, + 0x0d, 0xe3, 0x20, 0x23, 0x5d, 0x56, 0xc1, 0x8c, 0xaa, 0x1a, 0x81, 0x50, 0x86, 0x75, 0x2c, 0x0e, + 0xb6, 0x92, 0x62, 0xd4, 0xab, 0x0f, 0x1f, 0x82, 0x59, 0xdc, 0xc1, 0xd4, 0xc4, 0x0d, 0x93, 0x84, + 0x24, 0x39, 0x49, 0xf2, 0x5f, 0x45, 0x32, 0xbb, 0xda, 0xab, 0x80, 0xd2, 0x18, 0xb8, 0x0e, 0xe6, + 0xda, 0x76, 0x9a, 0xca, 0x8f, 0xcb, 0xb3, 0x8a, 0x6a, 0x6e, 0x2b, 0xad, 0x82, 0xb2, 0x70, 0xd0, + 0x05, 0xa0, 0x19, 0x3c, 0xf9, 0xac, 0x34, 0x2e, 0x6b, 0xf2, 0x7b, 0x43, 0xe4, 0x53, 0xd8, 0x37, + 0x44, 0xf5, 0x2f, 0x5c, 0x62, 0x28, 0x66, 0x03, 0xae, 0x80, 0x69, 0x4f, 0x64, 0x48, 0xe8, 0xfa, + 0x84, 0x74, 0xfd, 0x3f, 0x0a, 0x36, 0x8d, 0xe2, 0x42, 0x94, 0xd4, 0xad, 0xfc, 0xa6, 0xc5, 0x1f, + 0xa1, 0x20, 0x65, 0xe1, 0x9d, 0x44, 0xcb, 0x74, 0xbe, 0xa7, 0x65, 0x3a, 0x93, 0x46, 0xc4, 0x3a, + 0xa6, 0x2e, 0x98, 0x16, 0x01, 0x4d, 0x6d, 0xc3, 0xbf, 0x44, 0x55, 0x10, 0x3f, 0x38, 0x51, 0xba, + 0x84, 0xe8, 0xd8, 0x33, 0x3a, 0x2b, 0x77, 0x13, 0x17, 0xa2, 0xa4, 0xa5, 0xca, 0x5d, 0x50, 0x4c, + 0xe6, 0x9a, 0x1f, 0x97, 0x7e, 0xe2, 0xab, 0xc8, 0x8e, 0xc5, 0xa5, 0xbf, 0x8e, 0x42, 0x8d, 0xca, + 0x6b, 0x0d, 0x2c, 0xf4, 0xb1, 0x0e, 0x4d, 0x50, 0xb4, 0xf0, 0x6e, 0x2c, 0x0e, 0x8e, 0xed, 0xc1, + 0xc5, 0xf4, 0xa1, 0xfb, 0xd3, 0x87, 0xfe, 0xc8, 0xe6, 0x8f, 0xbd, 0x3a, 0xf7, 0xa8, 0x6d, 0xd4, + 0xa0, 0xe8, 0xaf, 0xd6, 0x13, 0x5c, 0xa8, 0x87, 0x1b, 0x3e, 0x03, 0x05, 0x0b, 0xef, 0xd6, 0xdb, + 0x9e, 0x11, 0x9c, 0xdf, 0xc9, 0xed, 0xc8, 0xd7, 0x64, 0x5d, 0xb1, 0xa0, 0x90, 0xaf, 0xf2, 0xfd, + 0x28, 0xc8, 0xd7, 0x9b, 0xd8, 0x24, 0x6f, 0x61, 0xa2, 0xd8, 0x4c, 0x4c, 0x14, 0xcb, 0x03, 0xc7, + 0x80, 0xf4, 0xaf, 0xef, 0x30, 0xf1, 0xbc, 0x67, 0x98, 0xb8, 0x7e, 0x42, 0xde, 0xa3, 0xe7, 0x88, + 0xdb, 0x60, 0x32, 0x34, 0x9f, 0x28, 0x6c, 0xda, 0x71, 0x85, 0xad, 0xf2, 0xd3, 0x28, 0x98, 0x8a, + 0x99, 0x38, 0x19, 0x1a, 0xba, 0x89, 0x2e, 0x42, 0x54, 0x8e, 0xda, 0x30, 0x1b, 0xd3, 0x83, 0x0e, + 0xc2, 0x6f, 0xde, 0xa2, 0x07, 0x39, 0xdd, 0x58, 0xdc, 0x05, 0x45, 0x8e, 0x3d, 0x83, 0xf0, 0x40, + 0x26, 0x0f, 0x74, 0x32, 0x1a, 0x03, 0x36, 0x13, 0x52, 0xd4, 0xa3, 0xbd, 0xb8, 0x02, 0xa6, 0x13, + 0xc6, 0x4e, 0xd4, 0x71, 0xfd, 0x22, 0x0e, 0x8b, 0x63, 0x4e, 0x5e, 0xb4, 0xcd, 0x3a, 0x79, 0x1b, + 0xf3, 0xed, 0xb3, 0x44, 0x34, 0xde, 0x1a, 0xfc, 0x70, 0x23, 0x2f, 0xfb, 0xc6, 0x64, 0xa3, 0x27, + 0x26, 0xef, 0x0c, 0xc5, 0x7e, 0x74, 0x64, 0xfe, 0xaa, 0x81, 0x99, 0x98, 0xf6, 0x5b, 0x18, 0x7f, + 0x9e, 0x26, 0xc7, 0x9f, 0xeb, 0xc3, 0x6c, 0xaa, 0xcf, 0xfc, 0xf3, 0x63, 0x2e, 0xb1, 0x99, 0x7f, + 0x51, 0xc7, 0xfd, 0x95, 0x06, 0xe6, 0x3b, 0x8e, 0xd9, 0xb6, 0xc8, 0x3d, 0x13, 0x53, 0x2b, 0xd0, + 0x10, 0xfd, 0xcb, 0x31, 0x33, 0xa6, 0xb4, 0x44, 0x3c, 0x46, 0x19, 0x27, 0x36, 0x7f, 0x12, 0x71, + 0xd4, 0xfe, 0xa7, 0xec, 0xcd, 0x3f, 0xc9, 0x20, 0x46, 0x99, 0xe6, 0xe0, 0xbb, 0x60, 0x4a, 0x34, + 0x72, 0xb4, 0x49, 0xc4, 0x74, 0xa9, 0xfe, 0x5f, 0x98, 0x53, 0x44, 0x53, 0xf5, 0x48, 0x84, 0xe2, + 0x7a, 0x70, 0x1b, 0xcc, 0xb9, 0x4e, 0x6b, 0x1d, 0xdb, 0xd8, 0x20, 0xe2, 0x69, 0xdc, 0x70, 0x4c, + 0xda, 0xec, 0xca, 0x0e, 0x7c, 0xb2, 0x76, 0x23, 0xe8, 0x98, 0x36, 0xd2, 0x2a, 0x6f, 0x44, 0xeb, + 0x9a, 0x5e, 0x96, 0xbd, 0x43, 0x16, 0x65, 0xe5, 0x6b, 0x0d, 0xcc, 0xa6, 0xb2, 0x03, 0x7e, 0x78, + 0x44, 0xdf, 0x7a, 0xe6, 0x9f, 0xea, 0x59, 0x6b, 0x97, 0xf6, 0x0e, 0xca, 0x23, 0xaf, 0x0e, 0xca, + 0x23, 0xbf, 0x1f, 0x94, 0x47, 0xbe, 0x3c, 0x2c, 0x6b, 0x7b, 0x87, 0x65, 0xed, 0xd5, 0x61, 0x59, + 0xfb, 0xf3, 0xb0, 0xac, 0x7d, 0xfb, 0xba, 0x3c, 0xf2, 0x6c, 0x42, 0xc5, 0xfe, 0x5f, 0x01, 0x00, + 0x00, 0xff, 0xff, 0xdf, 0x80, 0xf3, 0x34, 0xc0, 0x15, 0x00, 0x00, } diff --git a/pkg/apis/apps/v1beta1/generated.proto b/pkg/apis/apps/v1beta1/generated.proto index 537ae2d5..86991978 100644 --- a/pkg/apis/apps/v1beta1/generated.proto +++ b/pkg/apis/apps/v1beta1/generated.proto @@ -294,7 +294,7 @@ message StatefulSetList { // A StatefulSetSpec is the specification of a StatefulSet. message StatefulSetSpec { - // Replicas is the desired number of replicas of the given Template. + // replicas is the desired number of replicas of the given Template. // These are replicas in the sense that they are instantiations of the // same Template, but individual replicas also have a consistent identity. // If unspecified, defaults to 1. @@ -302,19 +302,19 @@ message StatefulSetSpec { // +optional optional int32 replicas = 1; - // Selector is a label query over pods that should match the replica count. + // selector is a label query over pods that should match the replica count. // If empty, defaulted to labels on the pod template. // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors // +optional optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2; - // Template is the object that describes the pod that will be created if + // template is the object that describes the pod that will be created if // insufficient replicas are detected. Each pod stamped out by the StatefulSet // will fulfill this Template, but have a unique identity from the rest // of the StatefulSet. optional k8s.io.kubernetes.pkg.api.v1.PodTemplateSpec template = 3; - // VolumeClaimTemplates is a list of claims that pods are allowed to reference. + // volumeClaimTemplates is a list of claims that pods are allowed to reference. // The StatefulSet controller is responsible for mapping network identities to // claims in a way that maintains the identity of a pod. Every claim in // this list must have at least one matching (by name) volumeMount in one @@ -324,21 +324,32 @@ message StatefulSetSpec { // +optional repeated k8s.io.kubernetes.pkg.api.v1.PersistentVolumeClaim volumeClaimTemplates = 4; - // ServiceName is the name of the service that governs this StatefulSet. + // serviceName is the name of the service that governs this StatefulSet. // This service must exist before the StatefulSet, and is responsible for // the network identity of the set. Pods get DNS/hostnames that follow the // pattern: pod-specific-string.serviceName.default.svc.cluster.local // where "pod-specific-string" is managed by the StatefulSet controller. optional string serviceName = 5; + + // podManagementPolicy controls how pods are created during initial scale up, + // when replacing pods on nodes, or when scaling down. The default policy is + // `OrderedReady`, where pods are created in increasing order (pod-0, then + // pod-1, etc) and the controller will wait until each pod is ready before + // continuing. When scaling down, the pods are removed in the opposite order. + // The alternative policy is `Parallel` which will create pods in parallel + // to match the desired scale without waiting, and on scale down will delete + // all pods at once. + // +optional + optional string podManagementPolicy = 6; } // StatefulSetStatus represents the current state of a StatefulSet. message StatefulSetStatus { - // most recent generation observed by this StatefulSet. + // observedGeneration is the most recent generation observed by this StatefulSet. // +optional optional int64 observedGeneration = 1; - // Replicas is the number of actual replicas. + // replicas is the number of actual replicas. optional int32 replicas = 2; } diff --git a/pkg/apis/apps/v1beta1/types.generated.go b/pkg/apis/apps/v1beta1/types.generated.go index 50a9d81e..72d486de 100644 --- a/pkg/apis/apps/v1beta1/types.generated.go +++ b/pkg/apis/apps/v1beta1/types.generated.go @@ -1340,6 +1340,32 @@ func (x *StatefulSet) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) } +func (x PodManagementPolicyType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PodManagementPolicyType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + func (x *StatefulSetSpec) CodecEncodeSelf(e *codec1978.Encoder) { var h codecSelfer1234 z, r := codec1978.GenHelperEncoder(e) @@ -1354,15 +1380,16 @@ func (x *StatefulSetSpec) CodecEncodeSelf(e *codec1978.Encoder) { } else { yysep2 := !z.EncBinary() yy2arr2 := z.EncBasicHandle().StructToArray - var yyq2 [5]bool + var yyq2 [6]bool _, _, _ = yysep2, yyq2, yy2arr2 const yyr2 bool = false yyq2[0] = x.Replicas != nil yyq2[1] = x.Selector != nil yyq2[3] = len(x.VolumeClaimTemplates) != 0 + yyq2[5] = x.PodManagementPolicy != "" var yynn2 int if yyr2 || yy2arr2 { - r.EncodeArrayStart(5) + r.EncodeArrayStart(6) } else { yynn2 = 2 for _, b := range yyq2 { @@ -1506,6 +1533,21 @@ func (x *StatefulSetSpec) CodecEncodeSelf(e *codec1978.Encoder) { r.EncodeString(codecSelferC_UTF81234, string(x.ServiceName)) } } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + x.PodManagementPolicy.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podManagementPolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.PodManagementPolicy.CodecEncodeSelf(e) + } + } if yyr2 || yy2arr2 { z.EncSendContainerState(codecSelfer_containerArrayEnd1234) } else { @@ -1631,6 +1673,13 @@ func (x *StatefulSetSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { *((*string)(yyv11)) = r.DecodeString() } } + case "podManagementPolicy": + if r.TryDecodeAsNil() { + x.PodManagementPolicy = "" + } else { + yyv13 := &x.PodManagementPolicy + yyv13.CodecDecodeSelf(d) + } default: z.DecStructFieldNotFound(-1, yys3) } // end switch yys3 @@ -1642,16 +1691,16 @@ func (x *StatefulSetSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) var h codecSelfer1234 z, r := codec1978.GenHelperDecoder(d) _, _, _ = h, z, r - var yyj13 int - var yyb13 bool - var yyhl13 bool = l >= 0 - yyj13++ - if yyhl13 { - yyb13 = yyj13 > l + var yyj14 int + var yyb14 bool + var yyhl14 bool = l >= 0 + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l } else { - yyb13 = r.CheckBreak() + yyb14 = r.CheckBreak() } - if yyb13 { + if yyb14 { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) return } @@ -1664,20 +1713,20 @@ func (x *StatefulSetSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) if x.Replicas == nil { x.Replicas = new(int32) } - yym15 := z.DecBinary() - _ = yym15 + yym16 := z.DecBinary() + _ = yym16 if false { } else { *((*int32)(x.Replicas)) = int32(r.DecodeInt(32)) } } - yyj13++ - if yyhl13 { - yyb13 = yyj13 > l + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l } else { - yyb13 = r.CheckBreak() + yyb14 = r.CheckBreak() } - if yyb13 { + if yyb14 { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) return } @@ -1690,21 +1739,21 @@ func (x *StatefulSetSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) if x.Selector == nil { x.Selector = new(pkg1_v1.LabelSelector) } - yym17 := z.DecBinary() - _ = yym17 + yym18 := z.DecBinary() + _ = yym18 if false { } else if z.HasExtensions() && z.DecExt(x.Selector) { } else { z.DecFallback(x.Selector, false) } } - yyj13++ - if yyhl13 { - yyb13 = yyj13 > l + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l } else { - yyb13 = r.CheckBreak() + yyb14 = r.CheckBreak() } - if yyb13 { + if yyb14 { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) return } @@ -1712,16 +1761,16 @@ func (x *StatefulSetSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) if r.TryDecodeAsNil() { x.Template = pkg3_v1.PodTemplateSpec{} } else { - yyv18 := &x.Template - yyv18.CodecDecodeSelf(d) + yyv19 := &x.Template + yyv19.CodecDecodeSelf(d) } - yyj13++ - if yyhl13 { - yyb13 = yyj13 > l + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l } else { - yyb13 = r.CheckBreak() + yyb14 = r.CheckBreak() } - if yyb13 { + if yyb14 { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) return } @@ -1729,21 +1778,21 @@ func (x *StatefulSetSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) if r.TryDecodeAsNil() { x.VolumeClaimTemplates = nil } else { - yyv19 := &x.VolumeClaimTemplates - yym20 := z.DecBinary() - _ = yym20 + yyv20 := &x.VolumeClaimTemplates + yym21 := z.DecBinary() + _ = yym21 if false { } else { - h.decSlicev1_PersistentVolumeClaim((*[]pkg3_v1.PersistentVolumeClaim)(yyv19), d) + h.decSlicev1_PersistentVolumeClaim((*[]pkg3_v1.PersistentVolumeClaim)(yyv20), d) } } - yyj13++ - if yyhl13 { - yyb13 = yyj13 > l + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l } else { - yyb13 = r.CheckBreak() + yyb14 = r.CheckBreak() } - if yyb13 { + if yyb14 { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) return } @@ -1751,26 +1800,43 @@ func (x *StatefulSetSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) if r.TryDecodeAsNil() { x.ServiceName = "" } else { - yyv21 := &x.ServiceName - yym22 := z.DecBinary() - _ = yym22 + yyv22 := &x.ServiceName + yym23 := z.DecBinary() + _ = yym23 if false { } else { - *((*string)(yyv21)) = r.DecodeString() + *((*string)(yyv22)) = r.DecodeString() } } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodManagementPolicy = "" + } else { + yyv24 := &x.PodManagementPolicy + yyv24.CodecDecodeSelf(d) + } for { - yyj13++ - if yyhl13 { - yyb13 = yyj13 > l + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l } else { - yyb13 = r.CheckBreak() + yyb14 = r.CheckBreak() } - if yyb13 { + if yyb14 { break } z.DecSendContainerState(codecSelfer_containerArrayElem1234) - z.DecStructFieldNotFound(yyj13-1, "") + z.DecStructFieldNotFound(yyj14-1, "") } z.DecSendContainerState(codecSelfer_containerArrayEnd1234) } @@ -6166,7 +6232,7 @@ func (x codecSelfer1234) decSliceStatefulSet(v *[]StatefulSet, d *codec1978.Deco yyrg1 := len(yyv1) > 0 yyv21 := yyv1 - yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 896) + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 912) if yyrt1 { if yyrl1 <= cap(yyv1) { yyv1 = yyv1[:yyrl1] diff --git a/pkg/apis/apps/v1beta1/types.go b/pkg/apis/apps/v1beta1/types.go index ee80fbc3..cd1d2c2f 100644 --- a/pkg/apis/apps/v1beta1/types.go +++ b/pkg/apis/apps/v1beta1/types.go @@ -95,9 +95,24 @@ type StatefulSet struct { Status StatefulSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` } +// PodManagementPolicyType defines the policy for creating pods under a stateful set. +type PodManagementPolicyType string + +const ( + // OrderedReadyPodManagement will create pods in strictly increasing order on + // scale up and strictly decreasing order on scale down, progressing only when + // the previous pod is ready or terminated. At most one pod will be changed + // at any time. + OrderedReadyPodManagement PodManagementPolicyType = "OrderedReady" + // ParallelPodManagement will create and delete pods as soon as the stateful set + // replica count is changed, and will not wait for pods to be ready or complete + // termination. + ParallelPodManagement = "Parallel" +) + // A StatefulSetSpec is the specification of a StatefulSet. type StatefulSetSpec struct { - // Replicas is the desired number of replicas of the given Template. + // replicas is the desired number of replicas of the given Template. // These are replicas in the sense that they are instantiations of the // same Template, but individual replicas also have a consistent identity. // If unspecified, defaults to 1. @@ -105,19 +120,19 @@ type StatefulSetSpec struct { // +optional Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"` - // Selector is a label query over pods that should match the replica count. + // selector is a label query over pods that should match the replica count. // If empty, defaulted to labels on the pod template. // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors // +optional Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,2,opt,name=selector"` - // Template is the object that describes the pod that will be created if + // template is the object that describes the pod that will be created if // insufficient replicas are detected. Each pod stamped out by the StatefulSet // will fulfill this Template, but have a unique identity from the rest // of the StatefulSet. Template v1.PodTemplateSpec `json:"template" protobuf:"bytes,3,opt,name=template"` - // VolumeClaimTemplates is a list of claims that pods are allowed to reference. + // volumeClaimTemplates is a list of claims that pods are allowed to reference. // The StatefulSet controller is responsible for mapping network identities to // claims in a way that maintains the identity of a pod. Every claim in // this list must have at least one matching (by name) volumeMount in one @@ -127,21 +142,32 @@ type StatefulSetSpec struct { // +optional VolumeClaimTemplates []v1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty" protobuf:"bytes,4,rep,name=volumeClaimTemplates"` - // ServiceName is the name of the service that governs this StatefulSet. + // serviceName is the name of the service that governs this StatefulSet. // This service must exist before the StatefulSet, and is responsible for // the network identity of the set. Pods get DNS/hostnames that follow the // pattern: pod-specific-string.serviceName.default.svc.cluster.local // where "pod-specific-string" is managed by the StatefulSet controller. ServiceName string `json:"serviceName" protobuf:"bytes,5,opt,name=serviceName"` + + // podManagementPolicy controls how pods are created during initial scale up, + // when replacing pods on nodes, or when scaling down. The default policy is + // `OrderedReady`, where pods are created in increasing order (pod-0, then + // pod-1, etc) and the controller will wait until each pod is ready before + // continuing. When scaling down, the pods are removed in the opposite order. + // The alternative policy is `Parallel` which will create pods in parallel + // to match the desired scale without waiting, and on scale down will delete + // all pods at once. + // +optional + PodManagementPolicy PodManagementPolicyType `json:"podManagementPolicy,omitempty" protobuf:"bytes,6,opt,name=podManagementPolicy,casttype=PodManagementPolicyType"` } // StatefulSetStatus represents the current state of a StatefulSet. type StatefulSetStatus struct { - // most recent generation observed by this StatefulSet. + // observedGeneration is the most recent generation observed by this StatefulSet. // +optional ObservedGeneration *int64 `json:"observedGeneration,omitempty" protobuf:"varint,1,opt,name=observedGeneration"` - // Replicas is the number of actual replicas. + // replicas is the number of actual replicas. Replicas int32 `json:"replicas" protobuf:"varint,2,opt,name=replicas"` } diff --git a/pkg/apis/apps/v1beta1/types_swagger_doc_generated.go b/pkg/apis/apps/v1beta1/types_swagger_doc_generated.go index 15c73ae9..f40254cb 100644 --- a/pkg/apis/apps/v1beta1/types_swagger_doc_generated.go +++ b/pkg/apis/apps/v1beta1/types_swagger_doc_generated.go @@ -184,11 +184,12 @@ func (StatefulSetList) SwaggerDoc() map[string]string { var map_StatefulSetSpec = map[string]string{ "": "A StatefulSetSpec is the specification of a StatefulSet.", - "replicas": "Replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1.", - "selector": "Selector is a label query over pods that should match the replica count. If empty, defaulted to labels on the pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", - "template": "Template is the object that describes the pod that will be created if insufficient replicas are detected. Each pod stamped out by the StatefulSet will fulfill this Template, but have a unique identity from the rest of the StatefulSet.", - "volumeClaimTemplates": "VolumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.", - "serviceName": "ServiceName is the name of the service that governs this StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where \"pod-specific-string\" is managed by the StatefulSet controller.", + "replicas": "replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1.", + "selector": "selector is a label query over pods that should match the replica count. If empty, defaulted to labels on the pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", + "template": "template is the object that describes the pod that will be created if insufficient replicas are detected. Each pod stamped out by the StatefulSet will fulfill this Template, but have a unique identity from the rest of the StatefulSet.", + "volumeClaimTemplates": "volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.", + "serviceName": "serviceName is the name of the service that governs this StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where \"pod-specific-string\" is managed by the StatefulSet controller.", + "podManagementPolicy": "podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.", } func (StatefulSetSpec) SwaggerDoc() map[string]string { @@ -197,8 +198,8 @@ func (StatefulSetSpec) SwaggerDoc() map[string]string { var map_StatefulSetStatus = map[string]string{ "": "StatefulSetStatus represents the current state of a StatefulSet.", - "observedGeneration": "most recent generation observed by this StatefulSet.", - "replicas": "Replicas is the number of actual replicas.", + "observedGeneration": "observedGeneration is the most recent generation observed by this StatefulSet.", + "replicas": "replicas is the number of actual replicas.", } func (StatefulSetStatus) SwaggerDoc() map[string]string { diff --git a/pkg/apis/apps/v1beta1/zz_generated.conversion.go b/pkg/apis/apps/v1beta1/zz_generated.conversion.go index 55e36637..87ce6d4c 100644 --- a/pkg/apis/apps/v1beta1/zz_generated.conversion.go +++ b/pkg/apis/apps/v1beta1/zz_generated.conversion.go @@ -133,6 +133,7 @@ func autoConvert_v1beta1_StatefulSetSpec_To_apps_StatefulSetSpec(in *StatefulSet } out.VolumeClaimTemplates = *(*[]api.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates)) out.ServiceName = in.ServiceName + out.PodManagementPolicy = apps.PodManagementPolicyType(in.PodManagementPolicy) return nil } @@ -146,6 +147,7 @@ func autoConvert_apps_StatefulSetSpec_To_v1beta1_StatefulSetSpec(in *apps.Statef } out.VolumeClaimTemplates = *(*[]api_v1.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates)) out.ServiceName = in.ServiceName + out.PodManagementPolicy = PodManagementPolicyType(in.PodManagementPolicy) return nil }