1 安裝Redis
1.1創(chuàng)建配置文件redis.conf
切換到自己的目錄下如本文是放在/home/ubuntu下
cd /home/ubuntu
vim redis.conf
bind 0.0.0.0
protected-mode yes
port 6379
requirepass qwe123456
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile "/tmp/redis.log"
databases 16
always-show-logo no
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /data
1.2創(chuàng)建deployment配置文件
vim redis.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: redis-single-node
name: redis-single-node
spec:
progressDeadlineSeconds: 600 #部署進(jìn)度截止時(shí)間
replicas: 1 #副本數(shù)
revisionHistoryLimit: 10 #修訂歷史記錄限制數(shù)
selector:
matchLabels:
app: redis-single-node #選擇器,用于選擇匹配的Pod
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: redis-single-node
spec:
containers:
- command:
- sh
- -c
- redis-server "/mnt/redis.conf"
env:
- name: TZ
value: Asia/Shanghai
- name: LANG
value: C.UTF-8
image: redis:5.0.4-alpine #Redis鏡像版本
imagePullPolicy: IfNotPresent
lifecycle: {}
livenessProbe:
failureThreshold: 2 #失敗的最大次數(shù)2次
initialDelaySeconds: 10 #啟動(dòng)容器后10秒開始檢測(cè)
periodSeconds: 10 #每過10s檢測(cè)一次
successThreshold: 1 #只要成功了1次,就表示成功了。
tcpSocket:
port: 6379
timeoutSeconds: 2
name: redis-single-node
ports:
- containerPort: 6379
name: web
protocol: TCP
readinessProbe:
failureThreshold: 2
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
tcpSocket:
port: 6379
timeoutSeconds: 2
resources: #資源限制
limits: #最多可使用的資源
cpu: 100m #CPU的計(jì)量單位叫毫核(m)。一個(gè)節(jié)點(diǎn)的CPU核心數(shù)量乘以1000,得到的就是節(jié)點(diǎn)總的CPU總數(shù)量。如,一個(gè)節(jié)點(diǎn)有兩個(gè)核,那么該節(jié)點(diǎn)的CPU總量為2000m
memory: 339Mi
requests: #代表容器啟動(dòng)請(qǐng)求的資源限制,分配的資源必須要達(dá)到此要求
cpu: 10m
memory: 10Mi
securityContext: #上下文參數(shù)
privileged: false #特權(quán),最高權(quán)限
runAsNonRoot: false #禁止以root用戶啟動(dòng)容器 true為禁止
terminationMessagePath: /dev/termination-log #表示容器的異常終止消息的路徑,默認(rèn)在 /dev/termination-log 下。當(dāng)容器退出時(shí),可以通過容器的狀態(tài)看到退出信息。
terminationMessagePolicy: File #默認(rèn)情況容器退出時(shí),退出信息會(huì)從文件中讀取。 可以修改為 FallbackToLogsOnError 從日志中讀取
volumeMounts:
- mountPath: /usr/share/zoneinfo/Asia/Shanghai
name: tz-config
- mountPath: /etc/localtime
name: tz-config
- mountPath: /etc/timezone
name: timezone
- mountPath: /mnt
name: redis-conf
readOnly: true
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30 #在規(guī)定的terminationGracePeriodSeconds優(yōu)雅時(shí)間內(nèi)完成Pod優(yōu)雅終止動(dòng)作。默認(rèn)是30秒
tolerations: #零容忍設(shè)置
- effect: NoExecute #即使在節(jié)點(diǎn)上存在污點(diǎn),也不會(huì)將Pod從該節(jié)點(diǎn)上刪除
key: node.kubernetes.io/unreachable
operator: Exists
tolerationSeconds: 30
- effect: NoExecute
key: node.kubernetes.io/not-ready
operator: Exists
tolerationSeconds: 30
volumes:
- hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
type: ""
name: tz-config
- hostPath:
path: /etc/timezone
type: ""
name: timezone
- configMap:
defaultMode: 420
name: redis-conf
name: redis-conf
- 1.創(chuàng)建k8sConfig Maps配置文件
kubectl create cm redis-conf --from-file=redis.conf
- 2.部署redis Deployments
kubectl create -f redis.yaml
- 3.將資源公開一個(gè)新的服務(wù)service`kubectl expose deploy redis-single-node --port 6379
- 4.對(duì)外開放6379端口找到service編輯type為NodePort,設(shè)置nodePort: 6379
- 到此安裝完成之后就可以使用可視化工具(如AnotherRedisDesktopManager)或者代碼進(jìn)行測(cè)試連接。
2 安裝MongoDB
這里使用Helm安裝所以需要先安裝一下Helm,如果已經(jīng)安裝跳過2.1這個(gè)小步驟
2.1 安裝Helm
- 下載安裝包https://github.com/helm/helm/releases,打開地址后選擇適合自己的版本一般選擇最新版本。本文使用的是ubuntu服務(wù)器下載命令如下
wget https://get.helm.sh/helm-v3.12.1-linux-amd64.tar.gz
,如果遇到卡主那就是需要翻墻 - 下載完后解壓
tar -zxvf helm-v3.12.1-linux-amd64.tar.gz
- 移動(dòng)到安裝目標(biāo)
mv linux-amd64/helm /usr/local/bin/helm
- 初始化倉(cāng)庫(kù)
helm repo add bitnami https://charts.bitnami.com/bitnami
,這邊如果要添加找其他倉(cāng)庫(kù)地址可以去Artifact Hub搜索相對(duì)于的倉(cāng)庫(kù)地址。
2.2開始MongoDB安裝
- 創(chuàng)建pv
vim mongodb-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mongodb-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /bitnami/mongodb/data
以上內(nèi)容中/bitnami/mongodb/data是主機(jī)真實(shí)路徑,小提示如果沒有權(quán)限需要賦權(quán)限給uid為1001
- 創(chuàng)建pvc
vim mongodb-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mongodb-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
volumeName: mongodb-pv
- 創(chuàng)建配置文件
vim mongodb-values.yaml
persistence:
enabled: true
existingClaim: "mongodb-pvc"
securityContext:
privileged: true
runAsUser: 1001
runAsGroup: 1001
fsGroup: 1001
auth:
rootPassword: "自定義密碼"
創(chuàng)建完以上三個(gè)文件之后按順序執(zhí)行如下:
①kubectl apply -f mongodb-pv.yaml
②kubectl apply -f mongodb-pvc.yaml
③helm install my-mongodb bitnami/mongodb -f mongodb-values.yaml --set volumePermissions.enabled=true
提示–set volumePermissions.enabled=true第③必須加這個(gè)不然pod創(chuàng)建的時(shí)候沒有權(quán)限創(chuàng)建文件夾及文件會(huì)報(bào)錯(cuò)mkdir: cannot create directory ‘/bitnami/mongodb/data’: Permission denied
安裝成功之后如果想讓外網(wǎng)訪問跟上面redis一樣service編輯type為NodePort,設(shè)置nodePort: 27017,端口號(hào)自定義只要防火墻對(duì)外開放就行
卸載使用helm uninstall my-mongodb
- 用navicat測(cè)試連接能否成功
也可以用MongoDB Compass,;連接地址格式為:mongodb://root:密碼@ip:端口
- 修改用戶密碼,如下圖可以使用工具直接執(zhí)行命令
先切換至admin庫(kù)use admin
再執(zhí)行修改 db.changeUserPassword("用戶名","密碼")
3 安裝kafka
前置條件參考第2步安裝MongoDB中的創(chuàng)建pv跟pvc命名為kafka-pv和kafka-pvc
3.1 Helm部署kafka
- 創(chuàng)建配置文件kafka-values.yaml內(nèi)容如下
replicaCount: 1 # kafka 副本數(shù)
#global:
# storageClass: nfs-client # kafka 和 zookeeper 使用的存儲(chǔ)
heapOpts: "-Xmx1024m -Xms1024m" # kafka 啟動(dòng)的 jvm 參數(shù)
persistence: # kafka 每個(gè)副本的存儲(chǔ)空間
enabled: true
existingClaim: "kafka-pvc"
resources:
limits:
cpu: 1000m
memory: 2Gi
requests:
cpu: 100m
memory: 100Mi
zookeeper:
replicaCount: 1 # zookeeper 的副本數(shù)
persistence:
enabled: true
existingClaim: "kafka-pvc"
resources:
limits:
cpu: 2000m
memory: 2Gi
externalAccess:
enabled: true # 開啟外部訪問
autoDiscovery:
enabled: true
service:
type: NodePort # 開啟 nodeport
ports:
external: 9094
nodePorts: # nodeport 對(duì)應(yīng)的端口,多少個(gè) kafka 副本對(duì)應(yīng)多少個(gè)端口
- 30001
# - 30002
# - 30003
執(zhí)行部署helm install my-kafka bitnami/kafka -f kafka-values.yaml --set volumePermissions.enabled=true --set rbac.create=true
3.1 安裝簡(jiǎn)潔版的管理界面kafka-console-ui
- 創(chuàng)建kafka-console-ui-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: kafka-console-ui
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: kafka-console-ui
template:
metadata:
labels:
app: kafka-console-ui
spec:
containers:
- name: kafka-console-ui
resources:
limits:
cpu: 1000m
memory: 1Gi
requests:
cpu: 10m
memory: 10Mi
image: wdkang/kafka-console-ui:latest
volumeMounts:
- mountPath: /etc/localtime
readOnly: true
name: time-data
volumes:
- name: time-data
hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
- 創(chuàng)建kafka-console-ui-service.yaml
kind: Service
apiVersion: v1
metadata:
labels:
app: kafka-console-ui
name: kafka-console-ui
namespace: default
spec:
ports:
- port: 7766
targetPort: 7766
nodePort: 30088
selector:
app: kafka-console-ui
type: NodePort
- 執(zhí)行部署命令
①kubectl apply -f kafka-console-ui-service.yaml
文章來源:http://www.zghlxwxcb.cn/news/detail-603882.html
②kubectl apply -f kafka-console-ui-deploy.yaml
文章來源地址http://www.zghlxwxcb.cn/news/detail-603882.html
- 部署完之后訪問地址http://1.xx.1xx.80:30088進(jìn)入界面
- 進(jìn)入運(yùn)維添加集群
- 如果是用的云服務(wù)器會(huì)發(fā)現(xiàn)這時(shí)候連接上了但是監(jiān)聽Topic的時(shí)候跑到了內(nèi)網(wǎng)IP,需要修改configmap的配置這里都是建立在之前的k8s上所以直接進(jìn)入k8s后臺(tái)找到并修改如下圖
- 重啟
kubectl rollout restart statefulset my-kafka -n default
到了這里,關(guān)于微服務(wù)探索之路06篇k8s配置文件Yaml部署Redis使用Helm部署MongoDB和kafka的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!