K8s部署 tomcat 自愈

 

继续上一篇文章 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.227121.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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值