Как я могу определить одно определение DaemonSet, чтобы создать из него несколько разных элементов? То, что я имею в виду под разными стручками, это стручки, созданные из разных команд. В настоящее время я создаю два разных объекта DaemonSet для создания двух разных типов стручков.Как определить DaemonSet для создания немного разных контейнеров?
Позвольте мне рассказать вам подробности.
Я модифицировал kube-flannel.yml, особенно определение DaemonSet. Я хочу добавить «--iface =» в flanneld ["/ opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr"] и хочу использовать два разных ethernet интерфейсы на основе метки узла.
У меня есть три различных вида узлов: 1) мастер-узла с двумя Интерфейсы Ethernet: eth0 для внутренней сети и eth3 для внешней сети 2) подчиненных узлов с одним Интерфейсы Ethernet: eth0 для внутренней сети 3) недавно добавленный узел с одним интерфейсом Ethernet: p2p1 для внутренней сети
Когда у меня были 1) и 2), я был в порядке со следующей командой: ["/ opt/bin/flanneld", "--ip-masq "," --kube-subnet-mgr "," --iface = - eth0 "] Я должен добавить параметр -iface, потому что иначе фланель на главном узле автоматически обнаруживает eth3, отличный от eth0, , который является reaso n Я вручную добавляю опцию iface.
Теперь у меня есть 3), я должен сделать два определения DaemonSet с различными командами: [ "/ Opt/бен/flanneld", "--ip-MASQ", «--kube-подсети прил "," --iface = - eth0 "] для 1) и 2) , ["/opt/bin/flanneld "," --ip-masq "," --kube-subnet-mgr "," - -iface = - p2p1 "] для 3) Селектор меток используется для указания того, какой DaemonSet используется для узла. Полное определение прилагается в конце.
Есть ли более элегантный способ создания немного разных стручков из одного определения DaemonSet? Было бы неплохо иметь только одно определение с заполнителем, которое может быть заменено значением конкретной метки.
В противном случае я могу сделать это, установив фланель другим способом? Было бы неплохо, если бы мы могли предоставить список интерфейсов ethernet для опции -iface, но мой коллега обнаружил, что для опции -iface может быть предоставлен только один интерфейс/ip.
Спасибо.
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: flannel
---
kind: ConfigMap
apiVersion: v1
metadata:
name: kube-flannel-cfg
labels:
tier: node
app: flannel
data:
cni-conf.json: |
{
"name": "cbr0",
"type": "flannel",
"delegate": {
"isDefaultGateway": true
}
}
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan"
}
}
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: kube-flannel-ds
labels:
tier: node
app: flannel
iface: eth0
spec:
template:
metadata:
labels:
tier: node
app: flannel
iface: eth0
spec:
hostNetwork: true
nodeSelector:
beta.kubernetes.io/arch: amd64
iface: eth0
serviceAccountName: flannel
containers:
- name: kube-flannel
image: quay.io/coreos/flannel:v0.7.0-amd64
command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr", "--iface=eth0" ]
securityContext:
privileged: true
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
volumeMounts:
- name: run
mountPath: /run
- name: flannel-cfg
mountPath: /etc/kube-flannel/
- name: install-cni
image: quay.io/coreos/flannel:v0.7.0-amd64
command: [ "/bin/sh", "-c", "set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf; while true; do sleep 3600; done" ]
volumeMounts:
- name: cni
mountPath: /etc/cni/net.d
- name: flannel-cfg
mountPath: /etc/kube-flannel/
volumes:
- name: run
hostPath:
path: /run
- name: cni
hostPath:
path: /etc/cni/net.d
- name: flannel-cfg
configMap:
name: kube-flannel-cfg
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: kube-gpu-flannel-ds
labels:
tier: node
app: flannel
iface: p2p1
spec:
template:
metadata:
labels:
tier: node
app: flannel
iface: p2p1
spec:
hostNetwork: true
nodeSelector:
beta.kubernetes.io/arch: amd64
iface: p2p1
serviceAccountName: flannel
containers:
- name: kube-flannel
image: quay.io/coreos/flannel:v0.7.0-amd64
command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr", "--iface=p2p1" ]
securityContext:
privileged: true
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
volumeMounts:
- name: run
mountPath: /run
- name: flannel-cfg
mountPath: /etc/kube-flannel/
- name: install-cni
image: quay.io/coreos/flannel:v0.7.0-amd64
command: [ "/bin/sh", "-c", "set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf; while true; do sleep 3600; done" ]
volumeMounts:
- name: cni
mountPath: /etc/cni/net.d
- name: flannel-cfg
mountPath: /etc/kube-flannel/
volumes:
- name: run
hostPath:
path: /run
- name: cni
hostPath:
path: /etc/cni/net.d
- name: flannel-cfg
configMap:
name: kube-flannel-cfg
Для просмотра обсуждения в группах Google перейдите по ссылке https://groups.google.com/forum/#!topic/kubernetes-users/F6GvfHoX7V4 – eastcirclek