configMap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: pub-oa-configmap
namespace: hunter
data:
MYSQL_HOST: pub-oa-db-svc
MYSQL_PORT: 3306
sceret.yaml
apiVersion: v1
kind: Secret
metadata:
name: pub-oa-secret
namespace: hunter
type: Opaque
data:
MYSQL_USER: cm9vdA== # 注意加-n參數(shù),echo -n root|base64
MYSQL_PASSWORD: aHVudGVy
?service-mysql.yaml
apiVersion: apps/v1
kind: Service
metadata:
name: pub-oa-db-svc
namespace: hunter
spec:
ports:
- port: 3306
protocal: TCP
targetPort: 3306
selector:
app: pub-oa-db
type: ClusterIP
?service-web.yaml
# 查看pod節(jié)點(diǎn),并顯示labels
# kubectl -n hunter get pods --show-labels
# 查看service
# kubectl -n hunter get svc
# 查看指定service
# kubectl -n hunter get svc pub-oa-web
# 查看某個service詳情
# kubectl -n hunter describe svc pub-oa-web
# 查看pub-oa-web的 endpoints情況
# kubectl -n hunter get endpoints pub-oa-web
apiVersion: apps/v1
kind: Service
metadata:
name: pub-oa-web-svc
namespace: hunter
spec:
ports:
- port: 8080
protocal: TCP
targetPort: 8080
selector:
app: pub-oa-web
type: ClusterIP
mysql-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: pub-oa-db
namespace: hunter
spec:
replicas: 1 # 指定pod的副本數(shù)量
selector:
matchLabels:
app: pub-oa-db
template:
metadata:
labels: # 給pod打label
app: pub-oa-db
spec:
volumes:
- name: mysql
hostPath:
path: /opt/mysql/data
nodeSelector: # 使用節(jié)點(diǎn)選擇器將pod調(diào)度到指定的label節(jié)點(diǎn)
component: prod-k8s-node1 # kubectl label node prod-k8s-node1 component=prod-k8s-node1
containers:
- name: pub-oa-db
image: rigistry.cn-shanghai.aliyuncs.com/pub-oa-db:v1
imagePullPolicy: IfNotPresent # 鏡像拉去策略,此外還有Always, Never
ports:
- containerPort: 3306
env:
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: pub-oa-secret
key: MYSQL_USER
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: pub-oa-secret
key: MYSQL_PASSWORD
resources: # 容器資源限制
requests:
memory: 100Mi # 當(dāng)pod內(nèi)存超過100Mi時(shí),會報(bào)OOM
cpu: 50m # 當(dāng)cpu超過limit限制時(shí),不會被kill,但是會限制不超過limit值,1 CPU = 1000 millicpu(1 core = 1000m(毫核)),cpu資源是按 “時(shí)間片”的方式來分配的
limits:
memory: 500Mi
cpu: 100m
volumeMounts:
- name: mysql
mountPath: /var/lib/mysql
web-deploy.yaml
# overView:
# 1. 添加pod驅(qū)逐策略,在某些場景下如節(jié)點(diǎn) NotReady,或則資源不足時(shí),把pod驅(qū)逐至其他節(jié)點(diǎn)上
# 2. 添加pod更新策略
apiVersion: apps/v1
kind: Deployment
metadata:
name: pub-oa-web
namespace: hunter
spec:
replicas: 1 # 指定pod的副本數(shù)量, 擴(kuò)容web服務(wù),kubectl scale deploy web --replicas=2
selector:
matchLabels: # 指定pod選擇器
app: pub-oa-web
template:
metadata:
labels: # 給pod打label
app: pub-oa-web
spec:
nodeSelector: # 使用節(jié)點(diǎn)選擇器將pod調(diào)度到指定的label節(jié)點(diǎn)
component: prod-k8s-node1 # kubectl label node prod-k8s-node1 component=prod-k8s-node1
containers:
- name: pub-oa-web
image: rigistry.cn-shanghai.aliyuncs.com/pub-oa-app:v1
imagePullPolicy: IfNotPresent # 鏡像拉去策略,此外還有Always, Never
ports:
- containerPort: 8080
env:
- name: MYSQL_HOST
valueFrom:
configMapKeyRef:
name: pub-oa-configmap
key: MYSQL_HOST
- name: MYSQL_PORT
valueFrom:
configMapKeyRef:
name: pub-oa-configmap
key: MYSQL_PORT
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: pub-oa-secret
key: MYSQL_USER
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: pub-oa-secret
key: MYSQL_PASSWORD
livenessProbe: # 存活性探測
httpGet: # 此外還有 exec,tcpSocket類型
path: /code-library/listCodeLibrary
port: 8080
scheme: HTTP
initialDelaySeconds: 10 # 容器啟動后,第一次執(zhí)行探測時(shí)需要等待多少秒
periodSeconds: 10 # 執(zhí)行探測的頻率
timeoutSeconds: 2 # 探測超時(shí)時(shí)間
readinessProbe: # 可用性探測
httpGet: # 此外還有 exec,tcpSocket類型
path: /code-library/listCodeLibrary
port: 8080
scheme: HTTP
initialDelaySeconds: 10 # 容器啟動后,第一次執(zhí)行探測時(shí)需要等待多少秒
periodSeconds: 10 # 執(zhí)行探測的頻率
timeoutSeconds: 2 # 探測超時(shí)時(shí)間
resources: # 容器資源限制
requests:
memory: 100Mi # 當(dāng)pod內(nèi)存超過100Mi時(shí),會報(bào)OOM
cpu: 50m # 當(dāng)cpu超過limit限制時(shí),不會被kill,但是會限制不超過limit值,1 CPU = 1000 millicpu(1 core = 1000m(毫核)),cpu資源是按 “時(shí)間片”的方式來分配的
limits:
memory: 500Mi
cpu: 100m
volumeMounts:
- name: mysql
mountPath: /var/lib/mysql
web-endpoint.yaml
# 為pub-oa-web做節(jié)點(diǎn)負(fù)載均衡
apiVersion: apps/v1
kind: Service
metadata:
name: pub-oa-web-np
namespace: hunter
spec:
ports:
- port: 8080
protocal: TCP
targetPort: 8080
selector:
app: pub-oa-web
type: NodePort
文章來源地址http://www.zghlxwxcb.cn/news/detail-699851.html
文章來源:http://www.zghlxwxcb.cn/news/detail-699851.html
到了這里,關(guān)于K8S之Deployment控制pod的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!