我是 kubernetes 的新手,我正在嘗試通過使用 AWS EKS 部署一個簡單的節點服務器來學習它。(kubernetes 已經設定為與創建的 AWS EKS 集群通信)
這是我的簡單節點檔案的代碼 ( server.js)
const express = require('express')
const app = express()
const port = 8080
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
下面是它的Dockerfile樣子:
FROM node:12
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
COPY package*.json ./
RUN npm ci
# Bundle app source
COPY . .
EXPOSE 8080
CMD [ "node", "server.js" ]
我可以通過創建 docker 映像在本地運行上述服務器。
現在,為了在此處部署此服務器,我遵循了以下步驟:
首先,我將上面的影像推送到 docker hub (aroraankit7/simple-server) 其次,我創建了一個如下所示的 deployment.yaml 檔案:
apiVersion: apps/v1
kind: Deployment
metadata:
name: simple-server-app
labels:
app: simple-server-app
spec:
replicas: 2
selector:
matchLabels:
app: simple-server-app
template:
metadata:
labels:
app: simple-server-app
spec:
containers:
- name: simple-server
image: aroraankit7/simple-server:v1
ports:
- containerPort: 8080
第三,我使用 kubectl apply 命令部署了它。這是輸出kubectl get pods

然后,我創建了 service.yaml 檔案。這是它的外觀:
apiVersion: v1
kind: Service
metadata:
name: simple-server-svc
labels:
run: simple-server
spec:
ports:
- port: 8080
targetPort: 8080
protocol: TCP
selector:
run: simple-server
然后我使用 kubectl apply 命令部署了它。輸出kubectl describe services:

接下來,我使用以下命令登錄到我的 Pod: kubectl -it exec simple-server-app-758dfb88f4-4cfmp bash
在這個 pod 中,我運行了以下命令:curl http://simple-server-svc:8080這是我得到的輸出:curl: (7) Failed to connect to simple-server-svc port 8080: Connection refused
為什么連接被拒絕?
當我運行時curl http:localhost://8080,我得到了正確的輸出(Hello World!在這種情況下)
uj5u.com熱心網友回復:
您的服務未系結到部署。您需要將 service.yaml 中的選擇器修改為以下內容:
apiVersion: v1
kind: Service
metadata:
name: simple-server-svc
labels:
run: simple-server
spec:
ports:
- port: 8080
targetPort: 8080
protocol: TCP
selector:
app: simple-server-app
您可以使用 kubectl 暴露命令來避免這樣的錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/369247.html
標籤:节点.js 码头工人 Kubernetes 亚马逊-eks Kubernetes-pod
