kubernetes - Kubernetes 部署中的容器不使用 hostNetwork
问题描述
我最近熟悉了 kubernetes。我想将一个项目部署到我的 minikube 集群中。这是yaml文件:
部署.yml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
run: project
name: project
namespace: default
spec:
replicas: 1
selector:
matchLabels:
run: project
template:
metadata:
labels:
run: project
spec:
hostNetwork: true
containers:
- name: container1
image: image1
imagePullPolicy: Never
- name: container2
image: image2
imagePullPolicy: Never
我成功创建了部署,并且 pod 中的两个容器都已启动并正在运行,但这些容器无法连接到本地资源,如数据库(例如 redis)
我通过此命令获取日志,结果如下。
kubectl 日志 -f 项目-5f5c6df6bc-q82s5 容器1
连接到 127.0.0.1:6379 时出现错误 111。连接被拒绝。
解决方案
我认为您可以使用具有ExternalName
Minikube 提供的特殊主机名的服务类型:
https ://minikube.sigs.k8s.io/docs/handbook/host-access/#hostminikubeinternal
这公开了一个可以从 Kubernetes 使用的外部服务.
kind: Service
apiVersion: v1
metadata:
name: redis
spec:
type: ExternalName
externalName: host.minikube.internal
在集群中运行的代码中,只需使用主机redis
,以便 Kubernetes 可以检索到所需主机的映射。