1. 22 Nov, 2017 21 commits
  2. 21 Nov, 2017 19 commits
    • Kubernetes Submit Queue's avatar
      Merge pull request #55794 from porridge/patient-big-master · a69f9dad
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue (batch tested with PRs 54316, 53400, 55933, 55786, 55794). 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>.
      
      Be less agressive and more patient when creating large master.
      
      **What this PR does / why we need it**:
      
      Workaround for #55777
      
      **Release note**:
      ```release-note
      NONE
      ```
      a69f9dad
    • Kubernetes Submit Queue's avatar
      Merge pull request #55786 from porridge/debug-e2e-pod-wait · 61792ef4
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue (batch tested with PRs 54316, 53400, 55933, 55786, 55794). 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>.
      
      Improve messages around waiting for pods.
      
      **What this PR does / why we need it**:
      
      This is a step towards solving #55785
      
      **Release note**:
      ```release-note
      NONE
      ```
      61792ef4
    • Kubernetes Submit Queue's avatar
      Merge pull request #55933 from bsalamat/starvation3 · 34b258ca
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue (batch tested with PRs 54316, 53400, 55933, 55786, 55794). 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>.
      
      Add support to take nominated pods into account during scheduling to avoid starvation of higher priority pods
      
      **What this PR does / why we need it**:
      When a pod preempts lower priority pods, the preemptor gets a "nominated node name" annotation. We call such a pod a nominated pod. This PR adds the logic to take such nominated pods into account when scheduling other pods on the same node that the nominated pod is expected to run. This is needed to avoid starvation of preemptor pods. Otherwise, lower priority pods may fill up the space freed after preemption before the preemptor gets a chance to get scheduled.
      
      **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 #54501
      
      **Special notes for your reviewer**: This PR is built on top of #55109 and includes all the changes there as well.
      
      **Release note**:
      
      ```release-note
      Add support to take nominated pods into account during scheduling to avoid starvation of higher priority pods.
      ```
      
      /sig scheduling
      ref/ #47604
      34b258ca
    • Kubernetes Submit Queue's avatar
      Merge pull request #53400 from micahhausler/aws-nlb · 63d4b85b
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue (batch tested with PRs 54316, 53400, 55933, 55786, 55794). 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>.
      
      Add Amazon NLB support
      
      **What this PR does / why we need it**:
      
      This adds support for AWS's NLB for `LoadBalancer` services.
      
      **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #
      
      Fixes #52173
      
      **Special notes for your reviewer**:
      
      This is NOT yet ready for merge, but I'd love any feedback before it is.
      
      This requires at least `v1.10.40` of the [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go), which is not yet included in Kubernetes. Per @justinsb, I'm waiting on possibly #48314 to update to `v1.10.40`  or some other PR. 
      
      I tried to make the change as easy to review as possible, so some LoadBalancer logic is duplicated in the `if isNLB(annotations)` blocks. I can refactor that and sprinkle more `isNLB()` switches around, but it might be harder to view the diff.
      
      **Other Notes:**
      
      * NLB's subnets cannot be modified after creation (maybe look for public subnets in all AZ's?).  Currently, I'm just using `c.findELBSubnets()`
      * Health check uses TCP with all the NLB default values. I was thinking HTTP health checks via annotation could be added later. Should that go into this PR?
      * ~~`externalTrafficPolicy`/`healthCheckNodePort` are ignored. Should those be implemented for this PR?~~
      * `externalTrafficPolicy` and subsequent `healthCheckNodePort` are handled properly. This may come with uneven load balancing, as NLB doesn't support weighted backends.
      * With classic ELB, you have a security group the ELB is inside of to associate Instance (k8s node) SG rules with a LoadBalancer (k8s Service), but NLB's don't have a security group. Instead, I use the `Description` field on [`ec2.IpRange`](https://docs.aws.amazon.com/sdk-for-go/api/service/ec2/#IpRange) with the following annotations. Is this ok? I couldn't think of another way to associate SG rule to the NLB
          * Node SG gets an rule added for VPC cidr on NodePort for Health Check with annotation in description `kubernetes.io/rule/nlb/health=<loadBalancerName>`
          * Node SG gets an rule added for `loadBalancerSourceRanges` to  NodePort for client traffic with annotation in description `kubernetes.io/rule/nlb/client=<loadBalancerName>`
          * **Note: if `loadBalancerSourceRanges` is unspecified, this opens instance security groups to traffic from `0.0.0.0/0` on the service's nodePorts**
      * Respects internal annotation
      * Creates a TargetGroup per frontend port: simplifies updates when you have same backend port for multiple front end ports.
      * Does not (yet) verify that we're under the NLB limits in terms of # of listeners
      * `UpdateLoadBalancer()`  basically just calls `EnsureLoadBalancer` for NLB's. Is this ok?
      
      **Areas for future improvement or optimization**:
      
      * A new annotation indicating a new security group should be created for NLB traffic and instances would be placed in this new SG. (Could bump up against the default limit of 5 SG's per instance)
      * Only create a client health check security group rule when the VPC cidr is not a subset of `spec.loadBalancerSourceRanges`
      * Consolidate TargetGroups if a service has 2+ frontend ports and the same nodePort.
      * A new annotation for specifying TargetGroup Health Check options.
      
      **Release note**:
      
      ```release-notes
      Add Amazon NLB support - Fixes #52173
      ```
      
      ping @justinsb @bchav
      63d4b85b
    • Kubernetes Submit Queue's avatar
      Merge pull request #54316 from dashpole/disk_request_eviction · 03b7d77b
      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>.
      
      Take disk requests into account during evictions
      
      fixes #54314
      
      This PR is part of the local storage feature, and it makes the eviction manager take disk requests into account during disk evictions.
      This uses the same eviction strategy as we do for memory.
      Disk requests are only considered when the LocalStorageCapacityIsolation feature gate is enabled.  This is enforced by adding a check for the feature gate in getRequests().
      I have added unit testing to ensure that previous behavior is preserved when the feature gate is disabled.
      Most of the changes are testing.  Reviewers should focus on changes in **eviction/helpers.go**
      
      /sig node
      /assign @jingxu97  @vishh
      03b7d77b
    • Jiaying Zhang's avatar
    • Chao Xu's avatar
      update-all generated · fcf4f15c
      Chao Xu authored
      fcf4f15c
    • Chao Xu's avatar
      manual fix required to run hack/update-all.sh · a6d955e9
      Chao Xu authored
      a6d955e9
    • Chao Xu's avatar
      fix hack/local-cluster-up.sh · 0dab236c
      Chao Xu authored
      0dab236c
    • Chao Xu's avatar
      remove reference to v1alpha1 · 7945ae68
      Chao Xu authored
      7945ae68
    • Chao Xu's avatar
    • kevinkim's avatar
      comment on findSecurityRule and fmt · 85145377
      kevinkim authored
      85145377
    • Sandeep Rajan's avatar
      update coredns manifest · 475d30c8
      Sandeep Rajan authored
      475d30c8
    • David Eads's avatar
      make admission config scheme configurable · ccd4f4a4
      David Eads authored
      ccd4f4a4
    • David Eads's avatar
      generated · 4dd13605
      David Eads authored
      4dd13605
    • Scott Creeley's avatar
    • Kubernetes Submit Queue's avatar
      Merge pull request #55859 from hzxuzhonghu/listener-genericapiserver · 5337ff80
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue (batch tested with PRs 56021, 55843, 55088, 56117, 55859). 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>.
      
      apiserver:  pass a listener into genericapiserver bootstrapping 
      
      **What this PR does / why we need it**:
      
      >At the moment we pass a port via the options into the config. A zero port does not work because the loopback clients created during apiserver initialization need to know the port before. Passing a listener into the server instead would allow us to use a zero port beforehand and bootstrapping order should be fine.
      
      **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 #55784
      
      **Special notes for your reviewer**:
      
      **Release note**:
      
      ```release-note
      NONE
      ```
      5337ff80
    • Kubernetes Submit Queue's avatar
      Merge pull request #56117 from jiayingz/deviceplugin-addon-config · da96ce00
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue (batch tested with PRs 56021, 55843, 55088, 56117, 55859). 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>.
      
      Changes nvidia-gpu device plugin addon config settings:
      
      - Runs as system critical pod
      - Makes resource limits to match its resource requets
      - Modifies test/e2e/scheduling/nvidia-gpus.go to cope with the recent
      change of running the device plugin as a system addon.
      - The resource settings of the addon is based on the test results
      from 8 nvidia-tesla-k80 gpus.
      
      
      
      **What this PR does / why we need it**:
      
      **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 #
      
      **Special notes for your reviewer**:
      
      **Release note**:
      
      ```release-note
      
      ```
      da96ce00
    • Kubernetes Submit Queue's avatar
      Merge pull request #55088 from jiayingz/capacity · 5242f01e
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue (batch tested with PRs 56021, 55843, 55088, 56117, 55859). 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>.
      
      Extends deviceplugin to gracefully handle full device plugin lifecycle.
      
      **What this PR does / why we need it**:
      - Instead of using cm.capacity field to communicate device plugin resource capacity,
      this PR changes to use an explicit cm.GetDevicePluginResourceCapacity() function
      that returns device plugin resource capacity as well as any inactive device plugin resource.
      Kubelet syncNodeStatus call this function during its periodic run to update node status
      capacity and allocatable. After this call, device plugin can remove the inactive device
      plugin resource from its allDevices field as the update is already pushed to API server.
      - Extends device plugin checkpoint data to record registered resources
      so that we can finish resource removing even upon kubelet restarts.
      - Passes sourcesReady from kubelet to device plugin to avoid removing
      inactive pods during grace period of kubelet restart.
      - Extends gpu_device_plugin e2e_node test to verify that scheduled pods
      can continue to run even after device plugin deletion and kubelet
      restarts.
      
      **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*:
      Together with https://github.com/kubernetes/kubernetes/pull/54488, fixes https://github.com/kubernetes/kubernetes/issues/53395
      
      **Special notes for your reviewer**:
      
      **Release note**:
      
      ```release-note
      Extends deviceplugin to gracefully handle full device plugin lifecycle.
      ```
      5242f01e