#docker #kubernetes
#docker #kubernetes
Вопрос:
я попытался настроить среду dvwa в k8s, я обнаружил, что она не работает как обычно, когда я предоставил доступ к порту модулей dvwa.
я попытался предоставить образец nginx, чтобы убедиться, что мой k8s env работает. И да, nginx хорошо работает на моем локальном компьютере
Вот некоторая информация
# dvwa.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: dvwa
spec:
replicas: 2
selector:
app: dvwa
template:
metadata:
labels:
app: dvwa
spec:
containers:
- name: dvwa
image: citizenstig/dvwa:latest
ports:
- containerPort: 3306
# dvwa_service.yaml
apiVersion: v1
kind: Service
metadata:
name: dvwa
spec:
ports:
- port: 3306
selector:
app: dvwa
type: NodePort
$ kubectl get svc -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
AGE SELECTOR
dvwa NodePort 10.98.238.130 <none>
3306:32393/TCP 7m15s app=dvwa
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP
35h <none>
nginx NodePort 10.97.143.32 <none>
80:31961/TCP 5m51s app=nginx
Когда я подключаюсь по ssh к одному из своих компьютеров k8s и набираю curl 10.97.143.32:80
, он возвращает страницу nginx, но curl 10.98.238.130:3306
не работает, изображение docker citizenstig/dvwa
содержит 80 и 3306, я также пытался использовать порт 80 в dvwa_service.yaml, но все еще не работает.
Кто-нибудь может мне помочь??? Заранее спасибо!
Ответ №1:
targetPort отсутствует в определении вашего сервиса
Попробуйте приведенное ниже определение службы
apiVersion: v1
kind: Service
metadata:
name: dvwa
spec:
ports:
- port: 3306
targetPort: 3306
selector:
app: dvwa
type: NodePort
можете ли вы войти в модуль dvwa и запустить localhost: 3306
получаете ли вы какой-либо ответ?
Комментарии:
1. Спасибо за ответ! я попробовал вышеописанное в моей среде minikube, оно работает, но также без targetPort. Когда я обратился к своим трем узлам env (я использую kubeadm-dind-cluster), описанным в моем вопросе, работает только nginx, что меня действительно смутило…
2. обратитесь к выводам kubectl get svc. номер порта пуст. targetPort требуется для обеспечения привязки сервиса к этому порту в модулях
3. что вы имеете в виду, когда номер порта пуст? Номер порта действительно существует (но в новой строке).. на самом деле в моем модуле nginx также отсутствует targetPort, но он работает..
4. теперь я их вижу.