日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

k8s mysql 配置文件_k8s配置文件模板

發布時間:2024/10/14 数据库 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 k8s mysql 配置文件_k8s配置文件模板 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一,deployment

Deployment為Pod和Replica Set下一代Replication Controller)提供聲明式更新

1,配置示例

apiVersion: apps/v1 # 1.9.0 之前的版本使用 apps/v1beta2,可通過命令 kubectl api-versions 查看

kind: Deployment #指定創建資源的角色/類型

metadata: #資源的元數據/屬性

name: nginx-deployment #資源的名字,在同一個namespace中必須唯一

namespace: xxxx #命名空間

labels:

app: demo #標簽

spec:

replicas: 3 #副本數量3

strategy:

rollingUpdate: ##由于replicas為3,則整個升級,pod個數在2-4個之間

maxSurge: 1 #滾動升級時會先啟動1個pod

maxUnavailable: 1 #滾動升級時允許的最大Unavailable的pod個數

selector: #定義標簽選擇器,部署需要管理的pod(帶有該標簽的的會被管理)需在pod 模板中定義

matchLabels:

app: web-server

template: #這里Pod的定義

metadata:

labels: #Pod的label

app: web-server

spec: # 模板的規范

containers:

- name: nginx #容器的名字

image: nginx:1.12.1 #容器的鏡像地址

command: [ "/bin/sh","-c","cat /etc/config/path/to/special-key" ] #啟動命令

args: #啟動參數

- '-storage.local.retention=$(STORAGE_RETENTION)'

- '-storage.local.memory-chunks=$(STORAGE_MEMORY_CHUNKS)'

- '-config.file=/etc/prometheus/prometheus.yml'

- '-alertmanager.url=http://alertmanager:9093/alertmanager'

- '-web.external-url=$(EXTERNAL_URL)'

#如果command和args均沒有寫,那么用Docker默認的配置。

#如果command寫了,但args沒有寫,那么Docker默認的配置會被忽略而且僅僅執行.yaml文件的command(不帶任何參數的)。

#如果command沒寫,但args寫了,那么Docker默認配置的ENTRYPOINT的命令行會被執行,但是調用的參數是.yaml中的args。

#如果如果command和args都寫了,那么Docker默認的配置被忽略,使用.yaml的配置。

imagePullPolicy: IfNotPresent

# IfNotPresent :默認值,本地有則使用本地鏡像,不拉取,如果不存在則拉取

# Always: 總是拉取

# Never: 只使用本地鏡像,從不拉取

livenessProbe:

#表示container是否處于live狀態。如果LivenessProbe失敗,LivenessProbe將會通知kubelet對應的container不健康了。隨后kubelet將kill掉container,并根據RestarPolicy進行進一步的操作。默認情況下LivenessProbe在第一次檢測之前初始化值為Success,如果container沒有提供LivenessProbe,則也認為是Success;

httpGet:

path: /health #如果沒有心跳檢測接口就為/

port: 8080

scheme: HTTP

initialDelaySeconds: 60 ##啟動后延時多久開始運行檢測

timeoutSeconds: 5

successThreshold: 1

failureThreshold: 5

readinessProbe:

readinessProbe:

httpGet:

path: /health #如果沒有心跳檢測接口就為/

port: 8080

scheme: HTTP

initialDelaySeconds: 30 ##啟動后延時多久開始運行檢測

timeoutSeconds: 5

successThreshold: 1

failureThreshold: 5

resources: ##CPU內存限制

requests:

cpu: 2

memory: 2048Mi

limits:

cpu: 2

memory: 2048Mi

env: ##通過環境變量的方式,直接傳遞pod=自定義Linux OS環境變量

- name: LOCAL_KEY #本地Key

value: value

- name: CONFIG_MAP_KEY #局策略可使用configMap的配置Key,

valueFrom:

configMapKeyRef:

name: special-config #configmap中找到name為special-config

key: special.type #找到name為special-config里data下的key

ports:

- name: http

containerPort: 8080 #對service暴露端口

volumeMounts: #掛載volumes中定義的磁盤

- name: log-cache

mount: /tmp/log

- name: sdb #普通用法,該卷跟隨容器銷毀,掛載一個目錄

mountPath: /data/media

- name: nfs-client-root #直接掛載硬盤方法,如掛載下面的nfs目錄到/mnt/nfs

mountPath: /mnt/nfs

- name: example-volume-config #高級用法第1種,將ConfigMap的log-script,backup-script分別掛載到/etc/config目錄下的一個相對路徑path/to/...下,如果存在同名文件,直接覆蓋。

mountPath: /etc/config

- name: rbd-pvc #高級用法第2中,掛載PVC(PresistentVolumeClaim)

#使用volume將ConfigMap作為文件或目錄直接掛載,其中每一個key-value鍵值對都會生成一個文件,key為文件名,value為內容,

volumes: # 定義磁盤給上面volumeMounts掛載

- name: log-cache

emptyDir: {}

- name: sdb #掛載宿主機上面的目錄

hostPath:

path: /any/path/it/will/be/replaced

- name: example-volume-config # 供ConfigMap文件內容到指定路徑使用

configMap:

name: example-volume-config #ConfigMap中名稱

items:

- key: log-script #ConfigMap中的Key

path: path/to/log-script #指定目錄下的一個相對路徑path/to/log-script

- key: backup-script #ConfigMap中的Key

path: path/to/backup-script #指定目錄下的一個相對路徑path/to/backup-script

- name: nfs-client-root #供掛載NFS存儲類型

nfs:

server: 10.42.0.55 #NFS服務器地址

path: /opt/public #showmount -e 看一下路徑

- name: rbd-pvc #掛載PVC磁盤

persistentVolumeClaim:

claimName: rbd-pvc1 #掛載已經申請的pvc磁盤

2,相關使用

一個典型的用例如下:

使用Deployment來創建ReplicaSet。ReplicaSet在后臺創建pod。檢查啟動狀態,看它是成功還是失敗。

然后,通過更新Deployment的PodTemplateSpec字段來聲明Pod的新狀態。這會創建一個新的ReplicaSet,Deployment會按照控制的速率將pod從舊的ReplicaSet移動到新的ReplicaSet中。

如果當前狀態不穩定,回滾到之前的Deployment revision。每次回滾都會更新Deployment的revision。

擴容Deployment以滿足更高的負載。

暫停Deployment來應用PodTemplateSpec的多個修復,然后恢復上線。

根據Deployment 的狀態判斷上線是否hang住了。

清除舊的不必要的ReplicaSet

創建deployment

kubectl create -f nginx-deployment.yaml --record ##--record 為True 在annotation中記錄當前命令創建或者升級了該資源,如查看在每個Deployment revision中執行了哪些命令

kubectl get deployments

kubectl get rs #Replica Set的名字總是-

kubectl get pods -n xxxx #命名空間

kubectl get pods --show-labels #查看標簽

更新deployment

注意: Deployment的rollout當且僅當Deployment的pod template(例如.spec.template)中的label更新或者鏡像更改時被觸發。其他更新,例如擴容Deployment不會觸發rollout.

kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1 #更新鏡像

或使用edit命令來編輯Deployment,修改 .spec.template.spec.containers[0].image ,將nginx:1.7.9 改寫成 nginx:1.9.1

kubectl edit deployment/nginx-deployment

kubectl rollout status deployment/nginx-deployment #rollout狀態

回退deployment

kubectl describe deployment #查看狀態

kubectl rollout history deployment/nginx-deployment #檢查升級記錄

kubectl rollout history deployment/nginx-deployment --revision=2 #查看version信息

暫停和恢復

kubectl get deploy

kubectl rollout pause deployment/nginx-deployment

kubectl set image deploy/nginx nginx=nginx:1.9.1

kubectl rollout history deploy/nginx

二,SERVICE

service 的作用

防止Pod失去聯系(服務發現)

定義一組Pod的訪問策略(負載均衡)

支持ClusterIP,NodePort以及LoadBalancer三種類型

Service的底層實現主要有iptables和ipvs兩種網絡模式

pod 與service的關系

通過lable-selector相關聯

通過Service實現Pod的負載均衡(TCP/UDP 4層)

配置文件

[root@k8s-master-128 dome]# cat deploy-nginx.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

name: nginx-deployment

labels: # 這里是定義Deployment的標簽

app: nginx

spec:

replicas: 3

selector:

matchLabels:

app: nginx # 選擇關聯Deployment標簽

template:

metadata:

labels: # 給Pod定義一個標簽,方便其他服務關聯這個Pod

app: nginx

spec:

containers:

- name: nginx

image: nginx:1.7.9

ports:

- containerPort: 80

---

apiVersion: v1

kind: Service

metadata:

name: nginx-service

spec:

selector: # Service 的selector 指定標簽 app:nginx 來進行對Pod進行關聯 ;(這里的app:nginx就是上面Deployment配置里labels定義的標簽 )

app: nginx

ports:

- protocol: TCP

port: 80

targetPort: 80

type: NodePort

Service的三種類型

ClusterIP

分配一個內部集群IP地址,只能在集群內部訪問(同Namespaces內的Pod),不對外提供訪問服務!默認ServiceTpye

kubectl get svc 暴露的集群ip和集群端口,只能在k8s集群內部訪問

Node節點上能查看到創建的iptables規則

Nodeport

分配一個內網集群IP地址,并在內個節點上啟用一個端口來暴露服務,可以在集群外部訪問

apiVersion: v1

kind: Service

metadata:

name: my-service

spec:

selector:

app: MyApp

ports:

- protocol: TCP

port: 80 # 需要暴露的集群端口(service暴露的)

targetPort: 9376 # 容器的端口(后端容器提供服務的端口)

nodePort: 30000

type: NodePort

映射到物理機的端口范圍為:The range of valid ports is 30000-32767

kubectl get svc -o wide 暴露的端口在node 節點上由kube-proxy來啟動并監聽的,可通過NodeIP+端口的方式直接進行訪問,因為kube-proxy進行了代理。

kube-proxy是如何代理訪問到容器的呢?因為kube-proxy在啟動的時候通過--proxy-mode=ipvs可以指定底層內核代理模式,默認是iptables進行代理轉發,kube-proxy通過這兩種模式來代理直接對外提供服務

參考的寫法

apiVersion: v1

kind: Pod

metadata:

name: eureka

labels:

ccb: eureka

spec:

containers:

- name: test-container

image: eureka

ports:

- name: eureka

containerPort: 8082

protocol: TCP

imagePullPolicy: Never

volumeMounts:

- name: appconfig

mountPath: /jar/application.yml

subPath: application.yml

volumes:

- name: appconfig

configMap:

name: insight-application

items:

- key: registry-application.yml

path: application.yml

restartPolicy: Never

---

apiVersion: v1

kind: Service

metadata:

name: eureka

labels:

ccb: eureka

spec:

ports:

- port: 8082

targetPort: 8082

protocol: TCP

nodePort: 30000

type: NodePort

selector:

ccb: eureka

LoadBalancer

分配一個內部集群IP地址,并在每個節點上啟用一個端口來暴露服務。

除此之外,Kubernetes會請求底層云平臺上的負載均衡器,將每個Node([NodeIP]:[NodePort])作為后端添加進去。

LoadBalancer只適用于云平臺,AWS默認就支持,阿里云社區開發也支持

Service代理模式

service有三組代理模式:userspace、iptables和ipvs

常用命令

kubectl get svc -o wide

kubectl describe pod nginx-deployment-6dd86d77d-kxkmt #注意命名空間

三,定義pod

apiVersion: v1

kind: Pod

metadata:

name: eureka

labels:

ccb: eureka

spec:

containers:

- name: test-container

image: eureka

ports:

- name: eureka

containerPort: 8082

protocol: TCP

imagePullPolicy: Never #使用本地鏡像

volumeMounts:

- name: appconfig

mountPath: /jar/application.yml

subPath: application.yml

volumes:

- name: appconfig

configMap:

name: insight-application

items:

- key: registry-application.yml

path: application.yml

restartPolicy: Never

---

apiVersion: v1

kind: Service

metadata:

name: eureka

labels:

ccb: eureka

spec:

ports:

- port: 8082 #集群開放的的端口

targetPort: 8082 #后端容器開放的端口

protocol: TCP

nodePort: 30000 #宿主機開放的端口,范圍大于30000

type: NodePort #指定service類型為暴露物理節點的端口,必須

selector:

ccb: eureka #service 管理的pod

1,創建pod流程

用戶通過kubectl命令創建一個Pod的流程:

客戶端提交創建請求,可以通過API Server的Restful API,也可以使用kubectl工具,支持json和yaml格式;

Api Server處理用戶請求,存儲Pod信息數據到etcd集群中;

Scheduler調度器通過API Server查看未綁定的Pod,嘗試為Pod進行分配主機,通過調度算法選擇主機后,綁定到這臺機器上并且把調度信息寫入etcd集群;

kubelet根據調度結果執行Pod創建操作,成功后將信息通過Api Server更新到etcd集群中;

整個Pod創建過程完成,每個組件都在于Api Server進行交互,Api Server就是k8s集群的中間者,組件之間的協同者,是一個集群訪問入口

2,Pod的多種控制器

ReplicaSet: 代用戶創建指定數量的pod副本數量,確保pod副本數量符合預期狀態,并且支持滾動式自動擴容和縮容功能。

ReplicaSet主要三個組件組成:

用戶期望的pod副本數量

標簽選擇器,判斷哪個pod歸自己管理

當現存的pod數量不足,會根據pod資源模板進行新建幫助用戶管理無狀態的pod資源,精確反應用戶定義的目標數量,但是RelicaSet不是直接使用的控制器,而是使用Deployment。

Deployment:工作在ReplicaSet之上,用于管理無狀態應用,目前來說最好的控制器。支持滾動更新和回滾功能,還提供聲明式配置。 參考文章:https://blog.csdn.net/bbwangj/article/details/82011573

DaemonSet:用于確保集群中的每一個節點只運行特定的pod副本,通常用于實現系統級后臺任務,比如ingress,elk.服務是無狀態的,服務必須是守護進程。參考文章:https://www.cnblogs.com/xzkzzz/p/9553321.html

Job:只要任務或程序運行完成就立即退出,不需要重啟或重建。 參考文章:https://blog.csdn.net/bbwangj/article/details/82011610

Cronjob:周期性任務控制,執行后就退出, 不需要持續后臺運行, 參考文章:https://blog.csdn.net/bbwangj/article/details/82867830

StatefulSet:管理有狀態應用,比如redis,mysql

3,POD管理

# 創建Pod資源

$ kubectl create -f pod.yaml

# 查看pods

$ kubectl get pods nginx-pod

# 查看pod描述

$ kubectl describe pod/nginx-pod

# 更新資源

$ kubectl apply -f pod.yaml

# 刪除資源

$kubectl delete -f pod.yaml

or

$kubectl delete pods nginx-pod

4,資源限制

apiVersion: v1

kind: Pod

metadata:

name: nginx-pod

labels:

app: nginx

spec:

containers:

- name: nginx

image: nginx

resources: # 資源限制標簽

requests:

memory: "64Mi"

cpu: "250m"

limits:

memory: "128Mi"

cpu: "500m"

requests和limits都是做資源限制的,他們的區別在于:

requests # pod在創建時向k8s請求的資源大小;

limits # 限制了這個Pod運行的最大資源空間;

5,調度約束

Pod.spec.nodeName # 強制約束Pod調度到指定Node節點上

Pod.spec.nodeSelector # 通過lable-selector機制選擇節點

apiVersion: v1

kind: Pod

metadata:

name: nginx-pod

labels:

app: nginx

spec:

# nodeName:node01

nodeSelector:

env_role: dev

containers:

- name: nginx

image: nignx

通過label給Node主機設置標簽:

kubectl label nodes k8s-node-129 env_role=dev

通過–show-labels查看Node的標簽:

$ kubectl get node --show-labels

6,重啟策略

Always: 當容器停止,總是重建容器,默認策略。

OnFailure: 當容器異常退出(退出狀態碼非0)時,才重啟容器。

Never:當容器終止退出,從不重啟容器。

apiVersion: v1

kind: Pod

metadata:

name: nginx-pod

labels:

app: nginx

spec:

containers:

- name: nginx

image: nginx

restartPolicy: OnFailure

7,鏡像拉取策略

IfNotPresent:默認值,鏡像不存在宿主機上時才拉取

Always:每次創建Pod時都會重新拉取一次鏡像

Never:Pod永遠不會主動拉取這個鏡像

apiVersion: v1

kind: Pod

metadata:

name: nginx-pod

labels:

app: nginx

spec:

containers:

- name: nginx

image: nginx

imagePullPolicy: IfNotPresent

8,健康檢查

提供Probe機制,有以下兩種類型:

livenessProbe

如果檢查失敗,將容器殺死,根據Pod的restartPolicy來操作。

readinessProbe

如果檢查失敗,Kubeneres會把Pod從service endpoints中剔除。

robe支持以下三種檢查方法:

httpGet

發送HTTP請求,返回200-400范圍狀態碼為成功。

exec

執行Shell命令返回狀態碼是0為成功。

tcpSocket

發起TCP Socket建立成功。

9,問題定位

kubectl describe type/name

kubectl logs type/name [-c container]

kubectl exec --namespace=xxx -it pod -C 容器名稱 -- bash

快速生成YAML文件

1,命令生成

$ kubectl run --image=nginx my-deploy -o yaml --dry-run >my-deploy.yaml

$ kubectl create -f deploy-nginx.yaml -o yaml --dry-run >my-deploy.yaml

$ kubectl create -f deploy-nginx.yaml -o json --dry-run >my-deploy.json # 指定輸出json格式

– image # 指定模板鏡像

my-deploy # 運行標簽名稱

–dry-run # 只測試運行,不會實際運行pod

-o yaml # 指定輸出格式

2,get導出

kubectl get deploy/my-deploy -o=yaml --export > my-deploy.yaml

3,查詢Pod容器的字段資源內部文檔

使用kubectl explain –help 查詢pod字段內部說明

$ kubectl explain pods # 每一個層級的指令都會有字段信息

$ kubectl explain pods.spec

$ kubectl explain pods.spec.containers

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的k8s mysql 配置文件_k8s配置文件模板的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美成人性色 | 男人的天堂手机在线 | 国产美女流白浆 | 亚洲福利视频一区二区三区 | 无码日韩人妻精品久久蜜桃 | 国产熟妇久久777777 | 穿扒开跪着折磨屁股视频 | 国产中文字幕在线 | 亚洲白浆| 九九九九色 | 一区二区三区网站 | 色无五月 | 欧美变态网站 | 国产亚洲网站 | 日韩视频在线观看一区二区 | 欧美在线性视频 | 国产无套在线观看 | 性折磨bdsm欧美激情另类 | 久久人 | 越南a级片 | 青草青草久热 | 中文字幕一区二区三区免费 | 免费观看理伦片在线播放视频软件 | 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 黄瓜视频91| 香蕉av777xxx色综合一区 | 黄色综合网站 | 亚洲AV综合色区无码国产播放 | 亚洲欧美在线视频观看 | 色婷婷国产精品久久包臀 | 欧美老熟妇一区二区 | 亚洲剧情在线 | 自拍偷拍激情 | 亚洲无人区码一码二码三码的含义 | 天天做天天爱天天爽综合网 | 久久精品国产亚洲av蜜臀色欲 | 日韩黄色在线视频 | 久久这里只有精品99 | 亚洲精品免费在线播放 | 国产美女福利视频 | 色av导航 | 亚洲图片在线观看 | 好吊操av| 999精品在线观看 | 怡春院欧美 | 成人av动漫在线 | www日本www | 国产伦精品一区二区三区照片 | 中文字幕视频在线播放 | 午夜精品成人毛片非洲 | 美女网站av | 日本亚洲一区二区三区 | 亚洲日本中文 | 朝鲜黄色片 | 一区二三区 | 欧美日韩国产一级 | а√天堂www在线天堂小说 | 日日爱99 | 女性裸体不遮胸图片 | 91手机视频在线观看 | 夜夜操操操 | 日韩深夜福利 | a级黄色录像 | 999免费| 伊人色爱| 亚洲精品国产电影 | 天天综合久久 | 国内三级视频 | 日本成人在线视频网站 | 免费看日批 | 成人午夜电影网站 | 西川结衣在线观看 | 中国少妇做爰全过程毛片 | 色丁香久久| 亚洲午夜精品久久久久久浪潮 | 日韩性爰视频 | 中文字幕黑人 | 在线视频第一页 | 黄av网| 天天色综合图片 | 动漫av一区二区 | 国产一级特黄a高潮片 | 亚洲av无一区二区三区怡春院 | 精彩久久| 欧美一道本 | 久久精品www人人爽人人 | 泰国午夜理伦三级 | 欧美日韩国产一区二区三区在线观看 | 粗大的内捧猛烈进出在线视频 | 午夜在线视频播放 | 综合久久综合 | 日韩精品免费观看 | 爱情岛论坛成人av | 无码人妻丰满熟妇奶水区码 | 手机看片日韩久久 | 国产污污视频在线观看 | 狠狠鲁视频 | 黄色网址免费 | 97麻豆|