Merge pull request #27125 from wojtek-t/protobufs_in_nettest

Automatic merge from submit-queue

Change webserver binary to be usable in large clusters.

Ref #27039

@zmerlynn
pull/6/head
k8s-merge-robot 2016-06-09 18:32:50 -07:00 committed by GitHub
commit adc55115a0
2 changed files with 24 additions and 5 deletions

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
TAG = 1.8
TAG = 1.9
PREFIX = gcr.io/google_containers
all: push

View File

@ -43,6 +43,7 @@ import (
"syscall"
"time"
"k8s.io/kubernetes/pkg/client/restclient"
client "k8s.io/kubernetes/pkg/client/unversioned"
"k8s.io/kubernetes/pkg/util/sets"
)
@ -214,9 +215,27 @@ func main() {
// Find all sibling pods in the service and post to their /write handler.
func contactOthers(state *State) {
const waitTimeout = 5 * time.Minute
sleepTime := 5 * time.Second
// In large cluster getting all endpoints is pretty expensive.
// Thus, we will limit ourselves to send on average at most 10 such
// requests per second
if sleepTime < time.Duration(*peerCount/10)*time.Second {
sleepTime = time.Duration(*peerCount/10) * time.Second
}
timeout := 5 * time.Minute
// Similarly we need to bump timeout so that it is reasonable in large
// clusters.
if timeout < time.Duration(*peerCount)*time.Second {
timeout = time.Duration(*peerCount) * time.Second
}
defer state.doneContactingPeers()
client, err := client.NewInCluster()
config, err := restclient.InClusterConfig()
if err != nil {
log.Fatalf("Unable to create config; error: %v\n", err)
}
config.ContentType = "application/vnd.kubernetes.protobuf"
client, err := client.New(config)
if err != nil {
log.Fatalf("Unable to create client; error: %v\n", err)
}
@ -227,7 +246,7 @@ func contactOthers(state *State) {
log.Printf("Server version: %#v\n", v)
}
for start := time.Now(); time.Since(start) < waitTimeout; time.Sleep(5 * time.Second) {
for start := time.Now(); time.Since(start) < timeout; time.Sleep(sleepTime) {
eps := getWebserverEndpoints(client)
if eps.Len() >= *peerCount {
break
@ -243,7 +262,7 @@ func contactOthers(state *State) {
state.Logf("Attempting to contact %s", ep)
contactSingle(ep, state)
}
time.Sleep(5 * time.Second)
time.Sleep(sleepTime)
}
}