一起来学k8s 30.二进制k8s集群部署springboot项目
二进制k8s集群部署springboot项目环境准备##/etc/hosts192.168.48.101 master01192.168.48.102 master02192.168.48.103 master03192.168.48.201 node01192.168.48.202 node02192.168.48.54nfs## keepalived的vip192.1...
·
二进制k8s集群部署springboot项目
环境准备
##/etc/hosts
192.168.48.101 master01
192.168.48.102 master02
192.168.48.103 master03
192.168.48.201 node01
192.168.48.202 node02
192.168.48.54 nfs
## keepalived的vip
192.168.48.66
| IP | Hostname | CPU | Memory |
|---|---|---|---|
| 192.168.48.101 | master01 | 2 | 4G |
| 192.168.48.102 | master02 | 2 | 4G |
| 192.168.48.103 | master03 | 2 | 4G |
| 192.168.48.201 | node01 | 2 | 4G |
| 192.168.48.202 | node02 | 2 | 4G |
| 192.168.48.54 | nfs | 2 | 4G |
| 软件 | 版本 |
|---|---|
| kubernetes | 1.15.2 |
| docker-ce | 19.03 |
| calico | 3.8 |
| etcd | 3.3.13 |
| CNI | 0.8.1 |
| coredns | 1.4.0 |
| metrics-server | 0.3.3 |
| ingress-controller | 0.25.0 |
| dashboard | 1.10.1 |
| Weave Scope | 1.11.4 |
| nfs | v4 |
| helm | 2.14.3 |
| harbor | 1.1.1 |
部署springboot
制作一个java环境镜像
获取官方基础镜像centos7.6
[root@master01 ~]# docker pull centos:centos7.6.1810
准备jdk8,maven
[root@master01 ~]# mkdir /root/java
[root@master01 ~]# cd /root/java/
[root@master01 java]# ll
total 199448
-rw-r--r-- 1 root root 9136463 Jun 16 12:47 apache-maven-3.6.1-bin.tar.gz
-rw-r--r-- 1 root root 195094741 Aug 15 13:30 jdk-8u221-linux-x64.tar.gz
制作基础镜像
[root@master01 java]# pwd
/root/java
[root@master01 java]# ll
total 199448
-rw-r--r-- 1 root root 9136463 Jun 16 12:47 apache-maven-3.6.1-bin.tar.gz
-rw-r--r-- 1 root root 195094741 Aug 15 13:30 jdk-8u221-linux-x64.tar.gz
[root@master01 java]# vim Dockerfile
#CentOS with JDK8
#build a new image with basic centos7.6.1810
FROM centos:centos7.6.1810
#author
MAINTAINER tk8s
#create directory
RUN mkdir /usr/local/java
#copy archive to the image
ADD jdk-8u221-linux-x64.tar.gz /usr/local/java/
ADD apache-maven-3.6.1-bin.tar.gz /usr/local/java/
##make a symbol link
RUN ln -s /usr/local/java/jdk1.8.0_221 /usr/local/java/jdk
RUN ln -s /usr/local/java/apache-maven-3.6.1 /usr/local/java/maven
##set ENV
ENV JAVA_HOME /usr/local/java/jdk
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
ENV MAVEN_HOME /usr/local/java/maven
ENV PATH $JAVA_HOME/bin:$JRE_HOME/bin:$MAVEN_HOME/bin:$PATH
[root@master01 java]# docker build -t registry.tk8s.com/library/centos7:jdk8_221 ./
[root@master01 java]# docker run -i -t --name=test registry.tk8s.com/library/centos7:jdk8_221 /bin/sh
sh-4.2# mvn -v
Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-04T19:00:29Z)
Maven home: /usr/local/java/maven
Java version: 1.8.0_221, vendor: Oracle Corporation, runtime: /usr/local/java/jdk1.8.0_221/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "5.2.2-1.el7.elrepo.x86_64", arch: "amd64", family: "unix"
sh-4.2# java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
sh-4.2# echo $PATH
/usr/local/java/jdk/bin:/usr/local/java/jdk/jre/bin:/usr/local/java/maven/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
上传到harbor
[root@master01 java]# docker login registry.tk8s.com
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[root@master01 java]# docker push registry.tk8s.com/library/centos7:jdk8_221
The push refers to repository [registry.tk8s.com/library/cent0s7]
c480f8fabd63: Pushed
1bb63a8e4cb9: Pushed
5380e90c66da: Pushed
f2ee9360cf6b: Pushed
bac1ef4bd29b: Pushed
89169d87dbe2: Pushed
jdk8_221: digest: sha256:8c5d7097c04718376a11a089d861f493fc2b8f37d29ee46a5b3abbae2844129b size: 1574
下载k8s-demo
[root@master01 ~]# git clone https://github.com/tangwei0928/k8s-demo.git
[root@master01 ~]# cd /root/k8s-demo/
[root@master01 k8s-demo]# ll
total 12
drwxr-xr-x 2 root root 87 Aug 15 14:33 configs
drwxr-xr-x 3 root root 50 Aug 15 14:33 cronjob-demo
drwxr-xr-x 3 root root 50 Aug 15 14:33 dubbo-demo
drwxr-xr-x 3 root root 32 Aug 15 14:33 dubbo-demo-api
-rw-r--r-- 1 root root 5201 Aug 15 14:33 pom.xml
-rw-r--r-- 1 root root 62 Aug 15 14:33 README.md
drwxr-xr-x 3 root root 50 Aug 15 14:33 springboot-web-demo
drwxr-xr-x 4 root root 69 Aug 15 14:33 web-demo
[root@master01 k8s-demo]# cd springboot-web-demo/
[root@master01 springboot-web-demo]# ll
total 8
-rw-r--r-- 1 root root 173 Aug 15 14:33 Dockerfile
-rw-r--r-- 1 root root 1045 Aug 15 14:33 pom.xml
drwxr-xr-x 3 root root 18 Aug 15 14:33 src
制作springboot镜像
vim Dockerfile
FROM registry.tk8s.com/library/centos7:jdk8_221 as BUILD
COPY src /usr/app/src
COPY pom.xml /usr/app
RUN mvn -f /usr/app/pom.xml clean package -Dmaven.test.skip=true
FROM registry.tk8s.com/library/centos7:jdk8_221
MAINTAINER tk8s
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
ENV TZ=Asia/Shanghai
RUN mkdir /app
WORKDIR /app
COPY --from=BUILD /usr/app/target/springboot-web-demo-1.0-SNAPSHOT.jar /app/springboot-demo.jar
ENTRYPOINT ["java", "-jar", "/app/springboot-demo.jar"]
[root@master01 springboot-web-demo]# docker build -t registry.tk8s.com/library/springboot:demo ./
[root@master01 springboot-web-demo]# docker push registry.tk8s.com/library/springboot:demo
编写springboot yaml
vim springboot-demo.yaml
#deploy
apiVersion: apps/v1
kind: Deployment
metadata:
name: springboot-web-demo
spec:
selector:
matchLabels:
app: springboot-web-demo
replicas: 1
template:
metadata:
labels:
app: springboot-web-demo
spec:
containers:
- name: springboot-web-demo
image: registry.tk8s.com/library/springboot:demo
ports:
- containerPort: 8080
imagePullSecrets:
- name: registry-secret
---
#service
apiVersion: v1
kind: Service
metadata:
name: springboot-web-demo
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
app: springboot-web-demo
type: ClusterIP
---
#ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: springboot-web-demo
spec:
rules:
- host: springboot.tk8s.com
http:
paths:
- path: /
backend:
serviceName: springboot-web-demo
servicePort: 80
加载yaml
[root@master01 ~]# kubectl apply -f springboot-demo.yaml
deployment.apps/springboot-web-demo created
service/springboot-web-demo created
ingress.extensions/springboot-web-demo created
查看是否执行
[root@master01 ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d20h
nginx ClusterIP 10.109.43.247 <none> 80/TCP 33h
springboot-web-demo ClusterIP 10.100.29.18 <none> 80/TCP 81s
[root@master01 ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nfs-client-provisioner-74c85598-x6djg 1/1 Running 1 27h 10.244.140.96 node02 <none> <none>
springboot-web-demo-b74676d57-cvfc8 1/1 Running 0 83s 10.244.196.185 node01 <none> <none>
[root@master01 ~]# kubectl get ingresses -o wide
NAME HOSTS ADDRESS PORTS AGE
nginx-ingress nginx.tk8s.com 80 33h
springboot-web-demo springboot.tk8s.com 80 97s
访问



更多推荐



所有评论(0)