繼續上一篇文章 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