繁体   English   中英

无法与使用 kubernetes 在 AWS EC2 实例中本地创建的 Pod 通信

[英]Not able to communicate with Pods locally created in AWS EC2 instance with kubernetes

我在 Ubuntu EC2 实例中创建了简单的 nginx 部署,并通过 kubernetes 集群中的服务暴露于端口,但我无法在本地环境中 ping 通。 我的 Pod 运行良好,服务也成功创建。 我在下面分享一些命令输出

kubectl 获取节点

NAME               STATUS   ROLES    AGE     VERSION
ip-172-31-39-226   Ready    <none>   2d19h   v1.16.1
master-node        Ready    master   2d20h   v1.16.1

kubectl 获取 po -o 宽

NAME                                READY   STATUS    RESTARTS   AGE    IP              NODE               NOMINATED NODE   READINESS GATES
nginx-deployment-54f57cf6bf-dqt5v   1/1     Running   0          101m   192.168.39.17   ip-172-31-39-226   <none>           <none>
nginx-deployment-54f57cf6bf-gh4fz   1/1     Running   0          101m   192.168.39.16   ip-172-31-39-226   <none>           <none>
sample-nginx-857ffdb4f4-2rcvt       1/1     Running   0          20m    192.168.39.18   ip-172-31-39-226   <none>           <none>
sample-nginx-857ffdb4f4-tjh82       1/1     Running   0          20m    192.168.39.19   ip-172-31-39-226   <none>           <none>

kubectl 获取 svc

NAME               TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes         ClusterIP      10.96.0.1       <none>        443/TCP        2d20h
nginx-deployment   NodePort       10.101.133.21   <none>        80:31165/TCP   50m
sample-nginx       LoadBalancer   10.100.77.31    <pending>     80:31854/TCP   19m

kubectl 描述部署 nginx-deployment

Name:                   nginx-deployment
Namespace:              default
CreationTimestamp:      Mon, 14 Oct 2019 06:28:13 +0000
Labels:                 <none>
Annotations:            deployment.kubernetes.io/revision: 1
                        kubectl.kubernetes.io/last-applied-configuration:
                          {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"nginx-deployment","namespace":"default"},"spec":{"replica...
Selector:               app=nginx
Replicas:               2 desired | 2 updated | 2 total | 2 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=nginx
  Containers:
   nginx:
    Image:        nginx:1.7.9
    Port:         80/TCP
    Host Port:    0/TCP
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
  Progressing    True    NewReplicaSetAvailable
OldReplicaSets:  <none>
NewReplicaSet:   nginx-deployment-54f57cf6bf (2/2 replicas created)
Events:          <none>

现在我无法从 master ping 192.168.39.17/16/18/19,也无法从 master 访问 curl 172.31.39.226:31165/31854。 任何帮助将不胜感激..

根据您提供的信息。 从讨论中,我们发现工作节点运行了 Nginx pod。 并且您已将 NodePort 服务和负载均衡器服务附加到它。

这里唯一缺少的是您尝试访问它的服务器。

所以,我试图达到这个 URL 52.201.242.84:31165 我认为您需要做的就是将此端口列入白名单以供公共访问或 IP。 这可以通过工作节点 EC2 的安全组来完成。

现在上面的 URL 是由工作节点的公共 IP 加上(+)附加的NodePort svc 构建的。 因此,这是一个简单的公式,您可以使用它来获取正在运行的 pod 的确切地址。

Pod Access URL = Public IP of Worker Node + The NodePort 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM