Kubernetes 的基本架構,由Matser和Node子節點組成,使用kubectl進行通信, Master 里的組件有哪些:
Master 里有 4 個組件,分別是 apiserver、etcd、scheduler、controller-manager。
【資料圖】
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="^.*" &
編寫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.yamlpod的關鍵在于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先從搭建一個簡單的WordPress網站開始,在這之前你先了解一下yaml語言,因為k8s需要的通信都是建立在yaml語言之上,和web中的html一樣,是所有運行的基礎。
先看看下圖,這是我們要完成的事情,也是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”來停止轉發了。
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免責聲明:本文不構成任何商業建議,投資有風險,選擇需謹慎!本站發布的圖文一切為分享交流,傳播正能量,此文不保證數據的準確性,內容僅供參考
關鍵詞:
微服務 - 搭建k8s(minikube)與簡單wordPress實戰
Kubernetes的基本架構,由Matser和Node子節點組成,使用kubectl進行通信,Master里的組件有哪些:
造型師學校_關于造型師學校的基本詳情介紹-資訊
1、毛戈平形象設計藝術學校由中國著名化妝大師毛戈平先生親自創辦,是以彩妝培訓、形象設計培訓為主導的專業藝術學校,是全國同
蘇州姑蘇區清明節掃墓預約入口+流程-速看
一、預約入口點擊進入|蘇周到APP|蘇州民政微信公眾號對室外現場祭掃確有需求的群眾可掃上方二維碼,登錄“蘇城數字殯葬”公益信息平臺,...
新加坡旅游最長時間_新加坡旅游最佳時間-全球短訊
1、新加坡馬來西亞最佳旅游時間現在去就非常不錯哦!不過具體情況您還是找個旅行社詳細了解下!。本文到此分享完畢,希望對大家
克莉絲汀(01210.HK)計劃通過合適的融資方式解決流動資金問題并于上半年恢復營業
克莉絲汀(01210 HK)公布,由于新型冠狀病毒疫情持續沖擊及集團主要營業地點進行封控,消費者支出減少,集團業務遭受嚴重打擊。盡管該集團積極
京東CEO徐雷:百億補貼是京東價格策略的一部分 效果超過預期-天天速看料
京東CEO徐雷:百億補貼是京東價格策略的一部分效果超過預期
全市場:意大利國家隊挖角阿根廷,阿超射手王將為意大利效力
《全市場》透露意大利國家隊已經邀請阿根廷前鋒馬特奧-雷特吉代表意大利參賽,而球員已經同意。意大利國家隊主帥曼奇尼此前在接受采訪時...
涼拌粉熱量高不高_涼拌粉-每日視訊
1、江西涼拌粉的做法,先將米粉放入水中煮熟,后將熟粉從熱鍋中倒入冷水盆中急驟降溫,放入簸箕中將水濾干,待吃時可依據氣溫隨
借東西的小人阿莉埃蒂電影_關于借東西的小人阿莉埃蒂電影的基本詳情介紹
1、《借東西的小人阿莉埃蒂》是日本吉卜力工作室制作的動畫電影,也是米林宏昌執導的首部電影。2、影片于2010年7月17日
0.54秒的浪漫,他們拍到了!
中國空間站“穿月”的畫面你見過嗎?中國空間站“穿月”的畫面(畫面做變慢處理)7日凌晨1時16分6秒清華大學博士生張嘉奇等人在清華大學...
中國援柬中醫醫療隊赴暹粒義診-天天觀察
當地時間3月9日,中國援柬中醫抗疫...
代表委員這一天丨楊登輝:用心精準打磨建議 當好技能人才“代言人”-世界要聞
今年兩會,“95后”全國人大代表、...
全國人大代表徐楓燦:夢想是綠色的,那是青春
央視網消息:全國人大代表徐楓燦是...
湖南洞庭湖區縣探索“溝渠經濟” 美了村莊富村民-當前熱訊
大通湖區全民在溝渠邊義務植樹。徐...
婦女節表彰大會上,為什么領獎的是他?
最近浙江舉行“三八”婦女節表彰大...
垃圾換鮮花,貝殼杭州站大地美容助力綠色亞運
人人參與亞運會,人人都是志愿者,人...
惠民生 暖民心(兩會今日談)-實時
民生無小事,枝葉總關情。“大力發...
代表委員聚焦高質量發展 為增進民生福祉建言獻策-當前播報
央視網消息:人民幸福安康是推動高...
用戶是否應該禁用系統盤保留空間?Win11系統盤瘦身的步驟是什么?
用戶是否應該禁用系統盤保留空間?...
電腦待機出現藍屏代碼machine怎么辦?win10系統待機藍屏代碼machine解決流程
電腦待機出現藍屏代碼machine怎么...
怎么徹底解決電腦任務欄假死?Win10系統任務欄卡住無法操作的解決教程
怎么徹底解決電腦任務欄假死?Win10...
涼拌粉熱量高不高_涼拌粉-每日視訊
1、江西涼拌粉的做法,先將米粉放...
借東西的小人阿莉埃蒂電影_關于借東西的小人阿莉埃蒂電影的基本詳情介紹
1、《借東西的小人阿莉埃蒂》是日...
0.54秒的浪漫,他們拍到了!
中國空間站“穿月”的畫面你見過嗎...
iOS9.3.4可以越獄嗎_iOS9.3.4怎么越獄
從這次更新的“量”就可以知道iOS9...