1环境准备
master主机IP:192.168.10.169
node1节点:192.168.10.170
node2节点:192.168.10.171
因为pull镜像需要凭据,这里首先安装凭据,在node节点上面去安装凭据
1、wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm
2、rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem
3、docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest
2开始部署,首先是tomcat应用,我这里创建一个yaml文件来部署tomcat(注意部署容器都是在master执行,然后master会把容器分发到node界面上面去部署)
[root@master /]# kubectl logs --help^C
[root@master /]# more tomcat8.yaml
apiVersion: apps/v1beta2 #当前配置格式版本
kind: Deployment #创建资源类型
metadata: #资源元数据,name是必须项
name: portal
spec: #资源规格说明
replicas: 2 #副本数量
selector:
matchLabels:
k8s-app: portal
template: #定义pod模板
metadata: #pod元数据,至少一个label
labels:
k8s-app: portal
spec: #pod规格说明
containers:
- name: portal
image: tomcat:8
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: portal
spec:
ports:
- port: 8099
targetPort: 8080
nodePort: 30111 #浏览器访问的端口
selector:
k8s-app: portal
type: NodePort
执行这个yaml文件创建
kubectl create -f tomcat8.yaml
如果部署有问题删掉重来的话可以使用 kubectl delete -f tomcat8.yaml
在部署后怎么去监控部署是否成功,这里给出常用的命令
#查看pod状态
kubectl get pods -o wide
#查看pod的日志
kubect logs + pod名字
使用效果:
访问是否部署成功(访问也是访问master节点,master会分发到node节点上面的容器)
这里其实已经访问到了,找不到资源是因为我没有部署项目在tomcat上面
3部署mysql,下面给出mysql的yaml文件
[root@master /]# more mysql27.yaml
apiVersion: apps/v1beta2 #当前配置格式版本
kind: Deployment #创建资源类型
metadata: #资源元数据,name是必须项
name: mysql
spec: #资源规格说明
replicas: 1 #副本数量
selector:
matchLabels:
k8s-app: mysql
template: #定义pod模板
metadata: #pod元数据,至少一个label
labels:
k8s-app: mysql
spec: #pod规格说明
containers:
- name: mysql
image: mysql:5.7.29
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
---
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- port: 3306
targetPort: 3306
nodePort: 30006 #浏览器访问的端口
selector:
k8s-app: mysql
type: NodePort
这里我在env里面指定了数据库的初始root密码为123456,如果不指定在部署的时候会报错,容器无法跑起来,就是因为要指定这个初始密码。如果发现部署的容器报错,可以使用kubect logs + pod名字这个命令来查看原因
创建容器镜像
kubectl create -f mysql27.yaml
查看状态:
这里看到一个mysql前缀的是mysql容器,因为我在yaml文件中指定了一个副本,所以就只有一个,两个portal前缀的tomcat容器,因为我指定了两个pod副本