继续上一篇文章 k8s 部署
第一步:准备
根据我上次安装的k8s集群环境3台机器继续开始撸:
master主机:192.168.26.227
node节点机:192.168.26.228
node节点机:192.168.26.108
说明:服务器有限,我用的同一台服务器 121.36.104.22
三台机器必须都安装了docker,并且防火墙都关闭。
三台机器上建立目录/usr/local/dev/k8s
在主机192.168.26.227 (121.36.104.22)上查看两台节点连接情况:kubectl get nodes
第二步:创建资源对象配置文件:
下面是192.168.26.227(121.36.104.222)主机操作:
1、在/usr/local/dev/k8s目录下,创建一个名为:tomcat01.yaml的配置文件(我同事叫编排文件)
vi tomcat01.yaml
2、tomcat01.yaml文件的内容如下:
我复制出来的文件内容没有格式缩进,所以以后还复制借鉴博客:https://blog.csdn.net/u013201439/article/details/79306417
里的内容吧。
--------------------------------------------------------------------------------
k8s支持多种资源创建方式,这里我们使用YAML文件来完成Tomcat应用的配置。
把他的博客内容复制下来了
【Kubernetes】部署Tomcat服务
准备
已有Kubernetes集群
熟悉Kubernetes的基本命令
tomcat镜像已保存到Harbor(如果没有配置私有仓库,也可以通过公网从 docker hub 拉取)
k8s支持多种资源创建方式,这里我们使用YAML文件来完成Tomcat应用的配置。
Deployment 配置
vi tomcat01.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: myweb
spec:
replicas: 2
template:
metadata:
labels:
app: myweb
spec:
containers:
- name: myweb
image: harbor/tomcat:8.5-jre8
ports:
- containerPort: 80
YAML文件对缩进格式要求很严格,即使少一个空格也可能会导致资源创建失败。以上文件只需要修改image项为自己私有仓库中的Tomcat镜像地址,
Service
准备好Deployment的YAML文件后,再来创建Service的YAML文件。
apiVersion: v1
kind: Service
metadata:
name: myweb
spec:
ports:
- name: myweb-svc
port: 8080
targetPort: 8080
nodePort: 31111
selector:
app: myweb
type: NodePort
以上文件指定暴露node的31111端口,如果31111已被占用,修改为其他端口即可。
创建
这里提供两种创建方式:
使用集群客户端kubectl,通过命令行的方式创建。定位到Deployment、Service的YAML文件所在目录,输入以下命令。
kubectl create -f . # 命令后面有一个点 .
. 表示创建所有YAML中的资源,也可以来指定特定文件
kubectl create -f myweb-deployment.yaml
使用Dashboard,点击右上角“CREATE”,上传YAML文件即可。
测试
创建成功后,可以使用NodeIP+Port的方式来访问Tomcat,如 NodeIP:31111,一切正常会看到Tomcat的index页面。
------------------------------------------------
vi tomcat01.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: myweb
spec:
replicas: 1 #这里有几台nodes 就写数字 几
template:
metadata:
labels:
app: myweb
spec:
containers:
- name: myweb
image: docker.io/tomcat
ports:
- containerPort: 8080
执行命令
kubectl create -f tomcat01.yaml
vi Deployment.yaml
apiVersion: v1
kind: Service
metadata:
name: myweb
spec:
ports:
- port: 8099
targetPort: 8080
nodePort: 31111
selector:
app: myweb
type: NodePort
执行命令
kubectl create -f Deployment.yaml
查看pod是否创建成功并运行:kubectl get pods -o wide
失败如下:出现ContainerCreating
执行以下命令
其实就是我的两个node节点机上没有一个叫redhat-ca.crt文件,此文件应该是用来连接主机master作凭证的吧,接下来下载这个凭证文件就是了。
在node节点机192.168.26.228上(192.168.26.108节点机也如此),执行以下命令:
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
kubectl get pods
显示成功运行
输入IP端口不能访问页面
终于发现是iptables问题(好像是网关问题),好像是网关没有打通
iptables -s
3.2、使用命令把FORWARD DROP 修改成FORWARD ACCEPT
iptables -P FORWARD ACCEPT
#机器重启之后,又恢复DROP了,再此加一条防止重启还原DROP的命令
sleep 60 && /sbin/iptables -P FORWARD ACCEPT
#再查看
sudo iptables -S
在nodes 机器上 测试k8s 自愈
ps -ef |grep tomcat
Kill 掉tomcat
过几秒钟之后再查看(发现k8s已经自己又重新启动了):ps -ef|grep tomcat