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

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

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

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 get po -o wide

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。我认为您需要做的就是将此端口列入白名单以供 public 访问或 IP。这可以通过工作节点 EC2 的安全组来完成。

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

的确切地址
Pod Access URL = Public IP of Worker Node + The NodePort