原文地址:Kubernetes-部署 Web 应用(永久地址,保存网址不迷路 🙃)
问题描述
该笔记将记录:在 Kubernetes Cluster 中,部署演示使用的 Web 应用,以快速入门。
解决方案
MySQL
cat > mysql.yaml <<EOF
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
---
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- port: 3306
selector:
app: mysql
EOF
kubectl apply -f mysql.yaml
Tomcat
cat > myweb.yaml <<EOF
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: myweb
spec:
replicas: 2
selector:
matchLabels:
app: myweb
template:
metadata:
labels:
app: myweb
spec:
containers:
- name: myweb
image: kubeguide/tomcat-app:v1
ports:
- containerPort: 8080
env:
- name: MYSQL_SERVICE_HOST
value: 'mysql'
- name: MYSQL_SERVICE_PORT
value: '3306'
---
apiVersion: v1
kind: Service
metadata:
name: myweb
spec:
ports:
- port: 8080
selector:
app: myweb
EOF
kubectl apply -f myweb.yaml
Ingress
cat > myweb-ingress.yaml <<EOF
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: myweb-ingress
annotations:
# use the shared ingress-nginx
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: "k8s-ingress.example.xyz"
http:
paths:
- path: /
backend:
serviceName: myweb
servicePort: 8080
EOF
kubectl apply -f ./myweb-ingress.yaml
访问页面
返回如下页面表示成功:
常见 Port 位置及含义
每个节点上都运行 kube-proxy 容器,它的作用是操作 iptables 规则,kube-proxy 会在防火墙上配置 DNAT 规则,将指定端口的访问传递给对应的容器。
在 Kubernetes 1.9.1 中,开始 beta 版本 IPVS 特性,也是在操作 Netfilter 进行流量转发。
在 Service 中
targetPort
在「Pod」中的容器的端口。
port
由「Service」暴露的端口。在容器内部使用,供容器之间访问。
nodePort
外部机器可访问的端口。在「Node」上暴露的端口,可以通过「IPAddress:Port」的形式直接访问;
在 Ingress 中
ServicePort
在 Ingress 中,能够看到对应关系,ServicePort 对于 Serivce 的 Port 参数。
常用命令汇总
更新 Deployment 的某个镜像:
# kubectl set image deployment/my-deployment mycontainer=myimage:latest
相关文章
「Resource Quotas」-
「Kubernetes」- 容器资源管理
「Kubernetes Objects」- Labels and Selectors
「Kubernetes Objects」- Managing Compute Resources(学习笔记)
参考文献
一个简单的Kubernetes应用部署示例
Kubernetes中的nodePort,targetPort,port的区别和意义(转)
Kubernetes how to make Deployment to update image
Basic usage - NGINX Ingress Controller
本文指导如何在Kubernetes集群中部署MySQL和Tomcat应用,并通过Ingress实现外部访问,讲解端口映射和资源管理关键概念。
3410

被折叠的 条评论
为什么被折叠?



