Kubernetes Pod入门

Kubernetes Pod入门

什么是Pod
是一个或多个容器的组合。这些容器共享存储、网络和命名空间,以及运行规范。在Pod中,所有容器都被统一安盼和调度,并运行在共享的上下文中。对于具体应用而言,Pod是它们的逻辑主机,Pod包含业务相关的多个应用容器。所以,pod是一组具有共享命名空间、IP地址和端口的容器的集合
每个Pod还包含一个Pause容器,Pause容器是Pod的父容器,主要负责僵尸进程的回收管理。同时,通过Pause容器可以使同一个Pod里面的不同容器共享存储、网络等
Pod的状态

状态含义
Pending(挂起)Pod已经被kubernetes系统接收,但是仍有一个或多个容器未被创建,可以通过kubectl describe查看原因
Running(运行中)Pod已经被绑定到一个节点上,并且所有容器都已经被创建,而且至少有一个是运行状态、正在启动或重启
Suceeded所有容器执行成功并终止,且不会再次重启
Failed(失败)所有容器都已终止,并且至少有一个容器以失败的方式终止
Unknown(未知)通常因为通信问题造成的无法获得Pod的状态
ImagePullBackOffErrImagePull镜像拉取失败
OOMKilled容器内存溢出
TerminatingPod正在被删除
SysctlForbiden内核参数不支持
Completed容器内部主进程退出
ContainerCreating容器创建中
ku exec nginx -c nginx -- bash
// --指定要运行的命令:

LivenessProbe:存活探针,判断容器是否正常运行,如果失败则杀掉容器,再根据重启策略决定是否重启容器
redinessProbe:就绪探针,判断容器是否能进入reday状态,失败进入noready状态,并从service的endpoints中剔除此容器
startupProbe:启动探针,判断容器内的应用是否应用成功,在success状态前,所有探针处于无效状态

镜像拉取策略
Always无论本地是否有镜像,都在网上拉取
Never不在网上拉取镜像
IfNotPressent当本地没有镜像时,从网上下载
Pod重启策略
Always默认策略,容器失效时,自动重启该容器
OnFailure容器以不为零的状态码终止,自动重启该容器
Nerver从不重启

编写一个简单的Pod
nginx-pod.yaml

apiVersion: v1                //接口版本
kind: Pod                    //类型
metadata:                    //元数据
  name: nginx                 //pod名
  labels:                     //标签
    name: nginx                
spec:                         //规格
  containers:                 //指定容器的参数
  - name: nginx               //容器名从
    image: nginx:1.7.9        //指定镜像
    ports:                    //暴露的端口
    - containerPort: 80        

通过kubectl create名令创建此Pod
kubectl create pod -f nginx-pod.yaml
查看已创建的pod
kubectl get pod
查看pod的详细创建信息
kubectl describe pod nginx-pod
删除pod
kubectl delete -f nginx-pod.yaml

Pod的基本用法

编写Pod文件,将两个容器放在同一个Pod中

apiVersion: v1
kind: Pod
metadata:
  name: nginx-php
  labels:
    name: nginx-php
spec:
  containers:
  - name: nginx-app
    image: nginx:1.7.9
    ports:
    - containerPort: 80
  - name: php-app
    image: bitnami/php-fpm
    imagePullPolicy: Never
    ports:
    - containerPort: 9000

部署Pod文件
kubectl apply/create -f yaml文件
查看Pod详细信息
kubectl descirbe Pod pod名称
暴露端口
kubectl expose pod Pod名称 --port=8080 --target-port=80 --type
查看端口映射
kubectl get pod,svc Pod名称 -o wide

静态pod

将编写好的yaml文件放置在/etc/kubernetes/manifests目录下
使用kubectl get pod获取所有pod,会发现刚刚根据放在目录下的文件启动的容器,并且该容器会开机自启动
删除静态Pod,删除被移动到/etc/kubernetes/manifests目录下的文件即可,原有的不要动

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值