首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Kubeadm NodePort集群外访问K8S服务

在Kubeadm NodePort集群外访问K8S服务
EN

Stack Overflow用户
提问于 2022-02-14 05:15:42
回答 2查看 404关注 0票数 0

在我的Windows 11笔记本电脑上,我有两个使用Oracle虚拟盒创建的Ubuntu。我使用kubeadm与这两个Ubuntu建立了一个k8s集群,其中一个是主节点,另一个是工作节点。这两个节点都使用Ubuntu20.04.3LTS和docker://20.10.7运行。我将我的春季引导应用程序部署到k8s集群中,并使用端口30000为我的春季引导应用程序公开了一个节点端口服务,但我不太确定如何在集群之外的internet上访问我的节点端口服务。你能帮我解决这个问题吗?

以下是k8s集群中my节点的IP地址--主节点192.168.254.94和工作者192.168.254.95。我试过使用以下urls,但它们都没有工作。

http://192.168.254.94:30000/swagger-ui.html http://192.168.254.95:30000/swagger-ui.html

上面这些urls会抛出拒绝连接的消息。

http://192.168.9.13:30000/swagger-ui.html http://192.168.9.14:30000/swagger-ui.html

上面的这些urls表示无法到达该站点。

下面是我用于部署spring引导应用程序及其相应服务的application.yaml的内容

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
   name: dealer-engine
spec:
   replicas: 1
   selector:
      matchLabels:
         app: dealer-engine
   template:
      metadata:
        labels:
           app: dealer-engine
      spec:
         containers:
            - name: dealer-engine
              image: moviepopcorn/dealer_engine:0.0.1
              ports:
                 - containerPort: 9090
              env:
                 - name: MONGO_URL
                   value: mongodb://mongo-service:27017/mazda
              imagePullPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
   name: dealer-engine
spec:
   type: NodePort
   selector:
      app: dealer-engine
   ports:
      - port: 9091
        targetPort: 9090
        nodePort: 30000
   externalIPs:
    - 10.0.0.12

我是k8s的初学者,所以请帮助我如何在k8s集群之外访问我的节点端口服务。

EN

回答 2

Stack Overflow用户

发布于 2022-02-15 22:09:13

我创建了一个新的简单Springboot应用程序,它返回"Hello!“当调用以下端点"/helloWorld“时,返回给用户。我使用下面的yaml配置将这个春季引导应用程序部署到我的k8s集群中

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
   name: hello-world
spec:
   replicas: 1
   selector:
      matchLabels:
         app: hello-world
   template:
      metadata:
        labels:
           app: hello-world
      spec:
         containers:
            - name: hello-world
              image: moviepopcorn/hello_world:0.0.1
              ports:
                 - containerPort: 9091
              imagePullPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
   name: hello-world
spec:
   type: NodePort
   selector:
      app: hello-world
   ports:
      - port: 9091
        targetPort: 9091
        nodePort: 30001

成功部署之后,我可以使用下面的url :访问:

谢谢大家的回答和意见。非常感谢。

票数 1
EN

Stack Overflow用户

发布于 2022-02-14 06:28:03

你有没有安装像法兰绒这样的CNI插件?

如果是,请检查这里的CIDR设置。

代码语言:javascript
复制
kubectl get node k8s-master -o yaml | grep podCIDR:
kubectl get configmap -n kube-system kube-flannel-cfg -o yaml | grep '"Network":'

基本上是的CNI是必须的。法兰绒是最简单的。

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network您必须部署一个基于容器网络接口(CNI)的Pod网络附加组件,以便您的Pod可以相互通信。群集DNS (CoreDNS)在安装网络之前不会启动。

  1. 在每台服务器上下载cni

代码语言:javascript
复制
# download cni plugin
wget https://github.com/containernetworking/plugins/releases/download/v0.9.1/cni-plugins-linux-amd64-v0.9.1.tgz
sudo mkdir -p /opt/cni/bin
sudo tar -xzvf cni-plugins-linux-amd64-v0.9.1.tgz -C /opt/cni/bin

  1. 重置您的集群

代码语言:javascript
复制
kubeadm reset

使用cidr设置的10.244.0.0

  1. 必须与法兰绒配置相同,默认为

代码语言:javascript
复制
kubeadm init --pod-network-cidr=10.244.0.0/16

  1. 应用cni插件.

代码语言:javascript
复制
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71107426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档