搭建的基礎(chǔ)
- Linux: CentOS-7-x86_64-DVD-1810.iso
- Docker: docker-ce-18.03.1.ce
- kubernetes: kubernetes v1.16.7
搭建k8s的博文:
CentOS7安裝kubernetesv1.16.7
docker鏡像博文
CentOS7 從零開始搭建一個(gè)jdk+tomcat的docker環(huán)境
創(chuàng)建pod
首先通過deployment 創(chuàng)建pod,使用如下yaml文件用于設(shè)定Deployment引镊,需要注意docker鏡像必須在本地dokcer倉庫中有或者能從鏡像倉庫拉取到朦蕴,注意不要有空行,table的縮進(jìn)弟头。這里的docker鏡像是上面博文步驟自己先的一個(gè)簡單的鏡像
準(zhǔn)備deployment.yaml文件
apiVersion: apps/v1 #apiVersion是當(dāng)前配置格式的版本
kind: Deployment #kind是要創(chuàng)建的資源類型
metadata: #metadata是該資源的元數(shù)據(jù)吩抓,name是必須的元數(shù)據(jù)項(xiàng)
#指定deployment的名稱
name: demo-deployment
labels:
app: ecs-demo #標(biāo)簽
spec:
#期望創(chuàng)建3個(gè)實(shí)例(3個(gè)pod)
replicas: 3
selector: # .spec.selector 必須匹配 .spec.template.metadata.labels,否則它將被API拒絕赴恨。如果 .spec.selector 沒有被指定疹娶, .spec.selector.matchLabels 默認(rèn)是 .spec.template.metadata.labels
#選擇label:app=ecs-demo的pod來創(chuàng)建實(shí)例
matchLabels: #metadata定義Pod的元數(shù)據(jù),至少要頂一個(gè)label嘱支,label的key和value可以任意指定
app: ecs-demo
template:
metadata:
labels:
app: ecs-demo
spec:
containers:
- name: ecs-demo
image: wangzhh/login_demo:20200429 # docker imange地址 REPOSITORY:TAG
ports:
- containerPort: 8080 #暴露給service的地址
readinessProbe: #就緒探針
httpGet:
port: 8080
path: /
initialDelaySeconds: 50 # initialDelaySeconds這個(gè)參數(shù) 機(jī)器新能不好調(diào)大
periodSeconds: 10
livenessProbe:
httpGet:
path: /
port: 8080
scheme: HTTP
initialDelaySeconds: 50 # initialDelaySeconds這個(gè)參數(shù) 機(jī)器新能不好調(diào)大
periodSeconds: 10
在master節(jié)點(diǎn)執(zhí)行命令
kubectl create -f deployment.yaml
如圖所示為創(chuàng)建成功
查看一下創(chuàng)建的deployment
kubectl get deployment -o wide
看到運(yùn)行的pod數(shù)量也在期望的范圍內(nèi)
查看pod運(yùn)行在哪個(gè)node上
kubectl get pod -o wide
如果要刪除pod蚓胸,直接刪除pod是不行的,因?yàn)槲覀兪峭ㄟ^deployment創(chuàng)建的pod除师,里面定義了pod的數(shù)量沛膳,刪除了會自動創(chuàng)建,所以我們要刪除deployment汛聚,刪除后查看可以發(fā)現(xiàn)
kubectl delete deployment <deploymentName>
或者
kubectl delete -f deployment.yaml
創(chuàng)建service
一樣通過yaml創(chuàng)建
apiVersion: v1 #apiVersion是當(dāng)前配置格式的版本
kind: Service #kind是要創(chuàng)建的資源類型
metadata: #metadata是該資源的元數(shù)據(jù)锹安,name是必須的元數(shù)據(jù)項(xiàng)
name: demo-service
spec:
selector: # selector 指明挑選那些 label 為 run: xx 的 Pod 作為 Service 的后端。
app: ecs-demo
ports: #將Service 的 8080 端口映射到 Pod 的 8080 端口倚舀,使用 TCP 協(xié)議
- protocol: TCP
port: 8080
targetPort: 8080
nodePort: 30036 # nodePort叹哭,它指定節(jié)點(diǎn)上開放的端口值 端口范圍只能是 30000-32767,如果不指定這個(gè)端口痕貌,系統(tǒng)將選擇一個(gè)隨機(jī)端口
sessionAffinity: ClientIP # service內(nèi)部實(shí)現(xiàn)session保持
sessionAffinityConfig:
clientIP:
timeoutSeconds: 10800 # timeoutSeconds指的是session保持的時(shí)間风罩,這個(gè)時(shí)間默認(rèn)是10800秒,也就是三個(gè)小時(shí)
type: NodePort # 暴露service的三種方式 NodePort舵稠,LoadBalancer 和 Ingress
在master節(jié)點(diǎn)執(zhí)行命令
kubectl create -f service.yaml
如下創(chuàng)建成功
瀏覽器訪問一下
基礎(chǔ)的k8s集群應(yīng)用搭建完成了超升,后續(xù)再完善滾動升級入宦,熱擴(kuò)容和nginx代理這些