Randomstate and kmeans issues
Unfortunately, there isn't a built-in option to do it. Each time you run K-Means, the labels are assigned randomly. Even if you state the same random seed. However, based on this answer in StackOverFlow, you can create a lookup table and run it after your K-Means.
from sklearn.cluster import KMeans
k = 5
kmeans = KMeans(n_clusters=k, random_state=0).fit(X)

idx = np.argsort(kmeans.cluster_centers_.sum(axis=1))
lut = np.zeros_like(idx)
lut[idx] = np.arange

With this, you will always have the same output as
In [73]: kmeans.labels_
Out[73]: array([1, 4, 1, ..., 0, 1, 0])

In [74]: lut[kmeans.labels_]
Out[74]: array([3, 0, 3, ..., 2, 4, 2], dtype=int64

When lut[kmeans.labels_] = 0, then you always have the smallest cluster and with lut[kmeans.labels_] = 4 you have the largest cluster.