赞
踩
创建nginx-deploy.yaml 【上节课的内容】
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- name: nginx-deploy
- labels:
- type: nginx-deploy
- test: 1.0.0
- namespace: default
- spec:
- replicas: 2 # 副本数
- revisionHistoryLimit: 10 # 保留的历史版本数
- selector: # 选择器
- matchLabels:
- app: nginx-deploy
- test: 1.0.0
- strategy: # 更新策略
- type: RollingUpdate # 更新策略类型 RollingUpdate、Recreate
- rollingUpdate:
- maxUnavailable: 25% # 更新时最大不可用副本数
- maxSurge: 25% # 更新时最大超出副本数
- template: # 模板
- metadata:
- labels:
- app: nginx-deploy
- test: 1.0.0
- spec:
- containers:
- - name: nginx
- image: nginx:latest
- imagePullPolicy: IfNotPresent
- resources:
- requests:
- cpu: 50m
- memory: 128Mi
- limits:
- cpu: 50m
- memory: 128Mi
- restartPolicy: Always # 重启策略
- terminationGracePeriodSeconds: 30 # pod被删除时的等待时间

- # 创建
- kubectl create -f nginx-deploy.yaml
创建nginx-svc.yaml 【上节课的内容】
- apiVersion: v1
- kind: Service
- metadata:
- name: nginx-svc
- labels:
- app: nginx
- spec:
- selector:
- app: nginx-deploy
- ports:
- - port: 80
- targetPort: 80
- name: web
- type: NodePort
- # 创建
- kubectl create -f nginx-svc.yaml
-
- # 查看pod信息
- get po -l app=nginx-deploy -o wide
-
- # 结果
- NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
- nginx-deploy-5666fcbb6b-6k8mw 1/1 Running 0 5m6s 10.244.107.241 k8s-node3 <none> <none>
- nginx-deploy-5666fcbb6b-h2w4l 1/1 Running 0 5m6s 10.244.122.95 k8s-node4 <none> <none>
-
- # 查看endpoint
- kubectl get ep
-
- #结果
- kubernetes 192.168.10.100:6443 5d19h
- nginx-svc 10.244.107.241:80,10.244.122.95:80 6m48s

通过服务名进行访问
- # 创建其他的pod通过 service name进行访问(推荐)
- kubectl exec -it dns-test -- sh
- wget http://nginx-svc
-
- # 通过服务名+命名空间
- wget http://nginx-svc.default
1. 创建一个没有选择器的服务,不指定seletor;作用是内部访问外网
2. 自己创建endpoint
nginx-svc-external.yaml
- apiVersion: v1
- kind: Service
- metadata:
- name: nginx-svc-external
- labels:
- app: nginx
- spec:
- ports:
- - port: 80
- targetPort: 80
- name: web
- type: ClusterIP
- # 部署
- kubectl create -f nginx-svc-external.yaml
-
-
- # 查看服务
- [root@k8s-master services]# kubectl get svc
- NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
- kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 5d19h
- nginx-svc NodePort 10.104.51.98 <none> 80:30539/TCP 20m
- nginx-svc-external ClusterIP 10.103.145.219 <none> 80/TCP 7s
-
- # endpoint
- [root@k8s-master services]# kubectl get ep
- NAME ENDPOINTS AGE
- kubernetes 192.168.10.100:6443 5d19h
- nginx-svc 10.244.107.241:80,10.244.122.95:80 20m

- # 创建endpoint nginx-ep-external.yaml
-
- apiVersion: v1
- kind: Endpoints
- metadata:
- labels:
- app: nginx # 与service一致
- name: nginx-svc-external # 与service一致
- namespace: default # 与service一致
- subsets:
- - addresses:
- - ip: 120.78.159.117 #目标服务ip
- ports:
- - name: web
- port: 80
- protocol: TCP
-
-
-

- # 创建+查看
- [root@k8s-master services]# touch nginx-ep-external.yaml
- [root@k8s-master services]# kubectl create -f nginx-ep-external.yaml
- endpoints/nginx-svc-external created
- [root@k8s-master services]# kubectl get ep
- NAME ENDPOINTS AGE
- kubernetes 192.168.10.100:6443 5d19h
- nginx-svc 10.244.107.241:80,10.244.122.95:80 27m
- nginx-svc-external 120.78.159.117:80 5s
-
-
- # 测试访问
-
- kubectl exec -it dns-test -- sh
-
- wget http://nginx-svc-external
-
- # 测试成功
- / # wget http://nginx-svc-external
- Connecting to nginx-svc-external (10.103.145.219:80)
- Connecting to www.wolfcode.cn (120.78.159.117:80)
- Connecting to www.wolfcode.cn (120.78.159.117:443)
- index.html 100% |***

创建一个service的配置文件
nginx-svc-domain.yaml
- apiVersion: v1
- kind: Service
- metadata:
- name: nginx-svc-domain
- labels:
- app: nginx-svc-domain
- spec:
- type: ExternalName
- externalName: www.wolfcode.cn
测试效果
- # 进入终端
- kubectl exec -it dns-test -- sh
-
- # 删除之前的index.html
- rm -rf index.html
-
- # 测试
- wget nginx-svc-domain
-
- # 结果
- wget wolfcode-svc-domain
- wget: bad address 'wolfcode-svc-domain'
- / # wget nginx-svc-domain
- Connecting to nginx-svc-domain (120.78.159.117:80)
- Connecting to www.wolfcode.cn (120.78.159.117:80)
- Connecting to www.wolfcode.cn (120.78.159.117:443)
- index.html 100%

只能在集群内部使用,不配置的话默认就是 ClusterIP
返回定义的CNAME别名,可以配置为域名
随机启动一个端口(30000-32767),映射到ports的端口,并且在每个node上都绑定改端口
可以固定写死一个端口
- apiVersion: v1
- kind: Service
- metadata:
- name: nginx-svc
- labels:
- app: nginx
- spec:
- selector:
- app: nginx-deploy
- ports:
- - port: 80
- targetPort: 80
- name: web
- nodePort: 32000 # 固定写死
- type: NodePort
云服务上的负载均衡服务
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。