У меня есть установщик, который запускает два модуля в моем потоке CI, назовем их web и activemq. Когда веб-модуль запускается, он пытается связаться с модулем activemq, используя назначенное k8s имя модуля amq-deployment-0.activemq.
Случайным образом сеть получит исключение неизвестного хоста при попытке доступа к amq-deployment1.activemq. Если я перезапущу веб-модуль в этой ситуации, у веб-модуля не будет проблем со связью с модулем activemq.
Я вошел в веб-модуль, когда это произошло, и файлы /etc/resolv.conf и /etc/hosts выглядят нормально. Хост-машины /etc/resolve.conf и /etc/hosts разрежены и не содержат ничего, что могло бы показаться сомнительным.
Информация: Имеется только 1 рабочий узел.
kubectl --version Kubernetes v1.8.3+icp+ee
Любые идеи о том, как решить эту проблему. Я не могу придумать вескую причину для того, чтобы это происходило случайно и не разрешалось само по себе при перезапуске модуля.
Если нужна другая полезная информация, я могу ее получить. Заранее спасибо
Для ActiveMQ у нас есть этот служебный файл
apiVersion: v1 kind: Service
metadata:
name: activemq
labels:
app: myapp
env: dev
spec:
ports:
- port: 8161
protocol: TCP
targetPort: 8161
name: http
- port: 61616
protocol: TCP
targetPort: 61616
name: amq
selector:
component: analytics-amq
app: myapp
environment: dev
type: fa-core
clusterIP: None
И этот набор ActiveMQ с сохранением состояния (это шаблон)
kind: StatefulSet
apiVersion: apps/v1beta1
metadata:
name: pa-amq-deployment
spec:
replicas: {{ activemqs }}
updateStrategy:
type: RollingUpdate
serviceName: "activemq"
template:
metadata:
labels:
component: analytics-amq
app: myapp
environment: dev
type: fa-core
spec:
containers:
- name: pa-amq
image: default/myco/activemq:latest
imagePullPolicy: Always
resources:
limits:
cpu: 150m
memory: 1Gi
livenessProbe:
exec:
command:
- /etc/init.d/activemq
- status
initialDelaySeconds: 10
periodSeconds: 15
failureThreshold: 16
ports:
- containerPort: 8161
protocol: TCP
name: http
- containerPort: 61616
protocol: TCP
name: amq
envFrom:
- configMapRef:
name: pa-activemq-conf-all
- secretRef:
name: pa-activemq-secret
volumeMounts:
- name: timezone
mountPath: /etc/localtime
volumes:
- name: timezone
hostPath:
path: /usr/share/zoneinfo/UTC
Веб-набор с отслеживанием состояния:
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: pa-web-deployment
spec:
replicas: 1
updateStrategy:
type: RollingUpdate
serviceName: "pa-web"
template:
metadata:
labels:
component: analytics-web
app: myapp
environment: dev
type: fa-core
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: component
operator: In
values:
- analytics-web
topologyKey: kubernetes.io/hostname
containers:
- name: pa-web
image: default/myco/web:latest
imagePullPolicy: Always
resources:
limits:
cpu: 1
memory: 2Gi
readinessProbe:
httpGet:
path: /versions
port: 8080
initialDelaySeconds: 30
periodSeconds: 15
failureThreshold: 76
livenessProbe:
httpGet:
path: /versions
port: 8080
initialDelaySeconds: 30
periodSeconds: 15
failureThreshold: 80
securityContext:
privileged: true
ports:
- containerPort: 8080
name: http
protocol: TCP
envFrom:
- configMapRef:
name: pa-web-conf-all
- secretRef:
name: pa-web-secret
volumeMounts:
- name: shared-volume
mountPath: /MySharedPath
- name: timezone
mountPath: /etc/localtime
volumes:
- nfs:
server: 10.100.10.23
path: /MySharedPath
name: shared-volume
- name: timezone
hostPath:
path: /usr/share/zoneinfo/UTC
Этот веб-модуль также имеет аналогичную проблему «неизвестный хост» при поиске внешней базы данных, которую мы настроили. Проблема решается аналогичным образом путем перезапуска модуля. Вот конфигурация этой внешней службы. Может быть, с этой стороны проще решить проблему? ActiveMQ без проблем использует имя службы базы данных для поиска БД и запуска.
apiVersion: v1
kind: Service
metadata:
name: dbhost
labels:
app: myapp
env: dev
spec:
type: ExternalName
externalName: mydb.host.com
app: flexible-analytics
, а в StatfulSet меткаapp: myapp
. Возможно, это может вызвать такую ошибку - person Artem Golenyaev   schedule 12.09.2018