From the performance test report we can find that the kubernetes
can support 100 nodes.
To do the same test, I have set up a 100 nodes kubernetes
cluster, but the kube-apiserver
became slow when the cluster is set up. That meant when I typed kubectl get nodes
, it suspended and can not get any respond.
To find the reason, I chech the connections of kube-apiserver
and found there were about 660+ ESTABLISHED connections on port 8080 (I used the insecure port of apiserver), and when I stop some(about 20) slaves, the apiserver
recovered common. So I thought the reason for kube-apiserver
becoming slow is the too large concurrency.
So I am wonder how the Google set up a 100 nodes cluster? Is there something wrong in my work?
PS: The --max-requests-inflight
of kube-apiserver
has been set to 0.
That's what is used to make cluster and from that govern it using kubernetes
def make_cluster(CID, mach_type, nof_machs, ZID):
"""
Given machine type and # of machines, creates cluster
Parameters
------------
CID: string
cluster id
mach_type: string
machine type
nof_machs: integer
number of machines
ZID: string
zone id
returns: integer
return code from gcloud call
"""
cmd = "gcloud container clusters create {0} --machine-type {1} --zone {3} --num-nodes {2}".format(CID, mach_type, nof_machs, ZID)
rc = subprocess.call(cmd, shell=True)
return rc
The doc you link to describes the methodology used (specifically the master VM size). The cluster is created in Google Compute Engine using the default cluster/kube-up.sh script from the repository, with all the default settings implied by that.
How large is the master that you're using? If it's really small, it's possible that it could struggle with a lot of nodes and pods.