kube-dns pod not launched, error seen in kube-manager log

Bug #1691027 reported by Vedamurthy Joshi
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Juniper Openstack
Status tracked in Trunk
R4.0
Fix Committed
High
Yuvaraja Mariappan
Trunk
Fix Committed
High
Yuvaraja Mariappan

Bug Description

R4.0 Build 4 Ubuntu 16.04.2 Container setup

After applying workaround for bug 1690488, kube-manager got vm config, but
kube-dns pod is not launched

[root@testbed-1-vm1 ~]# kubectl get pods --namespace=kube-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE
etcd-testbed-1-vm1 1/1 Running 0 1h 10.204.217.194 testbed-1-vm1
kube-apiserver-testbed-1-vm1 1/1 Running 0 1h 10.204.217.194 testbed-1-vm1
kube-controller-manager-testbed-1-vm1 1/1 Running 1 1h 10.204.217.194 testbed-1-vm1
kube-dns-3121064917-4t42w 0/3 ContainerCreating 0 1h <none> testbed-1-vm3
kube-dns-3913472980-n6tfd 3/3 Running 0 1h 172.17.0.2 testbed-1-vm1
kube-proxy-0558k 1/1 Running 0 1h 10.204.217.194 testbed-1-vm1
kube-proxy-hpg65 1/1 Running 0 1h 10.204.217.197 testbed-1-vm2
kube-proxy-krxfc 1/1 Running 0 1h 10.204.217.198 testbed-1-vm3
kube-scheduler-testbed-1-vm1 1/1 Running 1 1h 10.204.217.194 testbed-1-vm1
[root@testbed-1-vm1 ~]#

Log :

05/16/2017 06:35:53 AM [contrail-kube-manager]: __default__ [SYS_ERR]: KubeManagerErrorLog: VncKubernetes - <type 'exceptions.TypeError'>
Python 2.7.12: /usr/bin/python
Tue May 16 06:35:53 2017

A problem occurred in a Python script. Here is the sequence of
function calls leading up to the error, in the order they occurred.

 /usr/lib/python2.7/dist-packages/kube_manager/vnc/vnc_kubernetes.py in vnc_process(self=<kube_manager.vnc.vnc_kubernetes.VncKubernetes object>)
  351 uid = metadata.get('uid')
  352 if kind == 'Pod':
  353 self.pod_mgr.process(event)
  354 elif kind == 'Service':
  355 self.service_mgr.process(event)
self = <kube_manager.vnc.vnc_kubernetes.VncKubernetes object>
self.pod_mgr = <kube_manager.vnc.vnc_pod.VncPod object>
self.pod_mgr.process = <bound method VncPod.process of <kube_manager.vnc.vnc_pod.VncPod object>>
self.pod_mgr.process = <bound method VncPod.process of <kube_manager.vnc.vnc_pod.VncPod object>>
event = {u'object': {u'apiVersion': u'v1', u'kind': u'Pod', u'metadata': {u'annotations': {u'kubernetes.io/created-by': u'{"kind":"SerializedReference","apiVersion":"v1...rsion":"extensions","resourceVersion":"1057"}}\n', u'scheduler.alpha.kubernetes.io/critical-pod': u''}, u'creationTimestamp': u'2017-05-16T05:15:46Z', u'generateName': u'kube-dns-3121064917-', u'labels': {u'k8s-app': u'kube-dns', 'namespace': None, u'pod-template-hash': u'3121064917'}, u'name': u'kube-dns-3121064917-4t42w', u'namespace': u'kube-system', u'ownerReferences': [{u'apiVersion': u'extensions/v1beta1', u'blockOwnerDeletion': True, u'controller': True, u'kind': u'ReplicaSet', u'name': u'kube-dns-3121064917', u'uid': u'b6dab065-39f6-11e7-81a4-525400010001'}], u'resourceVersion': u'1089', u'selfLink': u'/api/v1/namespaces/kube-system/pods/kube-dns-3121064917-4t42w', u'uid': u'b78011a8-39f6-11e7-81a4-525400010001'}, u'spec': {u'containers': [{u'args': [u'--domain=cluster.local.', u'--dns-port=10053', u'--config-dir=/kube-dns-config', u'--v=2'], u'env': [{...}], u'image': u'gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.1', u'imagePullPolicy': u'IfNotPresent', u'livenessProbe': {u'exec': {...}, u'failureThreshold': 3, u'periodSeconds': 10, u'successThreshold': 1, u'timeoutSeconds': 1}, u'name': u'kubedns', u'ports': [{...}, {...}, {...}], u'readinessProbe': {u'exec': {...}, u'failureThreshold': 3, u'periodSeconds': 10, u'successThreshold': 1, u'timeoutSeconds': 1}, u'resources': {u'limits': {...}, u'requests': {...}}, u'terminationMessagePath': u'/dev/termination-log', ...}, {u'args': [u'-v=2', u'-logtostderr', u'-configDir=/etc/k8s/dns/dnsmasq-nanny', u'-restartDnsmasq=true', u'--', u'-k', u'--cache-size=1000', u'--log-facility=-', u'--server=/cluster.local/127.0.0.1#10053', u'--server=/in-addr.arpa/127.0.0.1#10053', u'--server=/ip6.arpa/127.0.0.1#10053'], u'image': u'gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.1', u'imagePullPolicy': u'IfNotPresent', u'livenessProbe': {u'exec': {...}, u'failureThreshold': 3, u'periodSeconds': 10, u'successThreshold': 1, u'timeoutSeconds': 1}, u'name': u'dnsmasq', u'ports': [{...}, {...}], u'readinessProbe': {u'exec': {...}, u'failureThreshold': 3, u'periodSeconds': 10, u'successThreshold': 1, u'timeoutSeconds': 1}, u'resources': {u'requests': {...}}, u'terminationMessagePath': u'/dev/termination-log', u'terminationMessagePolicy': u'File', ...}, {u'args': [u'--v=2', u'--logtostderr', u'--probe=kubedns,127.0.0.1:10053,kubernetes.default.svc.cluster.local,5,A', u'--probe=dnsmasq,127.0.0.1:53,kubernetes.default.svc.cluster.local,5,A'], u'image': u'gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.1', u'imagePullPolicy': u'IfNotPresent', u'livenessProbe': {u'exec': {...}, u'failureThreshold': 3, u'periodSeconds': 10, u'successThreshold': 1, u'timeoutSeconds': 1}, u'name': u'sidecar', u'ports': [{...}], u'readinessProbe': {u'exec': {...}, u'failureThreshold': 3, u'periodSeconds': 10, u'successThreshold': 1, u'timeoutSeconds': 1}, u'resources': {u'requests': {...}}, u'terminationMessagePath': u'/dev/termination-log', u'terminationMessagePolicy': u'File', ...}], u'dnsPolicy': u'Default', u'nodeName': u'testbed-1-vm3', u'restartPolicy': u'Always', u'schedulerName': u'default-scheduler', u'securityContext': {}, u'serviceAccount': u'kube-dns', u'serviceAccountName': u'kube-dns', u'terminationGracePeriodSeconds': 30, u'tolerations': [{u'effect': u'NoExecute', u'key': u'node.alpha.kubernetes.io/notReady', u'operator': u'Exists', u'tolerationSeconds': 300}, {u'effect': u'NoExecute', u'key': u'node.alpha.kubernetes.io/unreachable', u'operator': u'Exists', u'tolerationSeconds': 300}], ...}, u'status': {u'conditions': [{u'lastProbeTime': None, u'lastTransitionTime': u'2017-05-16T05:15:51Z', u'status': u'True', u'type': u'Initialized'}, {u'lastProbeTime': None, u'lastTransitionTime': u'2017-05-16T05:15:51Z', u'message': u'containers with unready status: [kubedns dnsmasq sidecar]', u'reason': u'ContainersNotReady', u'status': u'False', u'type': u'Ready'}, {u'lastProbeTime': None, u'lastTransitionTime': u'2017-05-16T05:15:46Z', u'status': u'True', u'type': u'PodScheduled'}], u'containerStatuses': [{u'image': u'gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.1', u'imageID': u'', u'lastState': {}, u'name': u'dnsmasq', u'ready': False, u'restartCount': 0, u'state': {u'waiting': {...}}}, {u'image': u'gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.1', u'imageID': u'', u'lastState': {}, u'name': u'kubedns', u'ready': False, u'restartCount': 0, u'state': {u'waiting': {...}}}, {u'image': u'gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.1', u'imageID': u'', u'lastState': {}, u'name': u'sidecar', u'ready': False, u'restartCount': 0, u'state': {u'waiting': {...}}}], u'hostIP': u'10.204.217.198', u'phase': u'Pending', u'qosClass': u'Burstable', u'startTime': u'2017-05-16T05:15:51Z'}}, u'type': u'ADDED'}
  469 if event['type'] == 'ADDED':
  470 vm = self.vnc_pod_add(pod_id, pod_name, pod_namespace,
  471 pod_node, labels, vm_vmi)
  472 if vm:
  473 self._network_policy_mgr.update_pod_np(pod_namespace, pod_id, labels)
pod_node = u'testbed-1-vm3'
labels = {u'k8s-app': u'kube-dns', 'namespace': None, u'pod-template-hash': u'3121064917'}
vm_vmi = None

 /usr/lib/python2.7/dist-packages/kube_manager/vnc/vnc_pod.py in vnc_pod_add(self=<kube_manager.vnc.vnc_pod.VncPod object>, pod_id=u'b78011a8-39f6-11e7-81a4-525400010001', pod_name=u'kube-dns-3121064917-4t42w', pod_namespace=u'kube-system', pod_node=u'testbed-1-vm3', labels={u'k8s-app': u'kube-dns', 'namespace': None, u'pod-template-hash': u'3121064917'}, vm_vmi=None)
  309 vm = VirtualMachineKM.get(pod_id)
  310 if vm:
  311 self._set_label_to_pod_cache(labels, vm)
  312 return vm
  313 else:
self = <kube_manager.vnc.vnc_pod.VncPod object>
self._set_label_to_pod_cache = <bound method VncPod._set_label_to_pod_cache of <kube_manager.vnc.vnc_pod.VncPod object>>
labels = {u'k8s-app': u'kube-dns', 'namespace': None, u'pod-template-hash': u'3121064917'}
vm = <kube_manager.vnc.config_db.VirtualMachineKM object>

 /usr/lib/python2.7/dist-packages/kube_manager/vnc/vnc_pod.py in _set_label_to_pod_cache(self=<kube_manager.vnc.vnc_pod.VncPod object>, new_labels={u'k8s-app': u'kube-dns', 'namespace': None, u'pod-template-hash': u'3121064917'}, vm=<kube_manager.vnc.config_db.VirtualMachineKM object>)
   61 new_labels.update(namespace_label)
   62 for label in new_labels.items():
   63 key = self._label_cache._get_key(label)
   64 self._label_cache._locate_label(key,
   65 self._label_cache.pod_label_cache, label, vm.uuid)
key = u'k8s-app:kube-dns'
self = <kube_manager.vnc.vnc_pod.VncPod object>
self._label_cache = <kube_manager.vnc.label_cache.LabelCache object>
self._label_cache._get_key = <bound method LabelCache._get_key of <kube_manager.vnc.label_cache.LabelCache object>>
label = ('namespace', None)

 /usr/lib/python2.7/dist-packages/kube_manager/vnc/label_cache.py in _get_key(self=<kube_manager.vnc.label_cache.LabelCache object>, label=('namespace', None))
   11
   12 def _get_key(self, label):
   13 key = label[0] + ':' + label[1]
   14 return key
   15
key undefined
label = ('namespace', None)
<type 'exceptions.TypeError'>: cannot concatenate 'str' and 'NoneType' objects
    __class__ = <type 'exceptions.TypeError'>
    __delattr__ = <method-wrapper '__delattr__' of exceptions.TypeError object>
    __dict__ = {}
    __doc__ = 'Inappropriate argument type.'
    __format__ = <built-in method __format__ of exceptions.TypeError object>
    __getattribute__ = <method-wrapper '__getattribute__' of exceptions.TypeError object>
    __getitem__ = <method-wrapper '__getitem__' of exceptions.TypeError object>
    __getslice__ = <method-wrapper '__getslice__' of exceptions.TypeError object>
    __hash__ = <method-wrapper '__hash__' of exceptions.TypeError object>
    __init__ = <method-wrapper '__init__' of exceptions.TypeError object>
    __new__ = <built-in method __new__ of type object>
    __reduce__ = <built-in method __reduce__ of exceptions.TypeError object>
    __reduce_ex__ = <built-in method __reduce_ex__ of exceptions.TypeError object>
    __repr__ = <method-wrapper '__repr__' of exceptions.TypeError object>
    __setattr__ = <method-wrapper '__setattr__' of exceptions.TypeError object>
    __setstate__ = <built-in method __setstate__ of exceptions.TypeError object>
    __sizeof__ = <built-in method __sizeof__ of exceptions.TypeError object>
   __str__ = <method-wrapper '__str__' of exceptions.TypeError object>
    __subclasshook__ = <built-in method __subclasshook__ of type object>
    __unicode__ = <built-in method __unicode__ of exceptions.TypeError object>
    args = ("cannot concatenate 'str' and 'NoneType' objects",)
    message = "cannot concatenate 'str' and 'NoneType' objects"

The above is a description of an error in a Python program. Here is
the original traceback:

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/kube_manager/vnc/vnc_kubernetes.py", line 353, in vnc_process
    self.pod_mgr.process(event)
  File "/usr/lib/python2.7/dist-packages/kube_manager/vnc/vnc_pod.py", line 471, in process
    pod_node, labels, vm_vmi)
  File "/usr/lib/python2.7/dist-packages/kube_manager/vnc/vnc_pod.py", line 311, in vnc_pod_add
    self._set_label_to_pod_cache(labels, vm)
  File "/usr/lib/python2.7/dist-packages/kube_manager/vnc/vnc_pod.py", line 63, in _set_label_to_pod_cache
    key = self._label_cache._get_key(label)
  File "/usr/lib/python2.7/dist-packages/kube_manager/vnc/label_cache.py", line 13, in _get_key
    key = label[0] + ':' + label[1]
TypeError: cannot concatenate 'str' and 'NoneType' objects

Jeba Paulaiyan (jebap)
tags: added: blocker
Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : [Review update] R4.0

Review in progress for https://review.opencontrail.org/31668
Submitter: Yuvaraja Mariappan

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : [Review update] master

Review in progress for https://review.opencontrail.org/31669
Submitter: Yuvaraja Mariappan

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : A change has been merged

Reviewed: https://review.opencontrail.org/31669
Committed: http://github.com/Juniper/contrail-controller/commit/d75e6e4cccaa9727b16a5ae9479711297a30da71
Submitter: Zuul (<email address hidden>)
Branch: master

commit d75e6e4cccaa9727b16a5ae9479711297a30da71
Author: Yuvaraja Mariappan <email address hidden>
Date: Tue May 16 15:12:25 2017 -0700

Fixed exception in adding namespace label in k8s

It made sure that namespace value is set properly
in all label caching path

Change-Id: I42d3d89b7d5435dbf49e26b35bb38f881f9486ef
Closes-bug: #1691027

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote :

Reviewed: https://review.opencontrail.org/31668
Committed: http://github.com/Juniper/contrail-controller/commit/81397a85e8839840d45f5267779366a3b157900a
Submitter: Zuul (<email address hidden>)
Branch: R4.0

commit 81397a85e8839840d45f5267779366a3b157900a
Author: Yuvaraja Mariappan <email address hidden>
Date: Tue May 16 15:12:25 2017 -0700

Fixed exception in adding namespace label in k8s

It made sure that namespace value is set properly
in all label caching path

Change-Id: I42d3d89b7d5435dbf49e26b35bb38f881f9486ef
Closes-bug: #1691027

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.