您好,登錄后才能下訂單哦!
寫在前面,k8s集群均已經搭建好,具體步驟可以查看前面文章。
編寫Dockerfile文件,目的創建一個可以公用的image,每次部署tomcat直接使用該鏡像不用每次都進行build鏡像。
#?開始本來想使用tomcat的官方鏡像,但是無奈官方鏡像的系統用的都是diban?8的系統,因為我要做日志切割,需要安裝cronolog軟件, #?翻篇google、百度并沒有找到如何使用apt-get?安裝,無奈只能使用源碼安裝,但是安裝過程需要gcc和make的支持 #?使用diban?8的如果不對apt-get?update?操作,安裝不上,但是由于系統落后原因,導致官方或163或清華的源都不支持了。最后無奈使用了ubuntu?14的鏡像。 FROM?ubuntu:14.04.5 #?tomcat安裝目錄 ENV?TOMCAT_HOME?/usr/local/tomcat #?這里是放server.xml的文件的目錄,這個目錄需要跟tomcat/conf文件夾下的server.xml做一個超鏈接,為什么呢?? #?因為我要使用configmap的方式對配置文件掛載,如果直接掛載到conf目錄下,那么目錄下的其它文件就都沒了。所以我們關在的時候掛載新創建的目錄,然后做一個超鏈接映射。 ENV?SERVER_XML?/configfile #?配置jdk環境 ENV?JAVA_HOME?/opt/jdk1.7.0_21 ENV?JRE_HOME?$JAVA_HOME/jre ENV?JAVA_BIN?$JAVA_HOME/bin ENV?CLASSPATH?$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib ENV?PATH?$TOMCAT_HOME/bin:$JAVA_BIN:$JAVA_HOME/jre/bin:$PATH:$HOME/bin #?增加jdk壓縮包到/opt目錄下 ADD?jdk-7u21-linux-x64.tar.gz?/opt ADD?apache-tomcat-7.0.77.tar.gz??/usr/local RUN? ADD?./catalina.sh?$TOMCAT_HOME/bin/ ADD?./cronolog-1.6.2.tar.gz?/opt/ #?這個是自己手動編寫的tomcat啟動腳本, #?內容很簡單,就兩行,第一行是啟動tomcat使用?sh?/usr/local/tomcat/bin/startup.sh; #?容器要求必須要有前臺執行的進程的容器才不會退出,所以第二行隨便tail?-f?了一個日志即可。 ADD?./start.sh?$TOMCAT_HOME/bin/ WORKDIR?/opt/cronolog-1.6.2 RUN?mv?/usr/local/apache-tomcat-7.0.77?/usr/local/tomcat?&&?chmod?a+x?/usr/local/tomcat/bin/*.sh?&&?\ ????apt-get?update?-y?&&?apt-get?install?gcc?make?-y?&&?\ ???./configure?&&?make?&&?make?install?&&?chmod?a+x?$TOMCAT_HOME/bin/start.sh??$TOMCAT_HOME/bin/catalina.sh?&&?\ ???rm?-rf?$TOMCAT_HOME/webapps/*?&&?rm?-rf?$TOMCAT_HOME/conf/server.xml?&&?mkdir?$SERVER_XML?&&?\ ???touch?$SERVER_XML/server.xml??&&?ln?-s?$SERVER_XML/server.xml?$TOMCAT_HOME/conf/server.xml EXPOSE?8080 ENTRYPOINT?["/bin/sh",?"/usr/local/tomcat/bin/start.sh"]
需要用到配置文件內容如下:
?start.sh?
#!/bin/sh sh?/usr/local/tomcat/bin/startup.sh tail?-f?/usr/local/tomcat/bin/catalina.sh
catalina.sh
################以上與原有tomcat默認配置文件一致################ 421???#touch?"$CATALINA_OUT" 422???if?[?"$1"?=?"-security"?]?;?then 423?????if?[?$have_tty?-eq?1?];?then 424???????echo?"Using?Security?Manager" 425?????fi 426?????shift 427?????eval?$_NOHUP?"\"$_RUNJAVA\""?"\"$LOGGING_CONFIG\""?$LOGGING_MANAGER?$JAVA_OPTS?$CATALINA_OPTS?\ 428???????-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\""?\ 429???????-classpath?"\"$CLASSPATH\""?\ 430???????-Djava.security.manager?\ 431???????-Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\""?\ 432???????-Dcatalina.base="\"$CATALINA_BASE\""?\ 433???????-Dcatalina.home="\"$CATALINA_HOME\""?\ 434???????-Djava.io.tmpdir="\"$CATALINA_TMPDIR\""?\ 435???????org.apache.catalina.startup.Bootstrap?"$@"?start?\ 436???????>>?"$CATALINA_OUT"?2>&1?"&" 437? 438???else 439?????eval?$_NOHUP?"\"$_RUNJAVA\""?"\"$LOGGING_CONFIG\""?$LOGGING_MANAGER?$JAVA_OPTS?$CATALINA_OPTS?\ 440???????-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\""?\ 441???????-classpath?"\"$CLASSPATH\""?\ 442???????-Dcatalina.base="\"$CATALINA_BASE\""?\ 443???????-Dcatalina.home="\"$CATALINA_HOME\""?\ 444???????-Djava.io.tmpdir="\"$CATALINA_TMPDIR\""?\ 445???????org.apache.catalina.startup.Bootstrap?"$@"?start?2>&1?|?/usr/local/sbin/cronolog?"$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out?>>?/dev/null?& 446? 447???fi ################以下與原有tomcat默認配置文件一致################
下面直接build鏡像就可以了。
創建一個configmap用于存放tomcat的server.xml文件。
kubectl?create?configmap?cm-server.xml?--from-file=‘server.xml的絕對路徑’
編寫k8s的yaml文件
apiVersion:?apps/v1 kind:?Deployment metadata: ??name:?dubbo-admin ??labels: ????app:?dubbo-admin spec: ??replicas:?1 ??selector: ????matchLabels: ??????app:?dubbo-admin ??template: ????metadata: ??????labels: ????????app:?dubbo-admin ????spec: ??????#?需要仔細說明的地方,這里我們創建了3個volume,分別存放tomcat的log、java項目代碼和一個使用configmap形式存放的tomcat配置文件(server.xml) ??????volumes: ??????-?name:?"code-war" ????????hostPath:? ?????????path:?"/Disk/data/tomcat/dubbo-admin/code/" ??????-?name:?"tomcat-log" ????????hostPath: ?????????path:?"/Disk/data/tomcat/dubbo-admin/log/" ??????-?name:?"serverxml" ????????configMap: ?????????name:?tomcat-dubbo-admin-server.xml ?????????items: ?????????-?key:?server.xml ???????????path:?server.xml ??????containers: ??????-?name:?dubbo-admin ????????#?容器使用剛剛build過的鏡像 ????????image:?fushuitong/tomcat:jdk7u21-tomcat7.0.77-cronolog1.6.2 ????????ports: ????????-?containerPort:?8080 ????????#掛載3個volume,掛載目錄如下 ????????volumeMounts: ????????-?name:?code-war ??????????mountPath:?/usr/local/tomcat/webapps ????????-?name:?tomcat-log ??????????mountPath:?/usr/local/tomcat/logs ????????-?name:?serverxml ??????????mountPath:?/configfile
直接創建這個Deployment即可。
創建一個service,把tomcat的端口應道node上,以供外面訪問,如果tomcat前面還有nginx,可以直接映射到clusterIP.使用nginx進行轉發即可。
變了service的yaml文件
apiVersion:?v1 kind:?Service metadata: ??name:?dubbo-admin spec: ??ports: ??-?port:?8080 ????nodePort:?32333 ????targetPort:?dubbo-admin ????protocol:?TCP ??selector: ????app:?dubbo-admin ??type:?NodePort
最后通過訪問任意node的ip的32333端口就能訪問到對應的tomca項目了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。