1、準備工作
K8S集群環(huán)境,搭建教程參考騰訊云Lighthouse組建跨地域Kubernetes集群
K8S集群面板,搭建教程參考Kubernetes集群管理面板的安裝及使用 - 青陽のblog-一個計算機愛好者的個人博客 (hipyt.cn)
注意
如果沒有集群或者服務器不夠可以通過傳送門新購。
騰訊云輕量應用服務器購買
2、部署說明
說明:本文的教程是基于Kubernetes集群的,搭建了kuboard管理面板,之后在進行搭建typecho博客的教程。
本文使用的對應docker鏡像的地址如下:
MySQL:mysql - Official Image | Docker Hub
typecho:rehiy/typecho - Docker Image | Docker Hub
3、創(chuàng)建mysql數(shù)據(jù)庫
3.1 mysql配置文件
apiVersion: apps/v1 kind: Deployment metadata: labels: app: &name mysql # Deployment的標簽,用于標識資源為mysql應用程序 name: *name # Deployment的名稱為mysql namespace: default # Deployment所在的命名空間為default spec: replicas: 1 # Deployment副本數(shù)量為1 selector: # 標簽選擇器,選擇包含標簽app:mysql的資源 matchLabels: app: *name template: # Pod的模板,用于選擇或創(chuàng)建Pod metadata: # Pod的元數(shù)據(jù) labels: app: *name spec: affinity: # Pod親和性設置 nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchFields: - key: metadata.name operator: In values: - vm-4-13-ubuntu # 選擇節(jié)點名稱為vm-4-13-ubuntu的節(jié)點作為部署目標 containers: # 容器定義 - name: *name # 容器的名稱為mysql image: mysql:latest # 使用最新版的MySQL鏡像 ports: # 容器端口映射 - containerPort: 3306 # 將容器的3306端口暴露出來 env: # 環(huán)境變量設置 - name: MYSQL_ROOT_PASSWORD # MySQL的root用戶密碼 value: typecho@123 - name: MYSQL_DATABASE # MySQL數(shù)據(jù)庫名稱 value: typecho - name: MYSQL_USER # MySQL用戶名 value: typecho - name: MYSQL_PASSWORD # MySQL用戶密碼 value: typecho@123 volumeMounts: # 容器的卷掛載設置 - name: db # 指定卷的名稱為db mountPath: /var/lib/mysql # 將卷掛載到容器的/var/lib/mysql路徑下 volumes: # 卷定義 - name: db # 卷的名稱為db hostPath: path: /var/lib/mysql # 指定主機上的路徑/var/lib/mysql作為卷的路徑 --- apiVersion: v1 kind: Service metadata: name: mysql # Service的名稱為mysql namespace: default # Service所在的命名空間為default spec: type: ClusterIP # Service類型為ClusterIP,內(nèi)部集群使用 selector: app: mysql ports: - name: db-port protocol: TCP port: 3306 # Service的端口號為3306 targetPort: 3306 # Service轉發(fā)流量到Pod的3306端口
?
?
3.2使用配置文件創(chuàng)建mysql服務



把上面的yaml配置修改之后復制粘貼到這里直接提交確定。

這樣就是成功搭建了mysql服務,點擊進去可以看到具體信息。
4、創(chuàng)建typecho
4.1 mysql配置文件
?
?
kind: Deployment # 創(chuàng)建Deployment資源
apiVersion: apps/v1
metadata:
name: &name myblog # 定義名為myblog的標量錨點,值為"myblog"。并將錨點引用到name字段中
namespace: default
labels:
app: *name # 將錨點引用到app標簽的值上
spec:
selector:
matchLabels:
app: *name # 根據(jù)app標簽選擇匹配的Pod
template:
metadata:
labels:
app: *name # 在Pod模板中使用app標簽,并引用錨點
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchFields:
- key: metadata.name
operator: In
values:
- vm-4-13-ubuntu # 選擇節(jié)點名稱為vm-4-13-ubuntu的節(jié)點作為部署目標
containers:
- name: typecho # 定義一個名為typecho的容器
image: rehiy/typecho # 使用rehiy/typecho鏡像
ports:
- containerPort: 80 # 容器暴露的端口號為80
- containerPort: 443 # 容器暴露的端口號為443
volumeMounts:
- name: *name # 引用錨點指定的卷名
subPath: usr # 指定掛載到容器的子路徑為usr
mountPath: /var/www/default/usr # 將卷掛載到容器的/var/www/default/usr路徑下
volumes:
- name: *name # 引用錨點指定的卷名
hostPath:
path: /srv/myblog # 指定主機上的路徑/srv/myblog作為卷的路徑
type: DirectoryOrCreate # 如果路徑不存在,則創(chuàng)建目錄
---
kind: Service # 創(chuàng)建Service資源
apiVersion: v1
metadata:
name: &name myblog # 引用錨點指定的名稱
namespace: default
labels:
app: *name # 引用錨點指定的標簽值
spec:
selector:
app: *name # 根據(jù)app標簽選擇匹配的Pod
ports:
- name: http # 定義名為http的端口
port: 80 # Service監(jiān)聽的端口號為80
targetPort: 80 # Service轉發(fā)流量到Pod的端口號為80
- name: https # 定義名為https的端口
port: 443 # Service監(jiān)聽的端口號為443
targetPort: 443 # Service轉發(fā)流量到Pod的端口號為443
---
kind: Ingress # 創(chuàng)建Ingress資源
apiVersion: networking.k8s.io/v1
metadata:
name: &name myblog # 引用錨點指定的名稱
namespace: default
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: web,websecure # Traefik路由入口配置
spec:
rules:
- host: blog.eg.cn # 定義訪問Ingress的域名
http:
paths:
- path: / # 匹配路徑為/
pathType: Prefix # 路徑類型為前綴匹配
backend:
service:
name: *name # 引用錨點指定的Service名稱
port:
name: http # 引用錨點指定的端口名稱
tls:
- secretName: default # 使用名為default的TLS證書密鑰對,用于HTTPS訪問
?
?
4.2使用配置文件創(chuàng)建typecho博客


和創(chuàng)建mysql一樣的方式復制修改配置文件即可成功搭建。
測試使用
首先把域名解析到對應的pod的ip之后,直接用域名訪問。訪問成功即創(chuàng)建博客成功,然后根據(jù)提示進行下一步安裝。
提示

這里建議選擇我標注出來的這個。

5、總結
Kubernetes提供了強大的高可用性特性,它可以自動管理和調度容器實例,確保應用程序在集群中始終可用。還可以監(jiān)控和自動修復故障的容器實例,提高博客的穩(wěn)定性和可靠性。它的彈性伸縮的特性,可以根據(jù)負載變化自動調整程序。當博客訪問量增加時,Kubernetes可以自動擴展應用程序的實例數(shù)以滿足需求,并在訪問量下降時自動縮減資源的使用。
編輯:黃飛
?
電子發(fā)燒友App


































評論