Code change:
<ins> /* Copyright 2016 The Kubernetes Authors 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. */ // This file was autogenerated by go-to-protobuf. Do not edit it manually! syntax = 'proto2'; package k8s.io.kubernetes.pkg.apis.apps.v1alpha1; import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1alpha1"; // PetSet represents a set of pods with consistent identities. // Identities are defined as: //  - Network: A single stable DNS and hostname. //  - Storage: As many VolumeClaims as requested. // The PetSet guarantees that a given network identity will always // map to the same storage identity. PetSet is currently in alpha // and subject to change without notice. message PetSet { optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; // Spec defines the desired identities of pets in this set. optional PetSetSpec spec = 2; // Status is the current status of Pets in this PetSet. This data // may be out of date by some window of time. optional PetSetStatus status = 3; } // PetSetList is a collection of PetSets. message PetSetList { optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; repeated PetSet items = 2; } // A PetSetSpec is the specification of a PetSet. message PetSetSpec { // 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. // TODO: Consider a rename of this field. optional int32 replicas = 1; // Selector is a label query over pods that should match the replica count. // If empty, defaulted to labels on the pod template. // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors optional k8s.io.kubernetes.pkg.api.unversioned.LabelSelector selector = 2; // Template is the object that describes the pod that will be created if // insufficient replicas are detected. Each pod stamped out by the PetSet // will fulfill this Template, but have a unique identity from the rest // of the PetSet. optional k8s.io.kubernetes.pkg.api.v1.PodTemplateSpec template = 3; // VolumeClaimTemplates is a list of claims that pets are allowed to reference. // The PetSet controller is responsible for mapping network identities to // claims in a way that maintains the identity of a pet. 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. // TODO: Define the behavior if a claim already exists with the same name. repeated k8s.io.kubernetes.pkg.api.v1.PersistentVolumeClaim volumeClaimTemplates = 4; // ServiceName is the name of the service that governs this PetSet. // This service must exist before the PetSet, and is responsible for // the network identity of the set. Pets get DNS/hostnames that follow the // pattern: pet-specific-string.serviceName.default.svc.cluster.local // where "pet-specific-string" is managed by the PetSet controller. optional string serviceName = 5; } // PetSetStatus represents the current state of a PetSet. message PetSetStatus { // most recent generation observed by this autoscaler. optional int64 observedGeneration = 1; // Replicas is the number of actual replicas. optional int32 replicas = 2; } </ins>

Related discussion:
text: During
any chance this is related to pass: https://k8s- fail: https://k8s- https://k8s-
This is because for some reason the submit queue rebuild didn't catch the flake before merging. Protobuf landed first, merging a new api object like petset should have failed.
Quick fix is to rebuild the proto marshalers and push.
Also, hack/verify-generated- is broken, which probably is the root cause.
Looking at it now
Three problems: -generated-protobuf wasn't updated when we made update-generated-protobuf use docker, so it didn't fail out script was verifying the old API groups, not any of the new API groups that have been merged without protobuf serializations (although pkg/api/serialization_test should have failed, possibly the job didn't build with the latest master?), which caused the tests to fail
Something about the merge bot is broken - it merged without all the tests being green: . That's why this broke -
Spawned since there is something wrong with update-generated-protobuf - will merge that to fix the failing test and then debug the generator in the morning.
The bot can race with pushes between when it starts testing and when it merges...