k8s部署Tomcat
为了确保你可以通过或访问 Tomcat 服务,即使 Pod 只运行在。
·
为了确保你可以通过 curl http://192.168.9.182:30080
或 curl http://192.168.9.183:30080
访问 Tomcat 服务,即使 Pod 只运行在 k8s-master01
上,你需要确保以下几点:
- Service 配置正确:NodePort 类型的 Service 配置正确,并在所有节点上暴露服务端口。
- kube-proxy 正常工作:kube-proxy 在所有节点上正常工作,确保请求可以从任意节点转发到运行 Pod 的节点。
- 防火墙和网络配置:所有节点的防火墙和网络配置允许访问 NodePort 端口。
1. Pod 配置 (tomcat.yaml
)
确保 Pod 被调度到 k8s-master01
:
apiVersion: v1
kind: Pod
metadata:
name: demo-pod
namespace: default
labels:
app: myapp
env: dev
spec:
nodeSelector:
kubernetes.io/hostname: k8s-master01
containers:
- name: tomcat-pod-java
ports:
- containerPort: 8080
image: tomcat:8.5-jre8-alpine
imagePullPolicy: IfNotPresent
2. Service 配置 (tomcat-svc.yaml
)
确保创建一个 NodePort 类型的 Service:
apiVersion: v1
kind: Service
metadata:
name: tomcat
namespace: default
spec:
type: NodePort
ports:
- port: 8080
nodePort: 30080
selector:
app: myapp
env: dev
3. 应用配置并查看状态
应用配置文件:
kubectl apply -f tomcat.yaml
kubectl apply -f tomcat-svc.yaml
查看 Pod 和 Service 的状态:
kubectl get pods -o wide
kubectl get svc
4. 确保 kube-proxy
正常运行
检查 kube-proxy
在所有节点上是否正常运行:
kubectl get daemonset -n kube-system kube-proxy -o wide
kubectl logs -n kube-system daemonset/kube-proxy
5. 验证访问
通过以下命令验证是否可以通过所有节点访问 Tomcat 服务:
curl http://192.168.9.181:30080
curl http://192.168.9.182:30080
curl http://192.168.9.183:30080
验证 Service 和 Endpoints
检查 Service 和 Endpoints 配置是否正确:
kubectl get svc tomcat -o yaml
kubectl get endpoints tomcat -o yaml
确认防火墙和网络配置
确保所有节点的防火墙允许 30080
端口的流量:
# 查看防火墙状态
sudo firewall-cmd --list-all
# 允许 30080 端口的流量
sudo firewall-cmd --permanent --add-port=30080/tcp
sudo firewall-cmd --reload
通过这些步骤,确保所有节点都能够通过 NodePort
访问 Tomcat 服务。即使 Pod 只运行在 k8s-master01
节点上,NodePort
服务会在所有节点上暴露,并通过 kube-proxy
将请求转发到正确的节点。
更多推荐
已为社区贡献8条内容
所有评论(0)