XXX*_*XXX 5 namespaces docker kubernetes minikube
我正在使用 minikube 在最新的 MacOS 上测试 kubernetes。
这是我的相关 YAML:
命名空间.yml
apiVersion: v1
kind: Namespace
metadata:
name: micro
labels:
name: micro
Run Code Online (Sandbox Code Playgroud)
部署.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
Run Code Online (Sandbox Code Playgroud)
服务.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
Run Code Online (Sandbox Code Playgroud)
运行后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 获取节点端口$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
adderservice NodePort 10.99.155.255 <none> 8080:30981/TCP 21h
Run Code Online (Sandbox Code Playgroud)
minikube ip 获取节点IP$ minikube ip
192.168.99.103
Run Code Online (Sandbox Code Playgroud)
但是当我卷曲时,我总是像这样拒绝连接:
$ curl http://192.168.99.103:30981/add/1/2
curl: (7) Failed to connect to 192.168.99.103 port 30981: Connection refused
Run Code Online (Sandbox Code Playgroud)
所以我检查了节点、pod、部署和端点,如下所示:
$ 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
Run Code Online (Sandbox Code Playgroud)
我还检查了 minikube 的服务列表:
$ minikube service -n micro adderservice --url
http://192.168.99.103:30981
Run Code Online (Sandbox Code Playgroud)
我已经阅读了很多关于通过 NodePorts 访问 k8s 服务的帖子。据我所知,我应该能够毫无问题地访问该应用程序。我唯一怀疑的是我正在使用自定义命名空间。这会导致访问问题吗?
我知道命名空间会更改 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
Run Code Online (Sandbox Code Playgroud)
有人可以帮我吗?谢谢你。
该错误Connection Refused主要意味着容器内的应用程序不接受目标接口上的请求或未通过预期端口映射。
您需要注意的事项:
0.0.0.0以便它可以从外部(如公共)或通过其他容器接收来自容器外部的请求。containerPort和targetPort为预期在您的情况下,您必须确保ADDERSERVICE_SERVICE_HOST等于0.0.0.0和ADDERSERVICE_SERVICE_PORT等于8080哪个应该与targetPortinservice.yml和containerPortin 的值相同deployment.yml
| 归档时间: |
|
| 查看次数: |
6134 次 |
| 最近记录: |