2 docker kubernetes kubectl kops
deployment.yaml文件并运行了kubectl apply -f deployment.yaml.值得注意的是,我使用 kops 将 K8s 集群部署到 AWS EC2
我可以使用 Kubernetes 仪表板看到容器正在 Kubernetes Pod 中运行。还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"]
Run Code Online (Sandbox Code Playgroud)
部署.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
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
kubectl get pods -o wideNAME 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>
Run Code Online (Sandbox Code Playgroud)
如果从列中获取 IP 地址IP并尝试对其进行卷曲,则不会发生任何情况:
我认为这是因为这些 IP 是本地的。
如果我在本地运行容器,一切都很好docker run k8s-search。
我不知道在这里做什么。如何查询deployment.yaml在Kubernetes节点内设置的镜像?
要从集群外部访问 pod,您需要创建Nodeport或LoadBalancer类型的服务。
kubectl expose deployment vuekcal --type=NodePort --name=example-service
Run Code Online (Sandbox Code Playgroud)
然后通过访问它curl http://<public-node-ip>:<node-port>
!确保您运行了kubectl expose上面的命令!
要获取公共节点IP,请运行以下命令:
kubectl get nodes -o wide
Run Code Online (Sandbox Code Playgroud)
并查看“EXTERNAL-IP”列。这是运行容器的节点的公共 IP。这是您应该尝试连接的地方。例如,您的节点的外部 IP 可以是133.71.33.7。记住这个IP。
它与deployment.yaml 中的containerPort 不同。
要查找 NodePort,请运行以下命令:
kubectl describe service example-service
Run Code Online (Sandbox Code Playgroud)
替换example-service为您在--name=运行时写入的内容kubectl expose deployment ...(本文中的第一个命令)
这是连接时应使用的端口。
133.73.133.7:31110
| 归档时间: |
|
| 查看次数: |
5161 次 |
| 最近记录: |