我正在尝试访问 Kubernetes 集群部署的 Spring Boot 微服务并尝试测试 REST API。我在部署脚本中配置了节点端口方法。但是当我尝试使用 Postman 工具访问时,我只得到“无法得到任何响应”的响应。
我像下面的结构一样配置了service.yaml脚本,
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: NodePort
ports:
- port: 7100
targetPort: 7100
protocol: TCP
name: http
nodePort: 31007
selector:
app: my-deployment
Run Code Online (Sandbox Code Playgroud)
我的deployment.yaml如下所示,
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
labels:
app: my-deployment
spec:
replicas: 1
selector:
matchLabels:
app: my-deployment
template:
metadata:
labels:
app: my-deployment
annotations:
date: "+%H:%M:%S %d/%m/%y"
spec:
imagePullSecrets:
- name: "regcred"
containers:
- name: my-deployment-container
image: spacestudymilletech010/spacestudysecurityauthcontrol:latest
imagePullPolicy: Always
ports:
- name: http
containerPort: 8065
protocol: TCP
tolerations:
- key: "dedicated-app"
operator: "Equal"
value: "my-dedi-app-a"
effect: "NoSchedule"
Run Code Online (Sandbox Code Playgroud)
当我服用时kubectl describe service,输出如下所示,
我正在尝试访问我部署的 api 像下面这样,
http://<my-cluster-Worker-NodeIP-Address:31007/<my-deployed-ReST-API-end-point>
Run Code Online (Sandbox Code Playgroud)
更新
当我kubectl describe pod为我的部署运行命令时,我收到如下响应,
docker@MILDEVKUB010:~$ kubectl describe pod spacestudycontrolalerts-
deployment-8644449c58-x4zd6
Name: spacestudycontrolalerts-deployment-8644449c58-x4zd6
Namespace: default
Priority: 0
Node: <none>
Labels: app=spacestudycontrolalerts-deployment
pod-template-hash=8644449c58
Annotations: date: +%H:%M:%S %d/%m/%y
Status: Pending
IP:
IPs: <none>
Controlled By: ReplicaSet/spacestudycontrolalerts-deployment-8644449c58
Containers:
spacestudycontrolalerts-deployment-container:
Image: spacestudymilletech010/spacestudycontrolalerts:latest
Port: 7102/TCP
Host Port: 0/TCP
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-6s55b (ro)
Conditions:
Type Status
PodScheduled False
Volumes:
default-token-6s55b:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-6s55b
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling <unknown> default-scheduler 0/2 nodes are available: 2 node(s) had taints that the pod didn't tolerate.
Run Code Online (Sandbox Code Playgroud)
我从0/2 nodes are available: 2 node(s) had taints that the pod didn't tolerate.如上所示的describe pod 命令获取事件消息。
当我运行kubectl get nodescommand 时,我得到如下内容,
NAME STATUS ROLES AGE VERSION
mildevkub020 Ready master 5d v1.17.0
mildevkub040 Ready master 5d v1.17.0
Run Code Online (Sandbox Code Playgroud)
服务访问哪里出错了?
Aam*_*man 12
如果有一个事件消息,即0/2 nodes are available: 2 node(s) had taints that the pod didn't tolerate. 这意味着您的节点存在污点。
第 1 步:- 验证是否存在污点
kubectl describe node | grep -i taint
第 2 步:- 删除污点,验证它已被删除。
请注意,该键使用末尾附加一个减号。
kubectl taint nodes --all node-role.kubernetes.io/master-
kubectl taint nodes --all node-role.kubernetes.io/not-ready-
kubectl taint nodes --all node-role.kubernetes.io/unreachable-
第 3 步:- 然后根据您的deployment.yaml文件,我们需要创建污点。
kubectl taint nodes node1 dedicated-app:my-dedi-app-a:NoSchedule
第 4 步:- 验证是否存在污点
kubectl describe node | grep -i taint
第 5 步:- 部署您的 .yaml 文件
kubectl apply -f deployment.yaml
您可以在 PodSpec 中为 Pod 指定容忍度。以下两个容忍度“匹配”由上面的 kubectl taint 行创建的污点,因此具有任一容忍度的 pod 都能够调度到node1
https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
此外,您describe pod显示您的部署名称是spacestudycontrolalerts-deployment. 这让我们对您的deployment.yaml 文件感到困惑,即metadata.Name: my-deployment。Make sure you describe pod with respective deployment name.
我希望这能帮助大家将来参考 Taints 和 Tolerations。
| 归档时间: |
|
| 查看次数: |
2015 次 |
| 最近记录: |