Я пытаюсь развернуть один узел по узлу. Он отлично работает с видом daemonSet и когда кластер создается с помощью kubeup. Но мы перенесли создание кластера с помощью kops и с kops главный узел является частью кластера.кластер, созданный с помощью Kops - развертывание одного узла по узлу с помощью DaemonSet, исключающего главный узел
Я заметил, что главный узел определяется с определенной меткой: kubernetes.io/role=master
и с заразы: scheduler.alpha.kubernetes.io/taints: [{"key":"dedicated","value":"master","effect":"NoSchedule"}]
Но это не мешает иметь стручок развертывается на нем DaemonSet
Так я пытался добавить scheduler.alpha.kubernetes.io/affinity
:
- apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: elasticsearch-data
namespace: ess
annotations:
scheduler.alpha.kubernetes.io/affinity: >
{
"nodeAffinity": {
"requiredDuringSchedulingRequiredDuringExecution": {
"nodeSelectorTerms": [
{
"matchExpressions": [
{
"key": "kubernetes.io/role",
"operator": "NotIn",
"values": ["master"]
}
]
}
]
}
}
}
spec:
selector:
matchLabels:
component: elasticsearch
type: data
provider: fabric8
template:
metadata:
labels:
component: elasticsearch
type: data
provider: fabric8
spec:
serviceAccount: elasticsearch
serviceAccountName: elasticsearch
containers:
- env:
- name: "SERVICE_DNS"
value: "elasticsearch-cluster"
- name: "NODE_MASTER"
value: "false"
image: "essearch/ess-elasticsearch:1.7.6"
name: elasticsearch
imagePullPolicy: Always
ports:
- containerPort: 9300
name: transport
volumeMounts:
- mountPath: "/usr/share/elasticsearch/data"
name: task-pv-storage
volumes:
- name: task-pv-storage
persistentVolumeClaim:
claimName: task-pv-claim
nodeSelector:
minion: true
Но я t не работает. Кто-нибудь знает, почему? Обходной путь, который у меня есть сейчас, - использовать nodeSelector
и добавить метку к узлам, которые являются только minion, но я бы избегал добавлять ярлык во время создания кластера, потому что это дополнительный шаг, и если бы я мог его избежать, это было бы для лучший :)
EDIT:
я изменил, что (учитывая ответ) и я думаю, что это правильно, но это не помогает, я до сих пор стручок развернут на нем:
- apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: elasticsearch-data
namespace: ess
spec:
selector:
matchLabels:
component: elasticsearch
type: data
provider: fabric8
template:
metadata:
labels:
component: elasticsearch
type: data
provider: fabric8
annotations:
scheduler.alpha.kubernetes.io/affinity: >
{
"nodeAffinity": {
"requiredDuringSchedulingRequiredDuringExecution": {
"nodeSelectorTerms": [
{
"matchExpressions": [
{
"key": "kubernetes.io/role",
"operator": "NotIn",
"values": ["master"]
}
]
}
]
}
}
}
spec:
serviceAccount: elasticsearch
serviceAccountName: elasticsearch
containers:
- env:
- name: "SERVICE_DNS"
value: "elasticsearch-cluster"
- name: "NODE_MASTER"
value: "false"
image: "essearch/ess-elasticsearch:1.7.6"
name: elasticsearch
imagePullPolicy: Always
ports:
- containerPort: 9300
name: transport
volumeMounts:
- mountPath: "/usr/share/elasticsearch/data"
name: task-pv-storage
volumes:
- name: task-pv-storage
persistentVolumeClaim:
claimName: task-pv-claim
Я думаю, что kops делает это потому, что с видом развертывания он не развертывается на нем, но по какой-то причине он не работает для daemonSet –
, перемещение аннотации в определение элемента не помогло (посмотрите раздел EDIT моего вопроса) –
Можете ли вы сделать 'kubectl get version'? Я спрашиваю, потому что возникла проблема с DaemonSet, который почитает taints, и эта функция может не поддерживаться в вашей конкретной версии. См. Https://github.com/kubernetes/kubernetes/pull/31907 –