k8s实现外部访问minikube集群

minikube部署对外访问配置

我们现在大家都知道了 minikube集群相当于k8s的一个虚拟机。

同时pod每次消亡重建之后都会分配一个虚拟的ip,这个ip可供集群内部访问,但是如果要对外访问呢?

我们可以给他暴露ip出来,但是如果pod宕机后重建ip就发生了变化,所以不能对pod进行ip的暴露。

那应该对什么进行暴露呢?

我们首先需要了解service,简而言之,为了解决pod动态变化的虚拟ip,因此service 相当于某组pod的外部访问接口。因此我们对service为单位进行ip的暴露即可。这同时也解决了在minikube中一开始学习的时候必须要进入minikube之后才可以访问pod的问题。

From 黑马 图片取自黑马
lucky@thinkcentre:/work/k8s$ kubectl expose deploy nginx --name=svc-nginx1 --type=ClusterIP --port=80 --target-port=80 -n dev
service/svc-nginx1 exposed
lucky@thinkcentre:/work/k8s$ kubectl get svc svc-nginx1 -n dev -o wide
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE   SELECTOR
svc-nginx1   ClusterIP   10.111.120.200   <none>        80/TCP    30s   run=nginx
lucky@thinkcentre:/work/k8s$ curl 10.111.120.200:80
^C
lucky@thinkcentre:/work/k8s$ minikube ssh
Last login: Thu Mar  9 10:23:21 2023 from 192.168.49.1
docker@minikube:~$ curl 10.111.120.200:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
docker@minikube:~$

上面暴露端口的方式是clusterIp,因此还是只是集群内部可以访问,只不过相比较上一节minikube外部无法访问pod来说没有实质性的改变,改变的只不过是访问svc从而访问高可用pod。因此我们想要minikube外部可以访问的话,就需要将type修改为NodePort

kubectl expose deploy nginx --name=svc-nginx2 --port=80 --target-port=80 --type=NodePort -n dev
# port-forward 端口转发且允许任意ip访问
kubectl port-forward --address 0.0.0.0 -n dev service/svc-nginx2 80:80

执行上述命令后 即可在同一网段内访问nginx,不受minikube限制,如果想让外网访问,则需要对80端口做一个内网穿透,参考我之前的文章即可。

其实从port-forward可以看出本质是端口转发到主机而已
image-20230310090645549

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要部署一个MinIO集群,你可以按照以下步骤进行操作: 1. 安装Kubernetes(K8s)集群:确保你已经安装了一个可用的K8s集群。你可以使用任何K8s发行版,如Minikube、kubeadm或云厂商提供的托管服务。 2. 创建一个MinIO命名空间:在K8s集群中创建一个命名空间,以便将MinIO组件隔离在单独的环境中。你可以使用以下命令创建命名空间: ``` kubectl create namespace minio ``` 3. 创建PersistentVolume(持久卷):MinIO需要持久存储来保存数据。你可以使用自己的存储解决方案,比如使用云提供商的块存储,或者使用K8s的PersistentVolumeClaim(PVC)来动态分配存储。以下是一个示例PVC的定义: ```yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: minio-pvc namespace: minio spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi ``` 创建PVC: ``` kubectl apply -f pvc.yaml ``` 4. 部署MinIO StatefulSet:使用以下示例YAML文件创建一个MinIO StatefulSet: ```yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: minio namespace: minio spec: selector: matchLabels: app: minio serviceName: minio replicas: 4 template: metadata: labels: app: minio spec: containers: - name: minio image: minio/minio:RELEASE.2021-05-28T03-42-40Z ports: - containerPort: 9000 volumeMounts: - name: minio-data mountPath: /data env: - name: MINIO_ACCESS_KEY value: your-access-key - name: MINIO_SECRET_KEY value: your-secret-key volumes: - name: minio-data persistentVolumeClaim: claimName: minio-pvc ``` 请确保在`MINIO_ACCESS_KEY`和`MINIO_SECRET_KEY`环境变量中设置了适当的访问密钥。 创建StatefulSet: ``` kubectl apply -f minio-statefulset.yaml ``` 这将在MinIO命名空间中创建一个包含4个MinIO实例的StatefulSet。 5. 暴露MinIO服务:为了从外部访问MinIO集群,你可以使用Service对象将MinIO服务公开出去。以下是一个示例Service的定义: ```yaml apiVersion: v1 kind: Service metadata: name: minio-service namespace: minio spec: selector: app: minio ports: - protocol: TCP port: 9000 targetPort: 9000 type: LoadBalancer ``` 创建Service: ``` kubectl apply -f minio-service.yaml ``` 这将创建一个类型为LoadBalancer的Service,自动分配一个外部IP地址。 现在,你应该能够通过MinIO服务的外部IP地址访问MinIO集群了。你可以使用MinIO客户端或通过Web浏览器访问MinIO UI来管理和操作对象存储。记得根据你的需求修改上述示例中的配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值