minikube 学习笔记 -- service && HPA 详解

按照下面的文档完成 service 实验

https://www.cnblogs.com/backups/p/k8s_1.html#service

Service 的作用:

提供服务的自动发现和负载均衡
因为 Pod 随时会被销毁和重新创建、并且每个 Pod 会通过调度器将其部署到不同的 N 个 Node 节点,这样会导致 Pod ip 地址会发生变化。所以需要通过 Service 去发现 Pod 并获取其 IP 地址。

Service 的类型:

  • ClusterIP:默认类型,自动分配一个仅Cluster内部可以访问的虚拟IP
  • NodePort:在ClusterIP基础上为Service在每台机器上绑定一个端口,外部可以通过NodeIP:NodePort来访问该服务
  • LoadBalancer:在NodePort的基础上,借助cloud provider创建一个外部负载均衡器,并将请求转发到NodeIP:NodePort
  • ExternalName:把集群外的服务引入到集群内部,在集群内部直接使用

Service 实践

编写 service yaml 文件

service cat k8s_svc.yml
apiVersion: v1
kind: Service           # 简称svc
metadata:
  name: myweb
spec:
  type: NodePort        # 端口映射类型,默认ClusterIP类型
  #clusterIP:10.254.1.1
  ports:
    - port: 80          # clusterIP port
      nodePort: 30000   # node port 默认30000-32767
      targetPort: 80    # pod port
  selector:             # 选择器。当有多个Pod的时候,需要使用选择器选择为那些Pod做负载均衡。和RC一样,使用标签选择器。
    app: myweb

创建 service

service kubectl create -f k8s_svc.yml
service/myweb created

查看创建的 service 的状态

service kubectl get svc myweb
NAME    TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
myweb   NodePort   10.107.181.57   <none>        80:30000/TCP   3m3s

查看创建的 service 的详细信息

service kubectl describe svc myweb
Name:                     myweb
Namespace:                default
Labels:                   <none>
Annotations:              <none>
Selector:                 app=myweb
Type:                     NodePort
IP:                       10.107.181.57
Port:                     <unset>  80/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  30000/TCP
Endpoints:                <none>
Session Affinity:         None
External Traffic Policy:  Cluster

k8s 在创建 service 的同时,还会自动创建跟 service 同名的 endpoints

➜ kubectl get endpoints nginx-deployment -o yaml
apiVersion: v1
kind: Endpoints
metadata:
  annotations:
    endpoints.kubernetes.io/last-change-trigger-time: "2021-02-25T10:00:08Z"
  creationTimestamp: "2021-02-25T10:00:08Z"
  labels:
    app: nginx
  managedFields:
  - apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
      ...
      ...
      ...

升级

kubectl rolling-update nginx -f k8s_rc2.yaml --update-period=5s

回滚

kubectl rolling-update nginx2 -f k8s_rc.yaml --update-period=1s
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值