尝试在裸机上构建 k8s 集群。我使用 CoreOS 作为我的节点的主机操作系统。而且我对我应该为集群网络安装法兰绒的方式有点困惑。
我从文档中看到,我可以将它下载到我的主机并使用systemd
或使用k8s DaemonSet manifest启动它。
我个人喜欢 DaemonSet 的想法,因为 k8s 将负责在每个节点上运行 flannel。但是将 flannel 作为 k8s-DaemonSet 运行有什么缺点吗?
文档还说我应该在任何其他 pod 之前运行 flannel。这就是为什么我的第一个想法是将它放在为 kubelet--pod-manifest
参数指定的路径上。但是由于 flannel 的 yaml 包含 not Pod
butDaemonSet
和一些与 RBAC 相关的实体,因此使用--pod-manifest
dir 部署 flannel 时出现以下错误:
无法处理清单文件“/etc/kubernetes/manifests/flannel.yaml”:/etc/kubernetes/manifests/flannel.yaml:无法解析为 pod(无效 pod:&rbac.ClusterRole{TypeMeta:v1.TypeMeta{ Kind:"", APIVersion:""}, ObjectMeta:v1.ObjectMeta{Name:"flannel", GenerateName:"", Namespace:"", SelfLink:"", UID:"", ResourceVersion:"", Generation: 0, CreationTimestamp:v1.Time{Time:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}}, DeletionTimestamp:(*v1.Time)(nil), DeletionGracePeriodSeconds: (*int64)(nil), Labels:map[string]string(nil), Annotations:map[string]string(nil), OwnerReferences:[]v1.OwnerReference(nil), Initializers:(*v1.Initializers)( nil), 终结器:[]string(nil), ClusterName:""}, 规则:[]rbac.PolicyRule{rbac.PolicyRule{Verbs:[]string{"get"}, APIGroups:[]string{""}, Resources:[]string{"pods"}, ResourceNames:[]string(nil), NonResourceURLs:[]string(nil)}, rbac .PolicyRule{Verbs:[]string{"list", "watch"}, APIGroups:[]string{""}, Resources:[]string{"nodes"}, ResourceNames:[]string(nil), NonResourceURLs: []string(nil)}, rbac.PolicyRule{Verbs:[]string{"patch"}, APIGroups:[]string{""}, Resources:[]string{"nodes/status"}, ResourceNames:[] string(nil), NonResourceURLs:[]string(nil)}}, AggregationRule:(*rbac.AggregationRule)(nil)}),请检查清单文件。[]string{""}, Resources:[]string{"nodes"}, ResourceNames:[]string(nil), NonResourceURLs:[]string(nil)}, rbac.PolicyRule{Verbs:[]string{"patch "}, APIGroups:[]string{""}, Resources:[]string{"nodes/status"}, ResourceNames:[]string(nil), NonResourceURLs:[]string(nil)}}, AggregationRule:(* rbac.AggregationRule)(nil)}),请检查清单文件。[]string{""}, Resources:[]string{"nodes"}, ResourceNames:[]string(nil), NonResourceURLs:[]string(nil)}, rbac.PolicyRule{Verbs:[]string{"patch "}, APIGroups:[]string{""}, Resources:[]string{"nodes/status"}, ResourceNames:[]string(nil), NonResourceURLs:[]string(nil)}}, AggregationRule:(* rbac.AggregationRule)(nil)}),请检查清单文件。
因此,如果我想在特定节点上的其他 pod 之前执行我的 flannel yaml-manifest,我应该把它放在哪里?还是唯一的选择是执行kubectl apply -f flannel.yaml
?