Я использую minikube для тестирования kubernetes на последних версиях MacOS.
Вот мои соответствующие YAML:
namespace.yml
apiVersion: v1
kind: Namespace
metadata:
name: micro
labels:
name: micro
deploy.yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: adderservice
spec:
replicas: 1
template:
metadata:
labels:
run: adderservice
spec:
containers:
- name: adderservice
image: jeromesoung/adderservice:0.0.1
ports:
- containerPort: 8080
service.yml
apiVersion: v1
kind: Service
metadata:
name: adderservice
labels:
run: adderservice
spec:
ports:
- port: 8080
name: main
protocol: TCP
targetPort: 8080
selector:
run: adderservice
type: NodePort
После запуска minikube start
шаги, которые я предпринял для развертывания, следующие:следующим образом:
kubectl create -f namespace.yml
для создания пространства имен
kubectl config set-context minikube --namespace=micro
kubectl create -f deployment.yml
kubectl create -f service.yml
Затем я получаю NodeIP и NodePort с помощью следующих команд:
kubectl get services
, чтобы получить NodePort
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
adderservice NodePort 10.99.155.255 <none> 8080:30981/TCP 21h
minikube ip
для получения узла IP
$ minikube ip
192.168.99.103
Но когда я делаю скручивание, я всегда получаю Отказ в соединении , например:
$ curl http://192.168.99.103:30981/add/1/2
curl: (7) Failed to connect to 192.168.99.103 port 30981: Connection refused
Таким образом, я проверил узел, модуль, развертывание и конечную точку следующим образом:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready master 23h v1.13.3
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
adderservice-5b567df95f-9rrln 1/1 Running 0 23h
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
adderservice 1 1 1 1 23h
$ kubectl get endpoints
NAME ENDPOINTS AGE
adderservice 172.17.0.5:8080 21h
Я также проверил список сервисов из миникуба с помощью:
$ minikube service -n micro adderservice --url
http://192.168.99.103:30981
Я прочитал много сообщений о доступе к k8sсервис через NodePorts.Насколько я знаю, я должен иметь доступ к приложению без проблем.Единственное, что я подозреваю, это то, что я использую собственное пространство имен.Вызовет ли это проблему с доступом?
Я знаю, что пространство имен изменит DNS, поэтому, чтобы закончить, я также выполнил следующие команды:
$ kubectl exec -ti adderservice-5b567df95f-9rrln -- nslookup kubernetes.default
Server: 10.96.0.10
Address: 10.96.0.10#53
Name: kubernetes.default.svc.cluster.local
Address: 10.96.0.1
$ kubectl exec -ti adderservice-5b567df95f-9rrln -- nslookup kubernetes.micro
Server: 10.96.0.10
Address: 10.96.0.10#53
Non-authoritative answer:
Name: kubernetes.micro
Address: 198.105.244.130
Name: kubernetes.micro
Address: 104.239.207.44
Может ли кто-нибудь мне помочь?Спасибо.