1. 部署nginx应用
1)创建yaml文件
#vim nginx_deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-pod
spec:
replicas: 1
selector:
matchLabels:
app: nginx-pod
template:
metadata:
labels:
app: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.15.0
ports:
- containerPort: 80 #这个port应和nginx.conf中的端口一致
2)保存之后,创建(删除的命令:kubectl delete -f nginx_deploy.yaml)
#kubectl create -f nginx_deploy.yaml
3)查看相关信息:
#kubectl get pods -o wide
2. 创建服务,用于对外提供服务
1)编辑service的yaml文件
#vim nginx_service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
app: nginx
spec:
type: NodePort
ports:
- port: 8001 #cluster的服务端口 关于这几个端口,第四部分会详解
targetPort: 80 #容器的服务端口,与deploy.yaml的containerPort一致
protocol: TCP
nodePort: 32100 #对外服务的端口
selector:
app: nginx-pod #与deploy.yaml中保持一致
2)启动服务 (删除服务:kubectl delete -f nginx_service.yaml)
#kubectl create -f nginx_service.yaml
3) 查看详情
#kubectl describe services/nginx-service
至此,nginx可以对外服务了
3. 进行测试
#curl 127.0.0.1:321000
#curl localhost:321000
#curl 10.192.1.33:321000 //主机ip
都会显示openresty的welcome页面
4. 用户访问nginx服务器的一个数据转发过程(几个端口的阐述)
ps:kube-proxy本身实际上并不负责请求转发和负载均衡,而时从kube-apiserver获取Service和POD的状态更新,生成对应的DNAT规则到本地的iptabels,最终的转发和负载均衡动作有iptabels实施,所以kube-proxy组件即使出现问题,已经更新到iptabels的转发规则依然能够生效。