我正在学习 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