• <bdo id="qgeso"></bdo>
        • <strike id="qgeso"></strike>
        • <sup id="qgeso"></sup><center id="qgeso"></center>
        • <input id="qgeso"></input>

          微服務 - 搭建k8s(minikube)與簡單wordPress實戰

          首頁 > 探索 > > 正文

          日期:2023-03-06 03:17:45    來源:騰訊云    

          Kubernetes 的基本架構

          Kubernetes 的基本架構,由Matser和Node子節點組成,使用kubectl進行通信, Master 里的組件有哪些:

          Master 里有 4 個組件,分別是 apiserver、etcd、scheduler、controller-manager。

          Kubernetes 的基本架構圖

          Kubernetes 的基本架構,由Matser和Node子節點組成,使用kubectl進行通信, Master 里的組件有哪些:


          【資料圖】

          Master 里有 4 個組件,分別是 apiserver、etcd、scheduler、controller-manager。

          Api Server 系統唯一入口聯絡員,controller-manager監控運維節點容器狀態,kube scheduler負責容器的編排,etcd負責持久化存儲和服務發現。

          這 4 個組件也都被容器化了,運行在集群的 Pod 里,我們可以用 kubectl 來查看它們的狀態,使用命令:

          kubectl get pod -n kube-system

          安裝

          我使用的電腦是Mac pro M2芯的,使用的虛擬環境是 Ubuntu 22.04 ,M2芯兼容性不是特別好,所以盡量跟我博客中的版本保持一致。

          虛擬機環境 Ubuntu 22.04docker :20.10.17minikube:v1.25.2

          虛擬機初始化

          安裝虛擬機需要的工具,ip addr 查看ip,可以使用終端登錄虛擬機。

          sudo apt updatesudo apt install -y git vim curl jq openssh-server

          下載時請注意版本,以宿主機的版本為準,下載對應的版本,不然會報bash: /usr/local/bin/kubectl:無法執行二進制文件: 可執行文件格式錯誤的錯誤提示。

          curl -Lo minikube https://github.com/kubernetes/minikube/releases/download/v1.25.2/minikube-linux-arm64sudo install minikube /usr/local/bin/

          使用minikube version查看版本:

          minikube version: v1.25.2commit: 362d5fdc0a3dbee389b3d3f1034e8023e72bd3a7

          使用minikube kubectl命令來安裝kubectl:

          在這之前需要安裝docker,使用命令sudo snap install docker,把當前用戶加入到docker組,命令如下:

          sudo docker version --format {{.Server.Os}}-{{.Server.Version}}sudo groupadd dockersudo usermod -aG docker $USER && newgrp docker

          啟動:

          minikube start --image-mirror-country="cn"--image-repository="registry.cn-hangzhou.aliyuncs.com/google_containers"

          啟動完成后可以使用這兩個命令查看集群狀態:

          minikube statusminikube node list

          查看kubectl版本,minikube kubectl -- version

          使用 Linux 的“alias”功能,為它創建一個別名,寫到當前用戶目錄下的 .bashrc 里,也就是這樣:

          alias kubectl="minikube kubectl --"

          虛擬機安裝完成后,重啟一下虛擬機,不然會報Exiting due to DRV_NOT_HEALTHY:意思是沒找到容器的驅動器,有時間這個問題的原因是docker沒有啟動。

          執行kubectl run ngx --image=nginx:alpine,這里涉及 Kubernetes 里的一個非常重要的概念:Pod。

          命令執行之后kubectl get pod可以看到,在 Kubernetes 集群里就有了一個名字叫 ngx 的 Pod 正在運行,表示我們的這個單節點 minikube 環境已經搭建成功。

          插件

          查看插件的命令minikube addons list

          比較重要的有兩個:DNS 和 Dashboard。

          在 minikube 環境里執行一條簡單的命令,就可以自動用瀏覽器打開 Dashboard 頁面,而且還支持中文 minikube dashboard

          如果想設置外網可以訪問,執行命令kubectl proxy --port=8001 --address="192.168.88.131" --accept-hosts="^.*" &

          kubectl 常用命令

          編寫yaml文檔有兩個小技巧,一個是參考Kubernetes 的官方參考文檔,https://kubernetes.io/docs/reference/kubernetes-api/。

          第二個是使用kubectl命令:

          kubectl explain podkubectl explain pod.metadatakubectl explain pod.speckubectl explain pod.spec.containers

          使用kubectl例如寫入一個模版,輸出到一個指定文件中:

          kubectl run ngx --image=nginx:alpine --dry-run=client -o yaml > nginx_pod.yaml

          pod的關鍵在于yaml文件的編寫,然后用kubectl去執行:

          # 添加podkubectl apply -f nginx_pod.yaml# 刪除podkubectl delete pod [podname]# 查看pod節點kubectl get pod -o wide# 查看日志kubectl logs [podname]# 查看pod詳細情況kubectl describe pod [podname]# 登陸pod kubectl exec -it ngx-pod -- bash

          K8s nginx + WordPress + MariaDb 實戰

          先從搭建一個簡單的WordPress網站開始,在這之前你先了解一下yaml語言,因為k8s需要的通信都是建立在yaml語言之上,和web中的html一樣,是所有運行的基礎。

          nginx + WordPress + MariaDb流程圖

          先看看下圖,這是我們要完成的事情,也是k8s的原理所在,宿主機上搭建Nginx 做反向代理,相當于做了一次網關,K8s映射的端口,已達成通信的目的。

          1:部署MariaDB,準備yml文件 maria.yml

          apiVersion: v1kind: ConfigMapmetadata:  name: maria-cmdata:  DATABASE: "db"  USER: "wp"  PASSWORD: "123"  ROOT_PASSWORD: "123"---apiVersion: v1kind: Podmetadata:  name: maria-pod  labels:    app: wordpress    role: databasespec:  containers:  - image: mariadb:10    name: maria    imagePullPolicy: IfNotPresent    ports:    - containerPort: 3306    envFrom:    - prefix: "MARIADB_"      configMapRef:        name: maria-cm

          執行命令kubectl apply -y maria.yml

          2.部署WordPress的Pod

          執行kubectl get pod -o wide命令,查看maria-pod的IP地址和運行狀態,我本地的是172.17.0.6,狀態是Running,表示ok。

          node3@node3-virtual-machine:~/yaml$ kubectl get pod -o wideNAME        READY   STATUS    RESTARTS   AGE   IP           NODE       NOMINATED NODE   READINESS GATESmaria-pod   1/1     Running   0          96m   172.17.0.6   minikube              

          準備yml文件 wordpress-pod.yml

          apiVersion: v1kind: ConfigMapmetadata:  name: wp-cmdata:  HOST: "172.17.0.6"  USER: "wp"  PASSWORD: "123"  NAME: "db"---apiVersion: v1kind: Podmetadata:  name: wp-pod  labels:    app: wordpress    role: websitespec:  containers:  - image: wordpress:5    name: wp-pod    imagePullPolicy: IfNotPresent    ports:    - containerPort: 80    envFrom:    - prefix: "WORDPRESS_DB_"      configMapRef:        name: wp-cm

          執行部署命令,kubectl apply -f wordpress-pod.yml

          3.WordPress Pod 映射端口號,讓它在集群外可見

          因為 Pod 都是運行在 Kubernetes 內部的私有網段里的,外界無法直接訪問,想要對外暴露服務,需要使用一個專門的 kubectl port-forward 命令,它專門負責把本機的端口映射到在目標對象的端口號,經常用于 Kubernetes 的臨時調試和測試。

          kubectl port-forward wp-pod 8080:80 &

          如果想關閉端口轉發,需要敲命令 fg ,它會把后臺的任務帶回到前臺,然后就可以簡單地用“Ctrl + C”來停止轉發了。

          Dashboard

          4.創建反向代理的 Nginx

          nginx的配置文件,準備proxy.conf,我本地的路徑/home/node3/conf/proxy.conf

          server {  listen 80;  default_type text/html;  location / {      proxy_http_version 1.1;      proxy_set_header Host $host;      proxy_pass http://127.0.0.1:8080;  }}

          執行docker命令,我本機虛擬機的ip是192.168.88.131 :

          docker run -d --rm \    --net=host \    -v /home/node3/conf/proxy.conf:/etc/nginx/conf.d/default.conf \    nginx:alpine
          安裝完成

          關鍵詞: Kubernetes Docker WordPress 網站建設 Nginx

          下一篇:極度快感 每日簡訊
          上一篇:最后一頁

           
          国产三级日本三级日产三级66,五月天激情婷婷大综合,996久久国产精品线观看,久久精品人人做人人爽97
          • <bdo id="qgeso"></bdo>
              • <strike id="qgeso"></strike>
              • <sup id="qgeso"></sup><center id="qgeso"></center>
              • <input id="qgeso"></input>
                主站蜘蛛池模板: 久久人人爽人人爽av片| 免费无遮挡无码永久在线观看视频| 五月婷在线视频| 老司机亚洲精品| 蜜桃视频在线观看官网| 日韩激情中文字幕一区二区| 国产日韩视频在线观看| 免费一级毛片不卡不收费| 两个人看的www免费高清| 美女**视频一级毛片| 性色AV一区二区三区夜夜嗨| 国产手机在线精品| 亚欧洲精品在线视频免费观看| 日本成人在线看| 毛片大片免费看| 小仙女app2021版最新| 国产在线19禁在线观看| 久久精品久久精品| 亚洲一区二区三区高清| 欧美xxxxx高潮喷水| 国内精品久久久久久影院| 午夜视频一区二区三区| 一级毛片大全免费播放| 色一情一乱一伦一视频免费看| 扒开美妇白臀扒挺进在线视频| 古代np多夫h肉辣文| jizz老师喷水| 欧美福利在线观看| 国产精品亚洲一区二区三区在线观看 | **一级一级毛片免费观看| 欧美亚洲另类综合| 国产大学生粉嫩无套流白浆| 亚洲另类无码专区丝袜| 91麻豆国产级在线| 欧美亚洲精品suv| 国产在线拍揄自揄拍无码| 中文无码人妻有码人妻中文字幕| 精品人妻系列无码人妻免费视频| 日韩欧美一二三| 国产V亚洲V天堂无码网站| 一个人看的www日本高清视频|