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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章