Kubernetes的简单描述(四)

Pod对象

• Pod基本概念
Pod是一个逻辑抽象概念,Kubernetes创建和管理的最小单元,
一个Pod由一个容器或多个容器组成。
Pod特点:
• 一个Pod可以理解为是一个应用实例,提供服务
• Pod中容器始终部署在一个Node上
• Pod中容器共享网络、存储资源

Pod主要用法:

**• 运行单个容器:**最常见的用法,在这种情况下,可以将Pod看做是单
个容器的抽象封装
**• 运行多个容器:**属于边车模式(Sidecar) ,通过再Pod中定义专门容
器,来执行主业务容器需要的辅助工作,这样好处是将辅助功能同主
业务容器解耦,实现独立发布和能力重用。
例如:
• 日志收集
• 应用监控

Pod管理命令

#创建Pod:
kubectl apply -f pod.yaml
或者使用命令:kubectl run nginx --image=nginx
#查看Pod:
kubectl get pods
kubectl describe pod <Pod名称>
#查看日志:
kubectl logs <Pod名称> [-c CONTAINER]
kubectl logs <Pod名称> [-c CONTAINER] -f
#进入容器终端:
kubectl exec <Pod名称> [-c CONTAINER] -- bash
#删除Pod:
kubectl delete pod <Pod名称>

在这里插入图片描述

Service 对外暴露应用

Service存在的意义

Service引入主要是解决Pod的动态变化,提供统一访问入口:
• 防止Pod失联,准备找到提供同一个服务的Pod(服务发现)
• 定义一组Pod的访问策略(负载均衡)

Pod与Service的关系

• Service通过标签关联一组Pod
• Service为一组Pod提供负载均衡能力

在这里插入图片描述

Service定义与创建

#创建service:
kubectl apply -f service.yaml
#查看service:
kubectl get service

定义Service:

apiVersion: v1
kind: Service
metadata:
  name: web
spec:
  type: ClusterIP # 服务类型
  ports:
  - port: 80 # Service端口
    protocol: TCP # 协议
    targetPort: 80 # 容器端口(应用程序监听端口)
selector: 
  app: web # 指定关联Pod的标签

Service三种常用类型

**• ClusterIP:**集群内部使用;默认,分配一个稳定的IP地址,即VIP,只能在集群内部访问。
在这里插入图片描述

**• NodePort:**对外暴露应用;在每个节点上启用一个端口来暴露服务,可以在集群
外部访问。也会分配一个稳定内部集群IP地址。
访问地址:<任意NodeIP>:
端口默认范围:30000-32767
在这里插入图片描述

**• LoadBalancer:**对外暴露应用,适用公有云;与NodePort类似,在每个节点上启用一个端口来暴
露服务。除此之外,Kubernetes会请求底层云平台(例如阿里云、腾
讯云、AWS等)上的负载均衡器,将每个Node
([NodeIP]:[NodePort])作为后端添加进去。
在这里插入图片描述

Ingress 对外暴露应用

Ingress为弥补NodePort不足而生

NodePort存在的不足:
• 一个端口只能一个服务使用,端口需提前规划
• 只支持4层负载均衡

Pod与Ingress的关系

Ingress:

• 公开了从集群外部到集群内服务的HTTP和HTTPS路由的规则集合,而具体实现流量路由则是由Ingress Controller负责。
• K8s中的一个抽象资源,给管理员
提供一个暴露应用的入口定义方法
**Ingress Controller:**根据Ingress生成具体
的路由规则,并对Pod负载均衡器
使用流程:

  1. 部署Ingress Controller
  2. 创建Ingress规则

Ingress Controller

Ingress Controller有很多实现,我们这里采用官方维护的Nginx控制器。
• 项目地址:https://github.com/kubernetes/ingress-nginx
• 下载YAML:wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml
修改YAML:
• 镜像地址修改成国内的:lizhenliang/nginx-ingress-controller:0.30.0
• 将Ingress Controller暴露,一般使用宿主机网络(hostNetwork: true)或者使用NodePort其他控制器Ingress 规则配置

Ingress 规则配置

#创建:
kubectl apply -f xxx.yaml
#查看:
kubectl get ingress

测试:本地电脑绑定hosts记录对应ingress里面配置的域名
例:<Ingress Controller Pod所在Node IP> web.aliangedu.cn

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: aliangedu
spec:
  rules:
  - host: web.aliangedu.cn
    http:
     paths:
     - path: /
       pathType: Prefix
       backend:
         service:
           name: web
           port:
             number: 80

Kubernetes的简单描述(一)
Kubernetes的简单描述(二)
Kubernetes的简单描述(三)
Kubernetes的简单描述(四)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值