【发布时间】:2021-05-03 04:20:55
【问题描述】:
我在 k8s 集群中启动了一些微服务,例如 eureka 服务发现(使用服务对象)服务器和一些在 eureka 服务器上注册的客户端微服务。到这里一切都很好,尤里卡服务器已经启动并运行,我可以使用节点 IP 访问它。但在那之后,我被要求再运行一项服务,并由我的前端团队以 DockerFile 的形式提供。下面是DockerFile的内容
### STAGE 1: Build ###
FROM node:12.7-alpine AS build
WORKDIR /usr/src/app
COPY package.json ./
RUN npm install
COPY . .
RUN npm run build
### STAGE 2: Run ###
FROM nginx:1.17.1-alpine
COPY --from=build /usr/src/app/dist/login /usr/share/nginx/html
我使用 (helm create UI) 创建了一个 helm 图表并相应地更改了图像。之后,我使用 helm install 命令安装了应用程序,并且还创建了一个 NodePort 类型的服务对象。但问题是我无法访问服务或应用程序。
但是,当我使用前端团队用来在本地测试它的 docker run 命令启动应用程序时
docker run --name userinterface -d -p 8585:80 userinterface
我可以使用 URL http://localhost:8585 从 k8s 集群访问服务。
这显然是我们在生产中不想要的,为此我相应地创建了一个舵图和服务对象。
kubectl get pods
ui-comp-5458cd5654-wpbvw 1/1 Running 0 35m
kubectl get svc
userinterface NodePort 10.98.75.125 <none> 80:30003/TCP 35m
discovery-server NodePort 10.97.34.27 <none> 80:30005/TCP 7d18h
但是在尝试使用 nodeIP 访问时,我没有得到任何 o/p
卷曲 http://
我尝试以与 eureka 服务器运行方式完全相同的方式创建和安装此前端服务。
我不确定,我还缺少什么? 请有任何建议。
同时添加 deployment.yaml 和 service.yaml:
service.yaml
controller-1:~$ kubectl get svc ui-comp -o yaml
apiVersion: v1
kind: Service
metadata:
annotations:
meta.helm.sh/release-name: ui-comp
meta.helm.sh/release-namespace: default
creationTimestamp: "2021-01-29T07:56:19Z"
labels:
app: ui-comp
app.kubernetes.io/managed-by: Helm
managedFields:
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
.: {}
f:meta.helm.sh/release-name: {}
f:meta.helm.sh/release-namespace: {}
f:labels:
.: {}
f:app: {}
f:app.kubernetes.io/managed-by: {}
f:spec:
f:externalTrafficPolicy: {}
f:ports:
.: {}
k:{"port":80,"protocol":"TCP"}:
.: {}
f:nodePort: {}
f:port: {}
f:protocol: {}
f:targetPort: {}
f:selector:
.: {}
f:app.kubernetes.io/instance: {}
f:app.kubernetes.io/name: {}
f:sessionAffinity: {}
f:type: {}
manager: Go-http-client
operation: Update
time: "2021-01-29T07:56:19Z"
name: ui-comp
namespace: default
resourceVersion: "31111377"
selfLink: /api/v1/namespaces/default/services/ui-comp
uid: 20428f83-92f3-4c84-b573-cb124d2efb39
spec:
clusterIP: 10.98.75.125
externalTrafficPolicy: Cluster
ports:
- nodePort: 30003
port: 80
protocol: TCP
targetPort: 8585
selector:
app.kubernetes.io/instance: ui-comp
app.kubernetes.io/name: ui-comp
sessionAffinity: None
type: NodePort
status:
loadBalancer: {}
controller-1:~$
deployment.yaml
controller-1:~$ kubectl get deploy ui-comp -o yaml
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
meta.helm.sh/release-name: ui-comp
meta.helm.sh/release-namespace: default
creationTimestamp: "2021-01-29T07:56:19Z"
generation: 1
labels:
app: ui-comp
app.kubernetes.io/managed-by: Helm
managedFields:
- apiVersion: apps/v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
.: {}
f:meta.helm.sh/release-name: {}
f:meta.helm.sh/release-namespace: {}
f:labels:
.: {}
f:app: {}
f:app.kubernetes.io/managed-by: {}
f:spec:
f:progressDeadlineSeconds: {}
f:replicas: {}
f:revisionHistoryLimit: {}
f:selector:
f:matchLabels:
.: {}
f:app: {}
f:strategy:
f:rollingUpdate:
.: {}
f:maxSurge: {}
f:maxUnavailable: {}
f:type: {}
f:template:
f:metadata:
f:labels:
.: {}
f:app: {}
f:spec:
f:containers:
k:{"name":"ui-comp"}:
.: {}
f:image: {}
f:imagePullPolicy: {}
f:name: {}
f:ports:
.: {}
k:{"containerPort":8585,"protocol":"TCP"}:
.: {}
f:containerPort: {}
f:name: {}
f:protocol: {}
f:resources: {}
f:securityContext: {}
f:terminationMessagePath: {}
f:terminationMessagePolicy: {}
f:dnsPolicy: {}
f:imagePullSecrets:
.: {}
k:{"name":"regcred"}:
.: {}
f:name: {}
f:restartPolicy: {}
f:schedulerName: {}
f:securityContext: {}
f:serviceAccount: {}
f:serviceAccountName: {}
f:terminationGracePeriodSeconds: {}
manager: Go-http-client
operation: Update
time: "2021-01-29T07:56:19Z"
- apiVersion: apps/v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
f:deployment.kubernetes.io/revision: {}
f:status:
f:availableReplicas: {}
f:conditions:
.: {}
k:{"type":"Available"}:
.: {}
f:lastTransitionTime: {}
f:lastUpdateTime: {}
f:message: {}
f:reason: {}
f:status: {}
f:type: {}
k:{"type":"Progressing"}:
.: {}
f:lastTransitionTime: {}
f:lastUpdateTime: {}
f:message: {}
f:reason: {}
f:status: {}
f:type: {}
f:observedGeneration: {}
f:readyReplicas: {}
f:replicas: {}
f:updatedReplicas: {}
manager: kube-controller-manager
operation: Update
time: "2021-01-29T07:56:22Z"
name: ui-comp
namespace: default
resourceVersion: "31111428"
selfLink: /apis/apps/v1/namespaces/default/deployments/ui-comp
uid: 2683b379-e3f3-4908-8db7-4a0617f40c0b
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: ui-comp
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: ui-comp
spec:
containers:
- image: neerajkp/sotool:ui
imagePullPolicy: Always
name: ui-comp
ports:
- containerPort: 8585
name: http
protocol: TCP
resources: {}
securityContext: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: regcred
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: ui-comp
serviceAccountName: ui-comp
terminationGracePeriodSeconds: 30
status:
availableReplicas: 1
conditions:
- lastTransitionTime: "2021-01-29T07:56:22Z"
lastUpdateTime: "2021-01-29T07:56:22Z"
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
- lastTransitionTime: "2021-01-29T07:56:19Z"
lastUpdateTime: "2021-01-29T07:56:22Z"
message: ReplicaSet "ui-comp-5458cd5654" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
observedGeneration: 1
readyReplicas: 1
replicas: 1
updatedReplicas: 1
controller-1:~$
修正后。
controller-1:~/neeraj/k8s/charts$ kubectl describe svc ui-comp
Name: ui-comp
Namespace: default
Labels: app=ui-comp
app.kubernetes.io/managed-by=Helm
Annotations: meta.helm.sh/release-name: ui-comp
meta.helm.sh/release-namespace: default
Selector: app=ui-comp
Type: NodePort
IP: 10.98.253.188
Port: <unset> 80/TCP
TargetPort: 8585/TCP
NodePort: <unset> 30003/TCP
Endpoints: 10.244.166.184:8585
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
controller-1:~/neeraj/k8s/charts$ curl http://10.207.5.1:30003
curl: (7) Failed connect to 10.207.5.1:30003; Connection refused
controller-1:~/neeraj/k8s/charts$
【问题讨论】:
-
共享您的 ui-comp 部署和 ui-comp 服务的 yaml 清单。
-
嗨 @ShashankV 更新了部署和服务清单。
-
共享实际部署的清单,而不是模板化的清单。你可以做
kubectl get svc ui-comp -oyaml和kubectl get deploy ui-comp -oyaml -
使用已部署的清单进行了更新。
标签: java angularjs docker kubernetes microservices