Позвольте мне прояснить, что вы не можете "запускать docker-compose" в Kubernetes.Если вы хотите это сделать, вам не следует использовать Kubernetes.
С учетом сказанного, использование kompose
не такая уж хорошая идея.Все файлы yaml, создаваемые Docker, различаются, и kompose
просто делает предположение о том, как будут выглядеть связанные манифесты Kubernetes.Если ваше приложение очень простое и вам повезло, kompose
может дать вам ваши манифесты, готовые к развертыванию, но обычно это не так.
Может быть несколько причин, почему это не работает длявы:
- ваше
tomcat
приложение неправильно ссылается на вашу mysql
службу - в вашем
mysql
развертывании отсутствуют некоторые переменные или подключенные тома / файлы
Ваше приложение tomcat
может ссылаться на ваши mysql
db до mysql:3066
, и вам может потребоваться добавить некоторые переменные среды в вашем развертывании tomcat
, такие как имя db, имя пользователя db и пароль db для аутентификации.Вот ваши отредактированные tomcat
манифесты:
deploy.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: tomcat
namespace: default
labels:
app: tomcat
spec:
replicas: 1
selector:
matchLabels:
app: tomcat
template:
metadata:
labels:
app: tomcat
spec:
containers:
- image: suji165475/vignesh:tomcatserver
name: tomcat7hope
ports:
- containerPort: 8080
service.yaml
apiVersion: v1
kind: Service
metadata:
name: tomcat
namespace: default
labels:
app: tomcat
spec:
ports:
- name: "8080"
port: 8080
targetPort: 8080
selector:
app: tomcat
Для вашего mysql
развертывания может потребоваться PersistentVolumeClaim
или emptyDir
для хранения ваших данных.Посмотрите на подключенные тома и убедитесь, что вы не пропустили ни одного монтирования тома или необходимых переменных среды.Вот ваши отредактированные mysql
манифесты:
deploy.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mysql
namespace: default
labels:
app: mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: suji165475/vignesh:latest
name: mysql
ports:
- containerPort: 3066
env:
- name: MYSQL_ROOT_PASSWORD
value: root
service.yaml
apiVersion: v1
kind: Service
metadata:
name: mysql
namespace: default
labels:
app: mysql
spec:
ports:
- name: "3066"
port: 3066
targetPort: 3066
selector:
app: mysql