minikube使用筆記


先說環境:

  IP 系統 備注 其它
Server 192.168.1.99 centos 7.6 淘汰的破本子  
Client  192.168.1.11  Win 10 當前用的本子  

啟動minikube

$ minikube start
* Centos 7.6.1810 上的 minikube v1.13.0
* 根據現有的配置文件使用 docker 驅動程序
* Starting control plane node minikube in cluster minikube
* Restarting existing docker container for "minikube" ...
* 正在 Docker 19.03.8 中准備 Kubernetes v1.19.0…
* Verifying Kubernetes components...
* Enabled addons: dashboard, default-storageclass, metrics-server, storage-provisioner
* Done! kubectl is now configured to use "minikube" by default

 

運行dashboard

$ minikube dashboard
* 正在驗證 dashboard 運行情況 ...
* Launching proxy ...
* 正在驗證 proxy 運行狀況 ...
* Opening http://127.0.0.1:35967/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
  - http://127.0.0.1:35967/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

 由於每於運行dashboard,端口都會變,不方便nginx做轉發, 所以我直接指定了一個固定的端口8080

並指定address與accept-hosts,這樣的話,在局域網內的其它電腦也可以訪問了

$ kubectl proxy --port=8080 --address=0.0.0.0 --accept-hosts='^*$'
Starting to serve on [::]:8080

接着在Client電腦上修改hosts文件,添加以下這條
192.168.1.99 k8s.peter.com
在Server中配置好nginx轉發
$ cat k8s.conf 
server
{
        listen 80;
        server_name k8s.peter.com;
        index index.html;

        location / {
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://localhost:8080/;
        }
}
最后就可以在Client通過瀏覽器打開以下URL訪問Dashboard了

http://k8s.peter.com/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

 

在minikube集群中運行一個nginx服務

1.創建發布文件nginx-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name:  nginx
  namespace: default
  labels:
    app:  nginx
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app:  nginx
    spec:
      containers:
      - name:  nginx
        image:  nginx:latest
        ports:
        - containerPort:  80

2.執行發布命令

kubectl apply -f nginx-deploy.yaml

3.查看結果

$ kubectl get pods -o wide
NAME                    READY   STATUS    RESTARTS   AGE     IP           NODE       NOMINATED NODE   READINESS GATES
nginx-585449566-tlznq   1/1     Running   0          8m56s   172.18.0.3   minikube   <none>           <none>

4.創建service發布文件nginx-svc.yaml

type用的是NodePort,端口是31000

apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  selector:
    app: nginx
  type: NodePort
  ports:
    - port: 8001
      targetPort: 80
      protocol: TCP
      nodePort: 31000

5.創建Service

kubectl apply -f nginx-svc.yaml

6.查看結果

$ kubectl get svc nginx -o wide
NAME    TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE   SELECTOR
nginx   NodePort   10.106.146.47   <none>        8001:31000/TCP   12m   app=nginx

 7.在Server中通過curl測試nginx是否可以訪問,其中的$(minikube service nginx --url)用來獲取上面創建的service的訪問地址

很明顯,我們已經可以在訪問nginx服務了

$ curl $(minikube service nginx --url)
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    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>

 

如果只是在Server機器上訪問nginx是不夠的,如果希望在Client機器上訪問nginx服務那應該怎么辦呢.

方法1:我們可以在Server這台機器中通過nginx轉發,來訪問minikube集群中的nginx服務

nginx配置文件如下

server
{
        listen 80;
        server_name k8s.peter.com;
        index index.html;

        location / {
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://localhost:8080/;
        }

        location /nginx/ {
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://172.17.0.2:31000/;
        }
}

然后就可以在瀏覽器中通過http://k8s.peter.com/nginx來訪問了

 

方法2:在Client這台機器中,通過ssh端口轉發,也是可以的,下面我們來試試:

首先,在Client這台機器中執行ssh執行端口轉發命令

ssh -N -L 31000:172.17.0.2:31000 root@192.168.1.99

這樣我們就可以在Client這台機器上通過http://127.0.0.1:31000來訪問minikube集群中的nginx服務了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM