1. 23 Dec, 2017 10 commits
  2. 22 Dec, 2017 22 commits
  3. 21 Dec, 2017 8 commits
    • Michael Taufen's avatar
      Refactor kubelet config controller bootstrap process · 6ee191ab
      Michael Taufen authored
      This makes the bootstrap feel much more linear and as a result it is
      easier to read.
      
      Also simplifies status reporting for local config.
      6ee191ab
    • Kubernetes Submit Queue's avatar
      Merge pull request #57477 from misterikkit/noStrCat · d7e5bd19
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.
      
      Avoid string concatenation when comparing pods.
      
      **What this PR does / why we need it**:
      
      Pod comparison in (*NodeInfo).Filter was using GetPodFullName before
      comparing pod names. This is a concatenation of pod name and pod
      namespace, and it is significantly faster to compare name & namespace
      instead.
      
      This is a set of 3 PRs targeting affinity predicate performance. (#57476, #57477, #57478) The key takeaway is approximately 2x speedup in the large affinity benchmark.
      
      The unexpected increase in BenchmarkScheduling/1000Nodes/1000Pods seems to be an outlier, and did not recur on subsequent runs. The benchmarks have a moderate amount of variance to them, and I did not run them enough times to measure mean and standard deviation.
      
      | test | b.N | master | #57476 | #57477 | #57478 | combined |
      | ---- | --- | ------ | ------ | ---------- | ---------- | -------- |
      | BenchmarkScheduling/100Nodes/0Pods                | 100 |  39629010 ns/op | 36898566 ns/op (-6.89%)   |  38461530 ns/op (-2.95%)  |  36214136 ns/op (-8.62%)  |  43090781 ns/op (+8.74%)  |
      | BenchmarkScheduling/100Nodes/1000Pods             | 100 |  85489577 ns/op | 69538016 ns/op (-18.66%)  |  70104254 ns/op (-18.00%) |  75015585 ns/op (-12.25%) |  80986960 ns/op (-5.27%)  |
      | BenchmarkScheduling/1000Nodes/0Pods               | 100 | 219356660 ns/op | 200149051 ns/op (-8.76%)  | 192867469 ns/op (-12.08%) | 196896770 ns/op (-10.24%) | 212563662 ns/op (-3.10%)  |
      | BenchmarkScheduling/1000Nodes/1000Pods            | 100 | 380368238 ns/op | 381786369 ns/op (+0.37%)  | 387224973 ns/op (+1.80%)  | 417974358 ns/op (+9.89%)  | 411140230 ns/op (+8.09%)  |
      | BenchmarkSchedulingAntiAffinity/500Nodes/250Pods  | 250 | 124399176 ns/op | 97568988 ns/op (-21.57%)  | 112027363 ns/op (-9.95%)  | 129134326 ns/op (+3.81%)  |  98607941 ns/op (-20.73%) |
      | BenchmarkSchedulingAntiAffinity/500Nodes/5000Pods | 250 | 491677096 ns/op | 441562422 ns/op (-10.19%) | 278127757 ns/op (-43.43%) | 447355609 ns/op (-9.01%)  | 226310721 ns/op (-53.97%) |
      
      Combined performance contains all three patches.
      Percentages are relative to master.
      
      Methodology:
      
      I ran the tests on each branch with this command.
      ```
      make test-integration WHAT="./test/integration/scheduler_perf" KUBE_TEST_ARGS="-run=xxxx -bench=."
      ```
      
      The benchmarks have a fair amount of variance to them, and I did not run them enough times to measure mean and standard deviation.
      
      **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*:
      Fixes #
      
      The three PRs in this set should collectively fix #54189.
      
      **Special notes for your reviewer**:
      
      **Release note**:
      
      ```release-note
      Improve scheduler performance of MatchInterPodAffinity predicate.
      ```
      d7e5bd19
    • Kubernetes Submit Queue's avatar
      Merge pull request #57490 from tianshapjq/cleanup-useless-func-pkg/client/conditions/conditions.go · d5e59f1d
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.
      
      cleanup useless functions and variables
      
      **What this PR does / why we need it**:
      cleanup useless functions and variables in pkg/client/conditions/conditions.go
      
      **Release note**:
      
      ```release-note
      
      ```NONE
      d5e59f1d
    • Kubernetes Submit Queue's avatar
      Merge pull request #57478 from misterikkit/noArrayGrow · ee0c829e
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.
      
      Avoid array growth in FilteredList
      
      **What this PR does / why we need it**:
      
      The method (*schedulerCache).FilteredList builds an array of *v1.Pod
      that contains every pod in the cluster except for those filtered out by
      a predicate. Today, it starts with a nil slice and appends to it.
      
      Based on current usage, FilteredList is expected to return every pod in
      the cluster or omit some pods from a single node. This change reserves
      array capacity equal to the total number of pods in the cluster.
      
      This is a set of 3 PRs targeting affinity predicate performance. (#57476, #57477, #57478) The key takeaway is approximately 2x speedup in the large affinity benchmark.
      
      The unexpected increase in BenchmarkScheduling/1000Nodes/1000Pods seems to be an outlier, and did not recur on subsequent runs. The benchmarks have a moderate amount of variance to them, and I did not run them enough times to measure mean and standard deviation.
      
      | test | b.N | master | #57476 | #57477 | #57478 | combined |
      | ---- | --- | ------ | ------ | ------ | ---------- | -------- |
      | BenchmarkScheduling/100Nodes/0Pods                | 100 |  39629010 ns/op | 36898566 ns/op (-6.89%)   |  38461530 ns/op (-2.95%)  |  36214136 ns/op (-8.62%)  |  43090781 ns/op (+8.74%)  |
      | BenchmarkScheduling/100Nodes/1000Pods             | 100 |  85489577 ns/op | 69538016 ns/op (-18.66%)  |  70104254 ns/op (-18.00%) |  75015585 ns/op (-12.25%) |  80986960 ns/op (-5.27%)  |
      | BenchmarkScheduling/1000Nodes/0Pods               | 100 | 219356660 ns/op | 200149051 ns/op (-8.76%)  | 192867469 ns/op (-12.08%) | 196896770 ns/op (-10.24%) | 212563662 ns/op (-3.10%)  |
      | BenchmarkScheduling/1000Nodes/1000Pods            | 100 | 380368238 ns/op | 381786369 ns/op (+0.37%)  | 387224973 ns/op (+1.80%)  | 417974358 ns/op (+9.89%)  | 411140230 ns/op (+8.09%)  |
      | BenchmarkSchedulingAntiAffinity/500Nodes/250Pods  | 250 | 124399176 ns/op | 97568988 ns/op (-21.57%)  | 112027363 ns/op (-9.95%)  | 129134326 ns/op (+3.81%)  |  98607941 ns/op (-20.73%) |
      | BenchmarkSchedulingAntiAffinity/500Nodes/5000Pods | 250 | 491677096 ns/op | 441562422 ns/op (-10.19%) | 278127757 ns/op (-43.43%) | 447355609 ns/op (-9.01%)  | 226310721 ns/op (-53.97%) |
      
      Combined performance contains all three patches.
      Percentages are relative to master.
      
      Methodology:
      
      I ran the tests on each branch with this command.
      ```
      make test-integration WHAT="./test/integration/scheduler_perf" KUBE_TEST_ARGS="-run=xxxx -bench=."
      ```
      
      The benchmarks have a fair amount of variance to them, and I did not run them enough times to measure mean and standard deviation.
      
      **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*:
      Fixes #
      
      The three PRs in this set should collectively fix #54189.
      
      **Special notes for your reviewer**:
      
      **Release note**:
      
      ```release-note
      Improve scheduler performance of MatchInterPodAffinity predicate.
      ```
      ee0c829e
    • Kubernetes Submit Queue's avatar
      Merge pull request #53557 from yolo3301/az_lb_pipid · 02be3eb0
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.
      
      Allow use resource ID to specify public IP address in azure_loadbalancer
      
      **What this PR does / why we need it**: Currently the Azure load balancer assumes that a Public IP address is in the same resource group as the cluster. This is not necessarily true in all environments, in addition to accepting a Public IP, we should allow an annotation to the `Service` object that indicates what resource group the IP is present in.
      
      **Which issue this PR fixes**: fixes #53274 #52129
      
      **Special notes for your reviewer**: *first time golang user, please forgive the amateurness*
      
      Release note
      ```release-note
      Allow use resource ID to specify public IP address in azure_loadbalancer
      ```
      02be3eb0
    • Kubernetes Submit Queue's avatar
      Merge pull request #57101 from php-coder/local_up_cluster_daemon_msgs · db902932
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.
      
      local-up-cluster.sh: improve messages when running with ENABLE_DAEMON=true
      
      **What this PR does / why we need it**:
      Don't suggest to use `Ctrl+C` or open up another terminal when the script was running with `ENABLE_DAEMON=true`.
      
      **Release note**:
      ```release-note
      NONE
      ```
      
      CC @simo5
      db902932
    • Jonathan Basseri's avatar
      Avoid array growth in FilteredList. · 3909dc13
      Jonathan Basseri authored
      The method (*schedulerCache).FilteredList builds an array of *v1.Pod
      that contains every pod in the cluster except for those filtered out by
      a predicate. Today, it starts with a nil slice and appends to it.
      
      Based on current usage, FilteredList is expected to return every pod in
      the cluster or omit some pods from a single node. This change reserves
      array capacity equal to the total number of pods in the cluster.
      3909dc13
    • Nick Sardo's avatar
      Update vendor of google.golang.org/api repo · f220a170
      Nick Sardo authored
      f220a170