这是我的第一个部署yaml文件,我正在像外部集群一样使用minikube测试k8s,我会将minikube集群的端口80暴露给容器(Web服务)的8080端口。这是我的Yaml:
element.addEventListener('click', (e) => {//do something on click on element})
我希望80端口在http://192.168.99.100上回答我,哪里出错了?这是一些命令,服务和端点的结果
$ kubectl获得服务
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
$ 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
谢谢您的帮助,如果问题很愚蠢,请原谅我。
答案 0 :(得分:4)
您的服务属于LoadBalancer
类型,仅云支持此服务,因此您的外部ip处于待处理状态。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kuard-80 LoadBalancer 10.107.163.175 <pending> 80:30058/TCP 3m
您可以在minikube中使用NodePort
公开服务。以下是该文件的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>
希望这会有所帮助
答案 1 :(得分:0)
在基于 minikube 或 KinD 的集群上,您可以运行 MetalLB。这是一个裸机 LB 产品。要在使用 minikube 或 KinD 创建的本地集群上安装 MetalLB,您需要在类似 yaml 下运行。
您需要一个名为 metal-lb.yaml 的 yaml 文件,其中包含以下内容:
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 192.168.1.31-192.168.1.40
随意更改ip范围。
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.5/manifests/namespace.yaml
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.5/manifests/metallb.yaml
kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"
kubectl apply -f ./metal-lb.yaml
然后您也可以创建 LoadBalancer 类型的服务。