k8s-kubernetes入门-tomcat环境
k8s-kubernetes入门-tomcat环境1.命名空间2.选择tomcat镜像3.存储关系确定4.安装nfs服务5.yaml5.启动1.命名空间kubectl create namespace study2.选择tomcat镜像k8s是基于docker的,docker中是以images来管理的。所以我们需要的环境是一个有tomcat容器的images,docker sear..._kubernetes tomcat 前台
文章信息
- 原文链接:https://jiayq.blog.csdn.net/article/details/102669307
- 发布时间:2019-10-21 18:29:52
- 阅读量:1
- 分类:kubenetes专栏收录该内容, 订阅专栏
- 标签:#kubernetes, #pod, #yaml, #k8s实例, #k8s入门
摘要
文章浏览阅读1.2k次。k8s-kubernetes入门-tomcat环境1.命名空间2.选择tomcat镜像3.存储关系确定4.安装nfs服务5.yaml5.启动1.命名空间kubectl create namespace study2.选择tomcat镜像k8s是基于docker的,docker中是以images来管理的。所以我们需要的环境是一个有tomcat容器的images,docker sear…_kubernetes tomcat 前台
k8s-kubernetes入门-tomcat环境
- 1.命名空间
- 2.选择tomcat镜像
- 3.存储关系确定
- 4.安装nfs服务
- 5.yaml
- 5.启动
1.命名空间
1
kubectl create namespace study
2.选择tomcat镜像
k8s是基于docker的,docker中是以images来管理的。
所以我们需要的环境是一个有tomcat容器的images,
1
docker search --no-trunc tomcat
3.存储关系确定
下载docker images到本地,然后用docker启动,进入容器,了解images的基本情况,然后确定哪些目录是需要永久保存的,哪些目录是临时保存的,哪些目录完全不需要。
这个和k8s的存储配置有关。
1
docker pull tomcat
1
docker run -d -p 18080:8080 tomcat
-d表示后台运行
-p进行端口映射表示将容器内8080端口映射到主机的18080上面。
即请求主机的18080端口就是请求容器内的8080端口。
tomcat是images的名字,如果是latest那么可以不写,否则需要
tomcat:tag

1
docker exec -it d925784f0a /bin/bash
exec是执行命令/bin/bash
-it表示有交互、前台
d925784f0a是images启动实例。
docker通过dockerfile定义images,通过build将dockerfile打包成images;images通过docker run启动运行实例。即可以这样理解:
dockerfile是人机交互的容器描述,images是容易静态持久,也是主要传播方式,运行实例是真正访问对象。
类似java:
.java .class runtime

接下来我们查看文件目录
对于tomcat 我们一般之关系两个目录:
1.logs
2.webapps
当然,可能还有一个bin目录,但是一般需要用到bin目录进行重启时,直接重启整个容器即可。
logs目录

webapps目录

1
exit
退出。
因为我们使用nfs的存储方式,且先只测试logs目录。
在主机上创建/userdata/testtomcatlog目录,将主机目录和容器内目录进行映射。
4.安装nfs服务
1
2
yum install -y rpcbind
yum install -y nfs-utils
上述所有的k8s的节点都需要安装,不管是master还是node
下载安装成功后,在共享目录主机(哪个主机的目录需要被共享就是哪个主机)中创建共享目录。
然后在共享目录主机上配置
1
2
3
4
5
6
vi /etc/exports
# 共享目录 请求源(可以是IP,通配符,域名等)(读写权限,文件所属权限)
/userdata/testtomcatlog *(rw,no_root_squash)
nfs配置详细信息见
kunbernetes-基于NFS的存储
然后重启服务
注意:启动有先后顺序,先启动rpcbind,后启动nfs
1
2
3
4
systemctl stop rpcbind
systemctl stop nfs
systemctl restart rpcbind
systemctl restart nfs
验证:
在共享目录的其他主机(非同一台机器)
上执行
1
showmount -e 共享主机ip
5.yaml
新建文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
touch tomcat-study.yml
apiVersion: v1
kind: Pod
metadata:
name: tomcat-study
namespace: study
labels:
mytomcat: study
spec:
containers:
- name: tomcat
image: tomcat
imagePullPolicy: IfNotPresent
command: ["/usr/local/tomcat/bin/catalina.sh","run"]
#表示后面的命令都是基于workDir的,与dockerfile中的workdir一样
workingDir: /usr/local/tomcat/
volumeMounts:
#name需要与volumes下的name相同
- name: tomcat-log
#mountPath需要与容器内的目录对应
mountPath: /usr/local/tomcat/logs/
readOnly: false
ports:
- name: tomcat-80
containerPort: 80
hostPort: 10080
protocol: TCP
- name: tomcat-8080
containerPort: 8080
hostPort: 18080
protocol: TCP
- name: tomcat-443
containerPort: 443
hostPort: 10443
protocol: TCP
env:
- name: ORACLE_HOME
value: oracle
resources:
limits:
cpu: 500m
memory: 500Mi
requests:
cpu: 200m
memory: 50Mi
livenessProbe:
tcpSocket:
port: 80
initialDelaySeconds: 180
timeoutSeconds: 30
periodSeconds: 600
volumes:
- name: tomcat-log
nfs:
#server是共享目录主机的ip
server: 10.0.228.93
#path需要与共享的目录对应
path: /userdata/testtomcatlog
文件格式等见
【转载】k8s yaml格式的pod定义文件完整内容
5.启动
1
kubectl apply -f tomcat-study.yml
1
kubectl get pods -n study
1
kubectl describe pod tomcat-study -n study

启动成功后,就可以访问node主机的映射端口,进而访问tomcat的管理项目.(因为我们没有进行service管理,即kube-proxy实际上还没有参与到集群管理中,所以需要访问实际启动images的node)

然后去共享目录主机上查看日志


这里的日志并不是实时刷新的,比如我们在浏览器上刷新下,那么实际上需要稍微等待一段时间,日志中才能刷出来。
至此,一个基于nfs的pod就被我们创建成功了。





