我试图和Kubernetes DaemonSets一起去,一点也不运气。我找不到有效的解决方案。我希望有人可以提供帮助。
首先,我看过this ticket。重新启动控制器管理器似乎没有帮助。正如你在这里看到的那样,其他的kube进程都是在apiserver之后启动的,并且api服务器有' - runtime-config = extensions / v1beta1 = true'集。
kube 31398 1 0 08:54 ? 00:00:37 /usr/bin/kube-apiserver --logtostderr=true --v=0 --etcd_servers=http://dock-admin:2379 --address=0.0.0.0 --allow-privileged=false --portal_net=10.254.0.0/16 --admission_control=NamespaceAutoProvision,LimitRanger,ResourceQuota --runtime-config=extensions/v1beta1=true
kube 12976 1 0 09:49 ? 00:00:28 /usr/bin/kube-controller-manager --logtostderr=true --v=0 --master=http://127.0.0.1:8080 --cloud-provider=
kube 29489 1 0 11:34 ? 00:00:00 /usr/bin/kube-scheduler --logtostderr=true --v=0 --master=http://127.0.0.1:8080
然而,api版本仅显示版本1:
$ kubectl api-versions
Available Server Api Versions: v1
Kubernetes版本是1.2:
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"2", GitVersion:"v1.2.0", GitCommit:"86327329213fed4af2661c5ae1e92f9956b24f55", GitTreeState:"clean"}
Server Version: version.Info{Major:"1", Minor:"2", GitVersion:"v1.2.0", GitCommit:"86327329213fed4af2661c5ae1e92f9956b24f55", GitTreeState:"clean"}
已创建DaemonSet,但似乎没有安排任何pod(status.desiredNumberScheduled)。
$ kubectl get ds -o json
{
"kind": "List",
"apiVersion": "v1",
"metadata": {},
"items": [
{
"kind": "DaemonSet",
"apiVersion": "extensions/v1beta1",
"metadata": {
"name": "ds-test",
"namespace": "dvlp",
"selfLink": "/apis/extensions/v1beta1/namespaces/dvlp/daemonsets/ds-test",
"uid": "2d948b18-fa7b-11e5-8a55-00163e245587",
"resourceVersion": "2657499",
"generation": 1,
"creationTimestamp": "2016-04-04T15:37:45Z",
"labels": {
"app": "ds-test"
}
},
"spec": {
"selector": {
"app": "ds-test"
},
"template": {
"metadata": {
"creationTimestamp": null,
"labels": {
"app": "ds-test"
}
},
"spec": {
"containers": [
{
"name": "ds-test",
"image": "foo.vt.edu:1102/dbaa-app:v0.10-dvlp",
"ports": [
{
"containerPort": 8080,
"protocol": "TCP"
}
],
"resources": {},
"terminationMessagePath": "/dev/termination-log",
"imagePullPolicy": "IfNotPresent"
}
],
"restartPolicy": "Always",
"terminationGracePeriodSeconds": 30,
"dnsPolicy": "ClusterFirst",
"securityContext": {}
}
}
},
"status": {
"currentNumberScheduled": 0,
"numberMisscheduled": 0,
"desiredNumberScheduled": 0
}
}
]
}
这是我创建DaemonSet的yaml文件
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: ds-test
spec:
selector:
app: ds-test
template:
metadata:
labels:
app: ds-test
spec:
containers:
- name: ds-test
image: foo.vt.edu:1102/dbaa-app:v0.10-dvlp
ports:
- containerPort: 8080
使用该文件创建DaemonSet似乎可以正常工作(我得到#daemonset" ds-test"已创建'),但没有创建任何pod:
$ kubectl get pods -o json
{
"kind": "List",
"apiVersion": "v1",
"metadata": {},
"items": []
}
答案 0 :(得分:1)
(如果我有足够的声誉,我会将此作为评论发布)
我对你的输出感到困惑。
kubectl api-versions
如果在服务器上启用,则应打印extensions/v1beta1
。因为它没有,看起来像extension / v1beta1没有启用。
但如果未启用extensions / v1beta1,kubectl get ds
应该会失败。所以我无法弄清楚你的服务器上是否启用了extensions / v1beta1。
您可以尝试GET masterIP/apis
并查看是否列出了扩展名吗?
您也可以转到masterIP/apis/extensions/v1beta1
并查看是否列出了守护进程。
另外,我看到kubectl version
说1.2,但是kubectl api-versions
不应该打印出字符串Available Server Api Versions
(该字符串已在1.1中删除:https://github.com/kubernetes/kubernetes/pull/15796)。
答案 1 :(得分:1)
我的集群中存在此问题(k8s版本:1.9.7):
由“ Daemonset controller”而不是“ Scheduler”控制的Daemonset,所以我重新启动了controller manager
,这个问题很严重:
但是我认为这是kubernetes的问题,一些相关信息:
Bug 1469037 - Sometime daemonset DESIRED=0 even this matched node
答案 2 :(得分:0)
我遇到了类似的问题,然后尝试在kube-system命名空间中搜索守护程序集,如此处所述,https://github.com/kubernetes/kubernetes/issues/61342 实际上我也确实得到了输出
答案 3 :(得分:0)
对于pod的当前状态不等于所需状态的任何情况(无论它是由DaemonSet,ReplicaSet,Deployment等创建的),我将首先检查Kubelet < / strong>在当前节点上:
$ sudo systemctl status kubelet
或者:
$ sudo journalctl -u kubelet
在很多情况下,由于诸如以下错误而未在我的集群中创建pod:
Couldn't parse as pod (Object 'Kind' is missing in 'null')
在像vim这样的编辑器中编辑资源的Yaml后,might occur。
答案 4 :(得分:-2)
尝试:
$ kubectl污点节点--all node-role.kubernetes.io/master:NoSchedule -
主节点无法接受pod。