mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 05:27:21 +00:00
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
This commit is contained in:
commit
adc55115a0
@ -12,7 +12,7 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
TAG = 1.8
|
TAG = 1.9
|
||||||
PREFIX = gcr.io/google_containers
|
PREFIX = gcr.io/google_containers
|
||||||
|
|
||||||
all: push
|
all: push
|
||||||
|
@ -43,6 +43,7 @@ import (
|
|||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/util/sets"
|
"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.
|
// Find all sibling pods in the service and post to their /write handler.
|
||||||
func contactOthers(state *State) {
|
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()
|
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 {
|
if err != nil {
|
||||||
log.Fatalf("Unable to create client; error: %v\n", err)
|
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)
|
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)
|
eps := getWebserverEndpoints(client)
|
||||||
if eps.Len() >= *peerCount {
|
if eps.Len() >= *peerCount {
|
||||||
break
|
break
|
||||||
@ -243,7 +262,7 @@ func contactOthers(state *State) {
|
|||||||
state.Logf("Attempting to contact %s", ep)
|
state.Logf("Attempting to contact %s", ep)
|
||||||
contactSingle(ep, state)
|
contactSingle(ep, state)
|
||||||
}
|
}
|
||||||
time.Sleep(5 * time.Second)
|
time.Sleep(sleepTime)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user