Kubernetes(k8s)集群管理實戰(zhàn)|Kubernetes部署容器化應(yīng)用

本篇文章主要核心內(nèi)容:
Kubernetes部署容器化應(yīng)用(Nginx、Tomcat、SpringBoot)
Kubernetes部署容器化應(yīng)用(Yaml文件方式部署、命令方式部署)
Kubernetes Dashbaord UI管理后臺部署
Kubernetes部署“容器化應(yīng)用”
何為“容器化應(yīng)用”?
通俗點來說,就是你把一個程序放在docker里部署,這個docker應(yīng)用就是容器化應(yīng)用;
比如:
在docker里面部署一個springboot,這個docker+springboot一起就是一個容器化應(yīng)用;
在Docker里面部署一個nginx,這個docker+nginx一起就是一個容器化應(yīng)用;
在Docker里面部署一個應(yīng)用怎么部?
簡單來說就是 鏡像 -> 啟動鏡像得到一個Docker容器;
在k8s里面部署一個應(yīng)用怎么部?
SpringBoot程序-->打包jar包或war包-->通過Dockerfile文件生成docker鏡像-->通過k8s部署這個鏡像-->部署完畢;
總結(jié)一下Kubernetes部署容器化應(yīng)用的步驟:
1、制作鏡像;(自己編寫Dockerfile文件制作,或者 從倉庫pull鏡像)
2、通過控制器管理pod(其實就是把鏡像啟動得到一個容器,容器在pod里)
3、暴露應(yīng)用,以便外界可以訪問;
在Kubernetes集群中部署一個Nginx
1、制作鏡像(有現(xiàn)成的,從官方倉庫pull即可,不需要制作)
2、kubectl create deployment nginx --image=nginx
3、kubectl expose deployment nginx --port=80 --target-port=80 --type=NodePort
4、訪問應(yīng)用;
查看一下,相關(guān)命令:
kubectl get node(s)
kubectl get service(s)
kubectl get?deployment?(deploy)
kubectl get pod(s)
//刪除service
kubectl delete service nginx
//刪除nginx的控制器
kubectl delete deployment nginx
//刪除pod
kubectl delete pod nginx-6799fc88d8-zc48m(pod名字)
//kubectl命令幫助
kubectl --help
訪問地址:http://NodeIP:Port?
Docker鏡像加速器:
/etc/docker/daemon.json
{
"registry-mirrors": ["https://gg3gwnry.mirror.aliyuncs.com"]
}
在Kubernetes集群中部署一個Tomcat
kubectl create deployment tomcat --image=tomcat
kubectl expose deployment tomcat --port=8080 --type=NodePort
訪問地址:http://NodeIP:Port
在Kubernetes集群中部署SpringBoot應(yīng)用
1、項目打包(jar、war)-->可以采用一些工具git、maven、jenkins;
2、制作Dockerfile文件,生成鏡像;
3、kubectl create deployment your-springboot --image=你的鏡像
4、你的springboot就部署好了,是以docker容器的方式運行在pod里面的;
Mater控制Node --> service --> deployment(控制器) --> pod --> docker
自定義JDK鏡像
FROM centos:lat? est
MAINTAINER cat
ADD jdk-8u251-linux-x64.tar.gz /usr/local/java
ENV JAVA_HOME /usr/local/java/jdk1.8.0_251
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
CMD java -version
構(gòu)建鏡像:docker build -t jdk1.8.0_251?.
運行鏡像:docker run -d ac84bde53958?(鏡像id)
構(gòu)建項目鏡像
FROM jdk1.8.0_251
MAINTAINER cat
ADD 38-springboot-k8s-1.0.0.jar /opt
RUN chmod +x /opt/38-springboot-k8s-1.0.0.jar
CMD java -jar /opt/38-springboot-k8s-1.0.0.jar
構(gòu)建鏡像:docker build -t 38-springboot-k8s-1.0.0-jar?.
空運行測試
kubectl create deployment springboot-k8s --image=38-springboot-k8s-1.0.0-jar --dry-run -o yaml
kubectl create deployment springboot-k8s --image=38-springboot-k8s-1.0.0-jar --dry-run -o json
kubectl create deployment springboot-k8s --image=38-springboot-k8s-1.0.0-jar --dry-run -o yaml?> deploy.yaml
kubectl create deployment springboot-k8s --image=38-springboot-k8s-1.0.0-jar --dry-run -o json> deploy.json
Yml文件方式部署(也可以通過命令部署)
kubectl apply -f boot-deploy.yaml ?(yaml是資源清單)
等價于:
kubectl create deployment springboot-k8s --image=38-springboot-k8s-1.0.0-jar
部署后查看一下:
kubectl get pods
注意:boot-deploy.yaml文件里面鏡像從本地拉?。?/span>
containers:
??????- image: 38-springboot-k8s-1.0.0-jar
????????name: 38-springboot-k8s-1-0-0-jar-8ntrx
????????imagePullPolicy: Never
把鏡像拉取策略改為Never;
查看pod詳細(xì)信息:
kubectl describe pods?38-springboot-k8s-5c5c46d65f-4s52c(pod名稱)
檢查是否創(chuàng)建了deployments任務(wù):kubectl get deployments
查看pod日志:kubectl logs 38-springboot-k8s-575778f6bf-drmbm(pod名稱)
暴露服務(wù)端口:
kubectl expose deployment springboot-k8s --port=8080?--type=NodePort
命令方式部署
kubectl create deployment springboot-k8s --image=38-springboot-k8s-1.0.0-jar
部署Kubernetes Dashbaord
Kubernetes儀表盤是Kubernetes集群的基于Web的通用UI,它允許用戶管理群集中運行的應(yīng)用程序并對其進(jìn)行故障排除,以及管理群集本身;
Github:https://github.com/kubernetes/dashboard?
下載yaml的資源清單
wget?https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml
修改一下下載下面的recommended.yaml文件,修改紅框的兩個地方
?

應(yīng)用yaml的資源清單
kubectl apply -f recommended.yaml?(清單)

或者直接一步到位:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml
查看一下pod是否成功,注意命名空間是在kubernetes-dashboard下面;
kubectl get pod -n kubernetes-dashboard
然后瀏覽器訪問:

表示需要使用https訪問;
https://192.168.172.134:30001/?

需要輸入token,token的生成采用下面的三條命令(固定的,照著操作即可,不用記?。?/span>
kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
得到token;
Kubernetes,點擊以下實戰(zhàn)教程,帶你快速入門Kubernetes!

