现在有个 K8S 下的 NACOS 服务在 8848 端口下,在宿主机和 master 节点,均可以通过 容器 IP:8848 的方式访问到,但是,无法在外网通过端口访问到 nacos 页面
时间: 2023-02-08 08:54:42 浏览: 57
这意味着在容器内部和宿主机上可以使用容器 IP 地址和端口 8848 访问 NACOS 服务,但是在外网无法使用相同的方式访问该服务。这可能是由于网络配置不当造成的,需要检查宿主机和 master 节点的防火墙规则、路由表和网络代理设置,以确保端口 8848 对外网可访问。如果是在 k8s 的环境下,应该检查 Service 或者 ingress 是否正确配置.
相关问题
nginx-ingress 代理nacos服务端口8848示例,并通过域名访问。
好的,以下是一个示例配置:
1. 创建 ingress-nginx 的 Namespace 和 RBAC 角色
```
kubectl create namespace ingress-nginx
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.44.0/deploy/static/provider/cloud/deploy.yaml
```
2. 创建 Nacos 的 Deployment 和 Service
```
apiVersion: apps/v1
kind: Deployment
metadata:
name: nacos
spec:
selector:
matchLabels:
app: nacos
replicas: 1
template:
metadata:
labels:
app: nacos
spec:
containers:
- name: nacos
image: nacos/nacos-server:latest
ports:
- name: http
containerPort: 8848
env:
- name: MODE
value: standalone
---
apiVersion: v1
kind: Service
metadata:
name: nacos
spec:
selector:
app: nacos
ports:
- name: http
port: 8848
targetPort: http
```
3. 创建 Ingress
```
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nacos-ingress
spec:
rules:
- host: nacos.example.com # 修改成你的域名
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nacos
port:
name: http
```
4. 配置 DNS 解析
将 `nacos.example.com` 解析到 ingress-nginx 的外部 IP。
5. 完成
现在你就可以使用 `http://nacos.example.com` 访问 Nacos 服务了。
docker容器如何通过注册到nacos上的ip地址访问宿主机的其他docker容器
要让一个Docker容器通过注册到Nacos上的IP地址访问宿主机的其他Docker容器,可以使用Docker的网络模式。
首先,在创建Docker容器时,需要指定一个自定义的网络。例如,可以创建一个名为`my_network`的网络:
```
docker network create my_network
```
然后,在运行Docker容器时,需要将其加入到这个网络中:
```
docker run --name my_container --network my_network my_image
```
这样,`my_container`就与`my_network`网络关联起来了。
接下来,可以在这个网络中创建多个Docker容器。这些容器之间可以通过它们在`my_network`网络上的IP地址相互访问,而无需暴露它们的端口。
例如,可以创建一个名为`my_service`的Docker容器,并将其加入到`my_network`网络中:
```
docker run --name my_service --network my_network my_service_image
```
此时,`my_service`容器的IP地址可以通过Nacos注册中心上的IP地址进行访问,例如:
```
http://<nacos_ip>:<nacos_port>/nacos/v1/ns/instance/list?serviceName=my_service&groupName=DEFAULT_GROUP
```
然后,`my_container`容器可以通过这个IP地址访问`my_service`容器,例如:
```
curl http://<my_service_ip>:<my_service_port>/my_service_endpoint
```
注意,在实际使用中,需要将上述IP地址和端口号替换为实际的值。