【问题标题】:How can I access from network newly deployed pod in kubernetes?如何从 Kubernetes 中新部署的网络访问 pod?
【发布时间】:2017-11-07 03:54:07
【问题描述】:

我是 Kubernetes 的新手,我知道我遗漏了一些小东西,但看不到什么。 我正在创建一个带有文件的 pod:kubectl create -f mysql.yaml

apiVersion: v1
kind: Pod
metadata:
  name: mysql
  labels:
    name: mysql
spec:
  containers:
    - resources:
        limits :
          cpu: 2
      image: mysql
      name: mysql
      env:
        - name: MYSQL_ROOT_PASSWORD
          # change this
          value: TestingDB1
      ports:
        - containerPort: 3306
          name: mysql

还有一个服务:kubectl create -f mysql_service.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    name: mysql
  name: mysql
spec:
  externalIPs:
    - 10.19.13.127
  ports:
    - port: 3306
  selector:
    name: mysql

“kubectl 版本”的输出

Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"d33fd89e399396658aed4e48dfe7d5d8d50ac6e8", GitTreeState:"clean", BuildDate:"2017-05-26T17:08:24Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"d33fd89e399396658aed4e48dfe7d5d8d50ac6e8", GitTreeState:"clean", BuildDate:"2017-05-26T17:08:24Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}

“kubectl 集群信息”的输出

Kubernetes master is running at http://localhost:8080

“kubectl get pods”的输出

NAME                    READY     STATUS    RESTARTS   AGE
mysql                   1/1       Running   0          20m

“kubectl get svc”的输出

NAME         CLUSTER-IP       EXTERNAL-IP    PORT(S)    AGE
kubernetes   10.254.0.1       <none>         443/TCP    18h
mysql        10.254.129.206   10.19.13.127   3306/TCP   1h

“kubectl get no”的输出

NAME           STATUS    AGE
10.19.13.127   Ready     19h

“docker ps”的输出

CONTAINER ID        IMAGE                                      COMMAND                  CREATED             STATUS              PORTS               NAMES
74ea1fb2b383        mysql                                      "docker-entrypoint.sh"   3 minutes ago       Up 3 minutes                            k8s_mysql.ae7893ad_mysql_default_e58d1c09-4a8e-11e7-9baf-fa163ee3f5d9_793d8d7c

我可以看到 Pod 正在正常创建。即使我连接到容器,我也可以使用凭据登录到 mysql。

我的问题是: 如何从我的网络访问/公开在我的 kubernetes 节点上运行的端口?例如,我想从我的 PC 远程登录到运行 mysql pod 的 kubernetes 节点。

谢谢!

【问题讨论】:

  • 通过该配置,您应该能够通过 10.19.13.127:3306 访问您的 pod。你试过“telnet 10.19.13.127 3306”吗?发生什么了?你检查过防火墙规则吗?

标签: docker kubernetes


【解决方案1】:

下面的命令验证Redis服务器是在pod中运行并监听哪个端口(一般是运行在6379端口):

kubectl get pods redis-master --template='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'

输出:6739

【讨论】:

    【解决方案2】:

    以下命令为您提供一个 pod 监听端口,因此您可以创建路由或端口转发来访问服务

    kubectl get pod <pod_name> -o "go-template={{(index (index .spec.containers 0).ports 0).containerPort}}
    

    【讨论】:

      猜你喜欢
      • 2021-06-19
      • 2019-05-26
      • 2018-02-15
      • 1970-01-01
      • 2020-07-27
      • 2021-09-21
      • 1970-01-01
      • 2017-03-14
      • 2018-11-16
      相关资源
      最近更新 更多