1. 14 Feb, 2018 3 commits
    • Cao Shufeng's avatar
      fix README for admission webhook test image · f09f8664
      Cao Shufeng authored
      This README is copied from somewhere else and it's out of date.
      f09f8664
    • Kubernetes Submit Queue's avatar
      Merge pull request #57106 from JulienBalestra/kubelet-update-local-pods · 7b678dc4
      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>.
      
      Kubelet status manager sync the status of local Pods
      
      **What this PR does / why we need it**:
      
      In the kubelet, when using `--pod-manifest-path` the kubelet creates static pods but doesn't update the status accordingly in the `PodList`.
      
      This PR fixes the incorrect status of each Pod in the kubelet's `PodList`.
      
      This is the setup used to reproduce the issue:
      
      **manifest**:
      
      ```bash
      cat ~/kube/staticpod.yaml
      ```
      
      ```yaml
      apiVersion: v1
      kind: Pod
      metadata:
        labels:
          app: nginx
        name: nginx
        namespace: default
      spec:
        hostNetwork: true
        containers:
        - name: nginx
          image: nginx:latest
          imagePullPolicy: IfNotPresent
          volumeMounts:
          - name: os-release
            mountPath: /usr/share/nginx/html/index.html
            readOnly: true
      
        volumes:
        - name: os-release
          hostPath:
            path: /etc/os-release
      ```
      
      
      **kubelet**:
      
      ```bash
      ~/go/src/k8s.io/kubernetes/_output/bin/kubelet --pod-manifest-path ~/kube/ --cloud-provider="" --register-node --kubeconfig kubeconfig.yaml
      ```
      
      
      You can observe this by querying the kubelet API `/pods`:
      
      ```bash
      curl -s 127.0.0.1:10255/pods | jq .
      ```
      
      ```json
      {
        "kind": "PodList",
        "apiVersion": "v1",
        "metadata": {},
        "items": [
          {
            "metadata": {
              "name": "nginx-nodeName",
              "namespace": "default",
              "selfLink": "/api/v1/namespaces/default/pods/nginx-nodeName",
              "uid": "0fdfa64c73d9de39a9e5c05ef7967e72",
              "creationTimestamp": null,
              "labels": {
                "app": "nginx"
              },
              "annotations": {
                "kubernetes.io/config.hash": "0fdfa64c73d9de39a9e5c05ef7967e72",
                "kubernetes.io/config.seen": "2017-12-12T18:42:46.088157195+01:00",
                "kubernetes.io/config.source": "file"
              }
            },
            "spec": {
              "volumes": [
                {
                  "name": "os-release",
                  "hostPath": {
                    "path": "/etc/os-release",
                    "type": ""
                  }
                }
              ],
              "containers": [
                {
                  "name": "nginx",
                  "image": "nginx:latest",
                  "resources": {},
                  "volumeMounts": [
                    {
                      "name": "os-release",
                      "readOnly": true,
                      "mountPath": "/usr/share/nginx/html/index.html"
                    }
                  ],
                  "terminationMessagePath": "/dev/termination-log",
                  "terminationMessagePolicy": "File",
                  "imagePullPolicy": "IfNotPresent"
                }
              ],
              "restartPolicy": "Always",
              "terminationGracePeriodSeconds": 30,
              "dnsPolicy": "ClusterFirst",
              "nodeName": "nodeName",
              "hostNetwork": true,
              "securityContext": {},
              "schedulerName": "default-scheduler",
              "tolerations": [
                {
                  "operator": "Exists",
                  "effect": "NoExecute"
                }
              ]
            },
            "status": {
              "phase": "Pending",
              "conditions": [
                {
                  "type": "PodScheduled",
                  "status": "True",
                  "lastProbeTime": null,
                  "lastTransitionTime": "2017-12-12T17:42:51Z"
                }
              ]
            }
          }
        ]
      }
      ```
      
      The status of the nginx `Pod` will remain in **Pending** state phase.
      
      ```bash
      curl -I 127.0.0.1
      HTTP/1.1 200 OK
      ```
      
      It's reported as expected on the apiserver side:
      
      ```bash
      kubectl get po --all-namespaces -w
      
      NAMESPACE   NAME                    READY     STATUS    RESTARTS   AGE
      default     nginx-nodeName   0/1       Pending   0          0s
      default     nginx-nodeName   1/1       Running   0          2s
      ```
      
      
      It doesn't work either with a standalone kubelet:
      
      ```bash
      ~/go/src/k8s.io/kubernetes/_output/bin/kubelet --pod-manifest-path ~/kube/ --cloud-provider="" --register-node false
      ```
      
      **Special notes for your reviewer**:
      
      **Release note**:
      ```release-note
      NONE
      ```
      7b678dc4
    • Kubernetes Submit Queue's avatar
      Merge pull request #59828 from krousey/shared_informer_race · 6590ea6d
      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>.
      
      Fix a race condition in SharedInformer
      
      **What this PR does / why we need it**:
      
      This fixes a race condition that can occur in the `sharedIndexInformer`
      
      **Which issue(s) this PR fixes**:
      Fixes #59822
      
      **Release note**:
      
      ```release-note
      Fixed a race condition in k8s.io/client-go/tools/cache.SharedInformer that could violate the sequential delivery guarantee and cause panics on shutdown.
      ```
      6590ea6d
  2. 13 Feb, 2018 37 commits