K8s:如何通过服务访问我的应用程序?

2023-11-29

我正在学习 K8s 并在 OSX 上安装了 minikube。我正在阅读 Nigel Poulton 的 K8s 书,并在第 5 章(部署)中进行实验。

我有这样的部署:

k8s cat deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-deploy
spec:
  replicas: 10
  selector:
    matchLabels:
      app: hello-world
  minReadySeconds: 10
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - name: hello-pod
        image: nigelpoulton/k8sbook:latest
        ports:
        - containerPort: 8080

该服务使用节点端口:

k8s cat svc.yaml 
 apiVersion: v1
 kind: Service
 metadata:
    name: hello-svc
    labels:
      app: hello-world
 spec:
    type: NodePort
    ports:
    - port: 8080
      nodePort: 30001
      protocol: TCP
    selector:
      app: hello-world

该应用程序是一个简单的 Nodejs 应用程序:

/src # cat app.js 
// Sample node.js web app for Pluralsight Docker CI course
// For demonstration purposes only
'use strict';
var express = require('express'),
app = express();
app.set('views', 'views');
app.set('view engine', 'pug');
app.get('/', function(req, res) {
res.render('home', {
});
});
app.listen(8080);
module.exports.getApp = app;

该应用程序正在运行。当我访问 Pod 时,我可以卷曲它:

kubectl exec -it hello-deploy-8d494c7f6-27528 sh

/src # apk add curl
 
/src # curl localhost:8080
<html><head><title>K8s rocks!</title><link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css"/></head><body><div class="container"><div class="jumbotron"><h1>Kubernetes Rocks!</h1><p>Check out my K8s Deep Dive course!</p><p> <a class="btn btn-primary" href="https://acloud.guru/learn/kubernetes-deep-dive">The video course</a></p><p></p></div></div></body></html>/src # 

但如果我从 macOS 卷曲它就不起作用:

 ➜ k8s minikube ip
127.0.0.1

➜ k8s curl localhost:30001
curl: (7) Failed to connect to localhost port 30001: Connection refused

我缺少什么?

编辑:包括更多输出:

kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
hello-svc    NodePort    10.98.184.143   <none>        8080:30001/TCP   6h15m
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP          22h


➜  k8s minikube service list
|-------------|------------|--------------|-----|
|  NAMESPACE  |    NAME    | TARGET PORT  | URL |
|-------------|------------|--------------|-----|
| default     | hello-svc  |         8080 |     |
| default     | kubernetes | No node port |
| kube-system | kube-dns   | No node port |
|-------------|------------|--------------|-----|
➜  k8s 

minikube 在 Mac 上的虚拟机中运行,因此 minikube IP 不是127.0.0.1。它实际上是 Mac 看到的虚拟机的 IP 地址。现在我不确定你为什么会这样127.0.0.1因为这对我来说效果很好:

$ minikube start
									
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

K8s:如何通过服务访问我的应用程序? 的相关文章

随机推荐

  • 无法对数组类型调用 add

    我得到了一些需要修改的代码 这是一个囚徒困境游戏 最初玩家被设置了这段代码到一个数组中 IPDPlayer currentPlayers new RandomPlayer new TFTPlayer new TFTPlayer new TF
  • 如何在pyglet中连续播放音乐

    我和我的朋友正在开发一款游戏 我们希望音乐在游戏运 行时循环播放 求助 好像没有重复播放音乐的功能 在当前版本的 pyglet 中 您应该使用SourceGroup 设置loop归因于True 然后您可以将其排队到Player播放它 snd
  • javascript倒计时器暂停恢复

    起初 我的倒计时器没有暂停和恢复功能 并且计时器运行得很好 现在我刚刚添加了该功能 暂停没有问题 但恢复时间有问题 时间不会从当前位置开始显示 也不会从那里开始倒计时 如何更改我的代码 pause click function Get cu
  • Android 浮动操作按钮未返回到初始位置

    如果 FAB 浮动操作按钮 在小吃栏出现之前隐藏 在 CoordinatorLayout 中 那么下次我显示 FAB 时 它会在旧位置绘制 不会向下移动到原始位置 如果当小吃栏消失时 FAB 可见 则一切都按预期工作 我错过了什么还是一个错
  • “Set-AzureRmDataFactoryV2”未被识别为 cmdlet 的名称

    我已经在 Ubuntu 16 04 上安装了 Powershell 6 0 0 尝试使用 Powershell 创建 Azure 数据工厂时出现以下错误 Set AzureRmDataFactoryV2 The term Set Azure
  • 获取mp3文件长度

    我目前正在尝试用 C 编写一个音频播放器 我正在使用 BASS 库来处理播放音乐 但现在我在获取歌曲长度方面遇到了小问题 好吧 我读过 BASS 文档并找到了一种方法 我需要做的 所有 就是 int stream Bass BASS Str
  • 使用 Containable 对关联模型 (HABTM) 上的条件过滤的结果进行分页

    我需要对列表进行分页Products 属于特定Category HABTM 协会 In my Product我有的型号 var actsAs array Containable var hasAndBelongsToMany array C
  • 如何在cmake中链接所有LLVM库?

    我想链接我的 cmake C 项目中的所有 LLVM 库 I use llvm config components为了获得 LLVM 的所有组件 它给了我 llvm config components aarch64 aarch64asmp
  • 使用 Greasemonkey 将日期选择器添加到文本框

    有一个需要日期但没有日期选择器的文本框 我想用 Greasemonkey 添加一个 我寻找一个例子 但找不到 这可能吗 有这样做的例子吗 它不需要很花哨 我喜欢用jQuery UI 的 datepicker 因为我通常都会加载 jQuery
  • 为什么 git 会在每个命令名称前添加“git-”?

    如果我需要帮助git status命令 我可以输入git help status 并返回一个帮助页面 显示名称为 git status But git status 不是命令 命令是git status有一个空格 而不是连字符 如果我输入g
  • 来自 Qt 中 main.cpp 代码的 MainWindow

    想要了解之间的代码差异MainWindow和main cpp 具体来说 如何专门编写一段代码main cpp需要修改为的一部分mainwindow cpp and mainwindow h 作为一个例子 我试图修改这个罚款的代码answer
  • 函数返回后不更改指针

    语言是 Go Golang 功能initApp正在接收一个指向对象的指针 Go 中的 struct 在函数内部 我创建一个新的对象指针并初始化该对象的值 打印和调试器都显示在函数返回之前一切都很好 但在返回之后 作为函数参数的指针具有与函数
  • 如何从命令行重建并运行 android 项目

    我想创建与 android studio 通过命令行在后台运行的相同进程 like first clean project gt build project gt Run Project all through command line 可
  • PLC 中的定时器 - 结构化文本

    PLC 结构化文本 ST 中的计时器如何工作 我们如何声明它们 我一直在研究PLC的标准 IEC 61131 3 他们没有谈到ST中的定时器 我知道绝大多数 PLC 程序员都是用梯形图逻辑来完成这些任务 但在这种特殊情况下 我确实需要在 S
  • ActionBar 选项卡标题中的自定义字体

    我正在尝试在我的上设置自定义字体ActionBar选项卡的标题 我看到更多的开发人员要求以正确的方式在 SO 上执行此操作 例如如何自定义操作栏选项卡的字体 如何 如果可能 在选项卡文本的 ActionBar 中使用资产文件夹中的字体设置自
  • ValueError:应在输入列表上调用合并层。张量流 Keras

    我目前正在尝试使用 MobileNetV2 的前 50 层 因此 我想提取这些层并创建一个新模型 我以为我可以调用每一层 但是 block 2 add 层会导致错误 我不明白为什么 import tensorflow as tf from
  • 使用服务器进行表单验证

    我有一个表单 我想通过检查电子邮件是否存在来执行 http 验证 但它返回错误 这是我的表格 在表单组件上 constructor private formBuilder FormBuilder private validationServ
  • 如何隐藏jSlider的旋钮?

    我需要自定义JSlider的旋钮 我需要将我自己的旋钮图像放在 Jslider 的默认旋钮上 问题是目前有两个旋钮做出响应 一个是我自己的旋钮 第二个是默认旋钮 请告诉我如何隐藏默认旋钮或任何其他解决方案 下面的代码用于执行此操作 publ
  • 反向地理编码在某些 Android 设备上不起作用?

    我正在开发一个地图应用程序 无法在该手机中获取地址 其android版本是4 3 如下所示 但它在我的手机上运行良好 其版本是4 1 2 如下所示 它在某些棒棒糖版本中运行良好 final Geocoder gc new Geocoder
  • K8s:如何通过服务访问我的应用程序?

    我正在学习 K8s 并在 OSX 上安装了 minikube 我正在阅读 Nigel Poulton 的 K8s 书 并在第 5 章 部署 中进行实验 我有这样的部署 k8s cat deploy yaml apiVersion apps
Powered by Hwhale