У меня есть установщик, который раскручивает два модуля в моем потоке CI, назовем их web и activemq. Когда веб-модуль запускается, он пытается связаться с модулем activemq, используя k8s, назначенное имя модуля amq-deploy-0.activemq.
Случайным образом, при попытке доступа к amq-deploy1.activemq Интернет получит неизвестное исключение хоста. Если я перезапущу веб-модуль в этой ситуации, у него не возникнет проблем с подключением к модулю activemq.
Я вошел в веб-модуль, когда это происходит, и файлы /etc/resolv.conf и / etc / hosts выглядят нормально. Хост-машины /etc/resolve.conf и / etc / hosts немногочисленны и не вызывают сомнений.
Информация:
Работает только 1 рабочий узел.
kubectl - версия
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