У меня есть приложение PHP + Apache на POD в Kubernetes. Приложение PHP, доступ к API-интерфейсу Elasticsearch через порт 9200 и просмотр простого веб-сайта для пользователей через порт 5000.
Я запускаю прокси, используя kubectl proxy --address='0.0.0.0' --port=8001 --accept-hosts='.*'
.
Когда я вхожу в "http://localhost:8001/api/v1/namespaces/default/pods/website/proxy/"
, я вижу следующую ошибку:
Error: 'dial tcp 172.17.0.6:5000: connect: connection refused'
Trying to reach: 'http://172.17.0.6:5000/'
* 172.17.0.6 - это IP-адрес POD.
Это веб-сайт POD yaml:
apiVersion: v1
kind: Pod
metadata:
name: website
labels:
app: website
spec:
containers:
- name: website
image: website_k8s:latest
ports:
- containerPort: 5000
- containerPort: 80
Это докер-файл website_k8s: последний:
FROM php:7.0-apache
RUN echo "ServerName 0.0.0.0" >> /etc/apache2/apache2.conf
COPY ./index.php /var/www/html/
EXPOSE 5000
Я также пытался запустить службу:
apiVersion: v1
kind: Service
metadata:
name: website-service
spec:
ports:
- port: 5000
targetPort: 80
protocol: TCP
name: serving
- port: 80
targetPort: 9200
protocol: TCP
name: readfromelasticsearch
selector:
app: website
И когда я вхожу в http://localhost:8001/api/v1/namespaces/default/services/website-service/proxy/
, я вижу:
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {
},
"status": "Failure",
"message": "no endpoints available for service \"website-service\"",
"reason": "ServiceUnavailable",
"code": 503
}
Хотя, когда я запускаю $kubectl get endpoints website-service
, я вижу:
NAME ENDPOINTS AGE
website-service 172.17.0.6:80,172.17.0.6:9200 59m
Я вижу конечную точку POD службы.
Как я могу получить доступ к своему веб-сайту через прокси?