原文地址: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