Comment puis-je définir une seule définition de DaemonSet pour en créer des pods légèrement différents? Ce que je veux dire par différents pods, c'est que les pods sont créés à partir de différentes commandes. Je crée actuellement deux objets DaemonSet différents pour créer deux types de pods différents.Comment définir un DaemonSet pour créer des pods légèrement différents?
Laissez-moi vous dire les détails.
J'ai modifié kube-flannel.yml, en particulier la définition de DaemonSet. Je veux ajouter "--iface =" à flanneld ["/ opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr"] et je veux utiliser deux ethernet différent interfaces basées sur l'étiquette de noeud.
j'ai trois types de nœuds différents: 1) un noeud maître avec deux interfaces Ethernet: eth0 pour le réseau interne et eth3 pour réseau externe nœuds esclaves 2) avec une interface Ethernet: eth0 pour le réseau interne 3) a nœud nouvellement ajouté avec une interface ethernet: p2p1 pour le réseau interne
Lorsque j'avais 1) et 2), j'acceptais la commande suivante: ["/ opt/bin/flanneld", "--ip-masq "," --kube-subnet-mgr "," --iface = - eth0 "] Je dois ajouter l'option --iface car autrement flanneld sur le nœud maître détecte automatiquement eth3 autre que eth0, qui est le reaso n J'ajoute manuellement l'option iface.
Maintenant que j'ai 3), je dois faire deux définitions DaemonSet avec différentes commandes: [ "/ opt/bin/flanneld", "--ip-masq", « --kube-sous-réseau-Gest "," --iface = - eth0 "] pour 1) et 2) , ["/opt/bin/flanneld "," --ip-masq "," --kube-subnet-mgr "," - -iface = - p2p1 "] pour 3) Le sélecteur d'étiquette est utilisé pour indiquer quel DaemonSet est utilisé pour un nœud. La définition complète est jointe à la fin.
Existe-t-il une manière plus élégante de créer des pods légèrement différents à partir d'une seule définition de DaemonSet? Il serait bien d'avoir une seule définition avec un espace réservé qui peut être remplacé par la valeur d'un label spécifique.
Sinon, je peux le faire en réglant flanelle d'une manière différente? Ce serait bien si nous pouvons donner une liste d'interfaces ethernet à l'option --iface mais mon collègue a trouvé qu'une seule interface/ip peut être donnée à l'option --iface.
Merci.
---
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
Pour consulter la discussion sur Google Groupes, rendez-vous sur le lien https://groups.google.com/forum/#!topic/kubernetes-users/F6GvfHoX7V4 – eastcirclek