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...
1.命名空间
kubectl create namespace study
2.选择tomcat镜像
k8s是基于docker的,docker中是以images来管理的。
所以我们需要的环境是一个有tomcat容器的images,
docker search --no-trunc tomcat
我们使用stars最多的就行。
3.存储关系确定
下载docker images到本地,然后用docker启动,进入容器,了解images的基本情况,然后确定哪些目录是需要永久保存的,哪些目录是临时保存的,哪些目录完全不需要。
这个和k8s的存储配置有关。
docker pull tomcat
接下来启动image,然后进入到image里面
docker run -d -p 18080:8080 tomcat
-d表示后台运行
-p进行端口映射表示将容器内8080端口映射到主机的18080上面。
即请求主机的18080端口就是请求容器内的8080端口。
tomcat是images的名字,如果是latest那么可以不写,否则需要
tomcat:tag
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目录
exit
退出。
因为我们使用nfs的存储方式,且先只测试logs目录。
在主机上创建/userdata/testtomcatlog目录,将主机目录和容器内目录进行映射。
4.安装nfs服务
yum install -y rpcbind
yum install -y nfs-utils
上述所有的k8s的节点都需要安装,不管是master还是node
下载安装成功后,在共享目录主机(哪个主机的目录需要被共享就是哪个主机)中创建共享目录。
然后在共享目录主机上配置
vi /etc/exports
# 共享目录 请求源(可以是IP,通配符,域名等)(读写权限,文件所属权限)
/userdata/testtomcatlog *(rw,no_root_squash)
nfs配置详细信息见
kunbernetes-基于NFS的存储
然后重启服务
注意:启动有先后顺序,先启动rpcbind,后启动nfs
systemctl stop rpcbind
systemctl stop nfs
systemctl restart rpcbind
systemctl restart nfs
验证:
在共享目录的其他主机(非同一台机器)
上执行
showmount -e 共享主机ip
5.yaml
新建文件:
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.启动
kubectl apply -f tomcat-study.yml
查看pod
kubectl get pods -n study
查看详细信息
kubectl describe pod tomcat-study -n study
启动成功后,就可以访问node主机的映射端口,进而访问tomcat的管理项目.(因为我们没有进行service管理,即kube-proxy实际上还没有参与到集群管理中,所以需要访问实际启动images的node)
然后去共享目录主机上查看日志
这里的日志并不是实时刷新的,比如我们在浏览器上刷新下,那么实际上需要稍微等待一段时间,日志中才能刷出来。
至此,一个基于nfs的pod就被我们创建成功了。
更多推荐
所有评论(0)