一、说明
1.环境
k8s-master:192.168.1.152-254
k8s-work:192.168.1.155-157
ingress:nginx-ingress
二、应用部署
这里部署一个nginx程序
1.nginx.yaml文件
apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx spec: selector: matchLabels: run: my-nginx replicas: 2 template: metadata: labels: run: my-nginx spec: containers: - name: my-nginx image: nginx ports: - containerPort: 80
2.部署nginx应用程序
kubectl apply -f nginx.yaml
3.查看nginx部署结果
root@master-1-151:~# kubectl get Deployment NAME READY UP-TO-DATE AVAILABLE AGE my-nginx 2/2 2 2 47s
4.查看nginx的详细信息
root@master-1-151:~# kubectl describe Deployment my-nginx Name: my-nginx Namespace: default CreationTimestamp: Fri, 29 Apr 2022 07:06:05 +0000 Labels: <none> Annotations: deployment.kubernetes.io/revision: 1 Selector: run=my-nginx Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable StrategyType: RollingUpdate MinReadySeconds: 0 RollingUpdateStrategy: 25% max unavailable, 25% max surge Pod Template: Labels: run=my-nginx Containers: my-nginx: Image: nginx Port: 80/TCP Host Port: 0/TCP Environment: <none> Mounts: <none> Volumes: <none> Conditions: Type Status Reason ---- ------ ------ Available True MinimumReplicasAvailable Progressing True NewReplicaSetAvailable OldReplicaSets: <none> NewReplicaSet: my-nginx-cf54cdbf7 (2/2 replicas created) Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ScalingReplicaSet 87s deployment-controller Scaled up replica set my-nginx-cf54cdbf7 to 2
5.查看nginx部署的pod信息
root@master-1-151:~# kubectl get pods -o wide my-nginx-cf54cdbf7-7qzm9 1/1 Running 0 2m11s 10.244.5.14 work-1-156 <none> <none> my-nginx-cf54cdbf7-gs9bn 1/1 Running 0 2m11s 10.244.4.16 work-1-155 <none>
三、配置服务
1.创建service-nginx.yaml文件
apiVersion: v1 kind: Service metadata: name: service-nginx labels: run: service-nginx spec: ports: - port: 80 protocol: TCP selector: run: my-nginx #这里关联的是Deployment文件中的.metadata.name: my-nginx
2.创建服务
root@master-1-151:~# kubectl apply -f service-nginx.yaml service/service-nginx created
3.查看服务
root@master-1-151:~# kubectl get svc service-nginx NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service-nginx ClusterIP 10.96.212.204 <none> 80/TCP 6s
4.查看服务详细信息
root@master-1-151:~# kubectl describe svc service-nginx Name: service-nginx Namespace: default Labels: run=service-nginx Annotations: <none> Selector: run=my-nginx Type: ClusterIP IP Family Policy: SingleStack IP Families: IPv4 IP: 10.96.212.204 # 服务的ip地址 IPs: 10.96.212.204 Port: <unset> 80/TCP TargetPort: 80/TCP Endpoints: 10.244.4.16:80,10.244.5.14:80 # 这里即是关联Deployment部署的pods的ip和端口 Session Affinity: None Events: <none>
5.测试服务是否可用
root@master-1-151:~# curl -I 10.96.212.204 HTTP/1.1 200 OK Server: nginx/1.21.6 Date: Fri, 29 Apr 2022 07:18:47 GMT Content-Type: text/html Content-Length: 615 Last-Modified: Tue, 25 Jan 2022 15:03:52 GMT Connection: keep-alive ETag: "61f01158-267" Accept-Ranges: bytes
四、配置ingress
1.配置yaml文件
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: minimal-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: ingressClassName: nginx # 这里要与部署的ingress匹配 rules: - host: t.tok.fit # 不配置,默认所有 - http: paths: - path: / pathType: Prefix backend: service: name: service-nginx port: number: 80
2.执行yaml文件
kubectl apply -f ingress.yaml ingress.networking.k8s.io/minimal-ingress created
3.查看执行结果
root@master-1-151:~# kubectl get ingress NAME CLASS HOSTS ADDRESS PORTS AGE minimal-ingress nginx t.tok.fit 192.168.1.155,192.168.1.156,192.168.1.157 80 85m
五、验证
在浏览器访问http://192.168.1.155
访问http://t.tok.fit(需要绑定hosts,或者做dns解析)
这里返回的是404,这是因为nginx镜像中没有配置t.tok.fit
[root@test ~]# curl http://t.tok.fit <html> <head><title>404 Not Found</title></head> <body> <center><h1>404 Not Found</h1></center> <hr><center>nginx</center> </body> </html>