kubernetes - 使用 yaml 文件向 minikube 公开服务
问题描述
这是我的第一个部署 yaml 文件,我正在像外部集群一样使用 minikube 测试 k8s,我会将 minikube 集群的端口 80 暴露给容器(webservice)的端口 8080。这是我的 yaml:
apiVersion: v1
kind: List
metadata:
resourceVersion: ""
selfLink: ""
items:
############ Services ###############
- apiVersion: v1
kind: Service
metadata:
name: kuard-80
labels:
component: webserver
app: k8s-test
spec:
ports:
- port: 80
targetPort: 8080
protocol: TCP
loadBalancerIP: 192.168.99.100 # Minikube IP from "minikube ip"
selector:
component: webserver
sessionAffinity: None
type: LoadBalancer
############ Deployments ############
- apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: kuard
labels:
component: webserver
app: k8s-test
spec:
replicas: 1 # tells deployment to run 1 pod matching the template
selector:
matchLabels:
component: webserver
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
component: webserver
spec:
volumes:
- name: "kuard-data"
hostPath:
path: "/var/lib/kuard"
containers:
- image: gcr.io/kuar-demo/kuard-amd64:1
name: kuard
volumeMounts:
- mountPath: "/data"
name: "kuard-data"
livenessProbe:
httpGet:
path: /healthy
port: 8080
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 10
failureThreshold: 3
ports:
- containerPort: 8080
protocol: TCP
restartPolicy: Always
我希望端口 80 在http://192.168.99.100上回答我,错误在哪里?这是一些命令、服务和端点的结果
$ kubectl 获取服务
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kuard-80 LoadBalancer 10.107.163.175 <pending> 80:30058/TCP 3m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 34d
$ kubectl 获取端点
NAME ENDPOINTS AGE
kuard-80 172.17.0.7:8080 10m
kubernetes 192.168.99.100:8443 34d
感谢您给我的任何帮助,如果问题很愚蠢,请原谅...
解决方案
您的服务是LoadBalancer
仅支持云的类型,因此您的外部 IP 处于待处理状态。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kuard-80 LoadBalancer 10.107.163.175 <pending> 80:30058/TCP 3m
您可以使用NodePort
minikube 公开您的服务。以下将是 yaml 文件:
apiVersion: v1
kind: Service
metadata:
name: kuard-80
labels:
component: webserver
app: k8s-test
spec:
ports:
- port: 80
targetPort: 8080
protocol: TCP
selector:
component: webserver
type: NodePort
现在,当你这样做时,kubectl describe service kuard-80
你将能够看到一个类型的端口,NodePort
其值将在 30000-32767 之间。您将能够使用以下方式访问您的应用程序:
http://<vm_ip>:<node_port>
希望这可以帮助
推荐阅读
- dataframe - 如何在 pyspark 中创建一个行值相同的新列?
- c - 用用户输入 C 替换值列表
- python - 如何将熊猫系列的引用传递到字典中?
- python - 如何在views.py中的API中设置.save()数据时设置ForeignKey字段
- swift - 如果 UIViewController 成功解除分配,没有保留周期?
- c# - 使用 MVVM 编辑时克隆要查看的对象
- c# - .SaveChanges() 不保存到数据
- azure-devops - Azure DevOps:使用作业矩阵变量填充安全文件引用
- mongodb - MongoDB 无法连接连接超时:通过 Atlas 连接
- flutter - 键盘在颤动中阻碍屏幕