1

我正在一个主节点以及一个小节点上运行etcdkube-apiserverkube-scheduler和,如下所示(所有 kube 二进制文件都来自 kubernetes 1.7.4):kube-controllermanagerkubeletkube-proxy

# [master node]
./etcd
./kube-apiserver --logtostderr=true --etcd-servers=http://127.0.0.1:2379 --service-cluster-ip-range=10.10.10.0/24 --insecure-port 8080 --secure-port=0 --allow-privileged=true --insecure-bind-address 0.0.0.0
./kube-scheduler --address=0.0.0.0 --master=http://127.0.0.1:8080
./kube-controller-manager --address=0.0.0.0 --master=http://127.0.0.1:8080

# [minion node]
./kubelet --logtostderr=true --address=0.0.0.0 --api_servers=http://$MASTER_IP:8080 --allow-privileged=true
./kube-proxy --master=http://$MASTER_IP:8080

在此之后,如果我执行kubectl get all --all-namespacesand kubectl get nodes,我会得到

NAMESPACE   NAME             CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
default     svc/kubernetes   10.10.10.1   <none>        443/TCP   27m

NAME       STATUS    AGE       VERSION
minion-1   Ready     27m       v1.7.4+793658f2d7ca7

然后,我按如下方式应用法兰绒:

kubectl apply -f kube-flannel-rbac.yml -f kube-flannel.yml

现在,我看到创建了一个 pod,但出现错误:

NAMESPACE     NAME                    READY     STATUS             RESTARTS   AGE
kube-system   kube-flannel-ds-p8tcb   1/2       CrashLoopBackOff   4          2m

当我检查 minion 节点中失败容器内的日志时,我看到以下错误:

Failed to create SubnetManager: unable to initialize inclusterconfig: open /var/run/secrets/kubernetes.io/serviceaccount/token: no such file or directory

我的问题是:如何解决这个问题?这是 SSL 问题吗?我在设置集群时缺少什么步骤?

4

2 回答 2

1

可能是你的flannel yaml 文件有问题,你可以试试这个来安装你的flannel,检查旧的ip 链接

ip link

如果显示法兰绒,请删除它

ip link delete flannel.1

并安装,它的默认 pod 网络 cdir 是 10.244.0.0/16

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.0/Documentation/kube-flannel.yml

于 2017-10-12T08:35:54.933 回答
0

您可以尝试将--etcd-prefix=/your/prefix--etcd-endpoints=address传递给 flanneld 而不是--kube-subnet-mgr所以 flannel从 etcd 服务器而不是从 api 服务器获取net-conf 。

请记住,您必须将 net-conf 推送到 etcd 服务器。

更新

在没有--admission-control=...,ServiceAccount,... 的情况下执行 apiserver或 kubelet 在容器内(例如:hypercube)/var/run/secrets/kubernetes.io/serviceaccount/token: no such file or directory时会出现问题( ),而这最后是我的情况。如果要在容器中执行 k8s 组件,则需要将“共享”选项传递给 kubelet 卷

/var/lib/kubelet/:/var/lib/kubelet:rw,shared

此外,在 docker.service 中启用与 docker 相同的选项

MountFlags=共享

现在的问题是:共享挂载是否存在安全漏洞?

于 2018-05-12T07:43:36.970 回答