K8s-Pod

K8s-Pod

Pod是一组容器(一个或者多个),是k8s中的最小调度单位,可以把Pod理解为传统的虚拟机,Pod中的容器就是虚拟机中运行的进程,k8s无法直接操作和调度容器,只能通过编排Pod来调度容器,Pod为其中运行的容器提供共享的网络,存储和命名空间

基础结构

网络

Pod中的容器共享Pod的网络资源

  • 一个Pod只有一个IP地址,Pod中的容器共享该Pod的IP地址和端口

Pod中容器间的通信:

  • 通过共享卷通信
    • 使用主机中的一个共享目录作为通信,pod中的一个容器向共享卷中写入数据,其他容器读取共享卷中的数据
  • 进程间通信(IPC)
    • Pod中的容器共享同一个IPC命名空间,这意味着它们可以使用标准的进程间通信方式来互相通信,比如SystemV信号量和POSIX共享内存。
  • 容器间的网络通信
    • Pod中的容器可以通过“localhost”来互相通信,因为他们使用同一个网络命名空间。而且,对容器来说,hostname就是Pod的名称。因为Pod中的所有容器共享同一个IP地址和端口空间,你需要为每个需要接收连接的容器分配不同的端口。也就是说,Pod中的应用需要自己协调端口的使用。

存储

Pod 可指定一组存储卷,Pod 中多容器均可以访问该存储卷,以便互相共享数据,Pod 中的共享卷可以持久保存,防止容器重启丢失数据

实践

发布一个pod

编写pod的yaml文件

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    # 指定镜像
    image: nginx:alpine
    # 指定暴露端口
    ports:
    - containerPort: 80

根据配置文件部署pod

kubectl apply -f nginx.yaml

查看pod运行状态:如果状态是running,则pod部署成功

kubectl get pods

在这里插入图片描述
使用-o wide可获取到nginx这个pod的ip

kubectl get pods nginx -o wide

在这里插入图片描述
每个 pod 都有一个IP地址,直接访问IP地址获取内容

通过kubectl exec可以进入到Pod内部,如果 Pod 中有多个容器,使用kubectl exec -c 指定容器

kubectl exec -it nginx sh

在这里插入图片描述
可以看到nginx已经暴露了80端口

netstat -tan

在这里插入图片描述

访问下nginx

wget -q -O - localhost

在这里插入图片描述

Deployment

在K8s中编排应用可以更好的做弹性扩容,负载均衡,竟然要做负载均衡,那么一个Pod是不够的,需要部署多个pod

在k8s中管理Pod的成为controller,可以使用Deployment这种controller对pod进行扩容,回滚,滚动升级等

发布一个deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment    # deployment名称
spec:
  selector:
    matchLabels:
      app: nginx        # service负载均衡的选择标签
  replicas: 3           # 部署的pod数量
  template:             # 指定部署的pod
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:alpine
        ports:
        - containerPort: 80

发布:

kubectl apply -f nginx-deployment.yaml

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值