deployment.yaml
文件并运行了kubectl apply -f deployment.yaml
。 值得一提的是,我已使用kops将K8s集群部署到AWS EC2
我可以使用Kubernetes仪表板看到容器在Kubernetes容器中运行。此外,kubectl get pods -o wide
也向我展示了豆荚。
我部署的映像是一个简单的API,它公开了一条路由。我的问题是我不知道如何查询刚刚部署的容器。
已部署映像的Dockerfile:
FROM node:lts
COPY package*.json tsconfig.json ./
RUN npm ci
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["node", "dist/index.js"]
deployment.yaml(kubectl apply -f deployment.yaml
):
apiVersion: apps/v1
kind: Deployment
metadata:
name: vuekcal
spec:
selector:
matchLabels:
app: vuekcal
replicas: 2
template:
metadata:
labels:
app: vuekcal
spec:
containers:
- name: search
image: [my-repo-id].dkr.ecr.eu-central-1.amazonaws.com/k8s-search
ports:
- containerPort: 3000
我尝试过的事情:
kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
vuekcal-6956589484-7f2kx 1/1 Running 0 16m 100.96.2.6 ip-172-20-54-21.eu-central-1.compute.internal <none> <none>
vuekcal-6956589484-f4pqf 1/1 Running 0 16m 100.96.1.7 ip-172-20-59-29.eu-central-1.compute.internal <none> <none>
如果从IP
列获取IP地址并尝试对其进行卷曲,则不会发生任何事情:
我认为这是因为这些IP是本地IP。
如果我在本地docker run k8s-search
上运行容器,一切都很好。
我不知道该怎么办。如何查询Deployment.yaml在Kubernetes节点内设置的映像?
答案 0 :(得分:2)
要从群集外部访问Pod,您需要创建Nodeport或LoadBalancer类型的服务。
kubectl expose deployment vuekcal --type=NodePort --name=example-service
然后通过curl http://<public-node-ip>:<node-port>
!确保您运行了上面的kubectl expose
命令!
要获取公共节点IP,请运行以下命令:
kubectl get nodes -o wide
,然后查看“ EXTERNAL-IP”列。这是运行容器的节点的公共ip。这是您应该尝试连接的地方。例如,您节点的外部IP可能是133.71.33.7
。记住此IP。
它与Deployment.yaml中的containerPort不同。
要找到NodePort,请运行以下命令:
kubectl describe service example-service
在运行example-service
时,用您在--name=
中写的内容替换kubectl expose deployment ...
(本文中的第一个命令)
这是连接时应使用的端口。
133.73.133.7:31110