K8S的pod的生命周期

一、创建

1、创建名称空间

不指定名称空间就是default

[root@master ~]# kubectl create namespace zy
namespace/zy created

在这里插入图片描述

2、创建 pod

kubectl run命令
kubectl run NAME --image=image [–env=“key=value”] [–port=port] [–replicas=replicas]
[–dry-run=bool] [–overrides=inline-json] [–command] – [COMMAND] [args…] [options]

[root@master ~]# kubectl create deployment nginx-test --image=nginx --port=80 --replicas=3 -n zy
                                                     控制器          pod名称      镜像名称      暴露端口    副本集数量     指定名称空间

在K8S v1.18.0以后,–replicas已弃用 ,推荐用 deployment 创建 pods
1.18之前

[root@master ~]# kubectl run nginx-test --image=nginx --port=80 --replicas=3 -n zy

在这里插入图片描述
在这里插入图片描述
可进入容器查看信息和事件

[root@master ~]# kubectl describe pod nginx-test-6c88c44876-jdqvs -n zy

在这里插入图片描述
查看pod的IP和所有master的IP

[root@master ~]# kubectl get endpoints -A

在这里插入图片描述
查看所有资源信息

[root@master ~]#  kubectl get all -A

在这里插入图片描述
在这里插入图片描述
删除其中一个pod

[root@master ~]#  kubectl get pod -n zy

在这里插入图片描述

[root@master ~]# kubectl delete pod nginx-test-6c88c44876-jdqvs -n zy

在这里插入图片描述
在这里插入图片描述
可以发现,pod是重建一个新的然后再删掉需要删除的pod
如果要完全删除只能删除控制器

[root@master ~]# kubectl delete deploy/nginx-test -n zy

在这里插入图片描述

在这里插入图片描述

二、发布

kubectl expose (-f FILENAME | TYPE NAME) [–port=port] [–protocol=TCP|UDP|SCTP]
[–target-port=number-or-name] [–name=name] [–external-ip=external-ip-of-service] [–type=type]

[root@master ~]# kubectl expose deployment nginx-test -n zy --port=80 --target-port=80 --name=nginx-service --type=NodePort

在这里插入图片描述

[root@master ~]# kubectl get pod,svc -n zy

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1、开启ipvs

在node节点上操作

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1

在这里插入图片描述

sysctl -p

执行以下脚本

cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

上面脚本创建了的/etc/sysconfig/modules/ipvs.modules文件,保证在节点重启后能自动加载所需模块。 使用lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令查看是否已经正确加载所需的内核模块。

lsmod | grep -e ipvs -e nf_conntrack_ipv4

在这里插入图片描述
接下来还需要确保各个节点上已经安装了ipset软件包。 为了便于查看ipvs的代理规则,最好安装一下管理工具ipvsadm

yum install ipset ipvsadm -y

修改ConfigMap的kube-system/kube-proxy中的config.conf,mode: “ipvs”

[root@master ~]# kubectl edit  configmap -n kube-system  kube-proxy

在这里插入图片描述
对于Kubernetes来说,可以直接将这三个Pod删除之后,会自动重建。

[root@master ~]# kubectl get pods -n kube-system|grep proxy
[root@master ~]# kubectl get pod -n kube-system | grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'

等到proxy的pod重建之后
在node节点上

[root@node01 ~]# ipvsadm -L -n

在这里插入图片描述

2、查看日志

[root@master ~]# kubectl logs nginx-test-6c88c44876-6np7f -n zy

实时查看10条

[root@master ~]# kubectl logs -f --tail 10 nginx-test-6c88c44876-6np7f -n zy

在这里插入图片描述

三、更新

在这里插入图片描述
先打开监控

[root@master ~]# watch -n 1 kubectl get pod -n zy

在这里插入图片描述

[root@master ~]# kubectl set image deploy/nginx-test nginx=nginx:1.14 -n zy
deployment.apps/nginx-test image updated

开始逐一更新
在这里插入图片描述
更新完成
在这里插入图片描述
在这里插入图片描述
方法二
先在master上打开监控
在这里插入图片描述
然后编辑控制器

在这里插入图片描述
在这里插入图片描述
保存退出后监控显示已在更新
在这里插入图片描述
更新完毕
在这里插入图片描述
在这里插入图片描述

四、回滚

支持的控制器
Valid resource types include:

  • deployments
  • daemonsets
  • statefulsets
    允许的操作
    Available Commands:
    history 显示 rollout 历史
    pause 标记提供的 resource 为中止状态
    resume 继续一个停止的 resource
    status 显示 rollout 的状态
    undo 撤销上一次的 rollout
[root@master ~]# kubectl rollout undo deploy/nginx-test -n zy
deployment.apps/nginx-test rolled back

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、删除

需要删除pod,svc还有node上的jmage

[root@master ~]# kubectl delete deploy/nginx-test -n zy
deployment.apps "nginx-test" deleted
[root@master ~]# kubectl get svc -n zy
NAME            TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
nginx-service   NodePort   10.1.46.250   <none>        80:31587/TCP   17h
[root@master ~]# kubectl delete svc nginx-service -n zy
service "nginx-service" deleted

在这里插入图片描述
注意,如果是1.18以上版本,如果用kubectl apply -f ***.yaml创建的pod

kubectl delete -f ***.yaml时只删除deploy,如果要删除pod还需要删除rs(副本集控制器)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes(简称为k8s)中的Pod是最小的可部署单元,用于运行容器化应用程序。Pod生命周期可以分为以下几个阶段: 1. Pending(等待):Pod被创建后,处于Pending状态表示Kubernetes正在为Pod分配资源(如CPU、内存等)。在这个阶段,Pod可能会处于排队等待状态。 2. Running(运行中):一旦Pod获得了所需的资源,它将进入Running状态。在这个阶段,容器正在运行,并且可以被其他组件访问。 3. Succeeded(成功):如果Pod中的所有容器成功完成了它们的任务,那么Pod将进入Succeeded状态。通常情况下,这意味着所有容器都已经退出,并且不会再重新启动。 4. Failed(失败):如果Pod中的任何一个容器退出并返回错误代码,那么Pod将进入Failed状态。通常情况下,这意味着容器无法完成其任务。 5. Unknown(未知):如果无法获取关于Pod当前状态的信息,那么Pod将进入Unknown状态。这可能是由于与集群通信故障或其他未知错误导致的。 除了上述状态之外,Pod还可以通过以下方式进行调整: 1. 创建(Create):通过创建Pod规范文件或使用Kubernetes API来创建Pod。 2. 更新(Update):可以通过更新Pod规范文件或使用Kubernetes API来更新Pod的配置(如镜像版本、资源请求等),这将触发Pod的重新调度。 3. 删除(Delete):可以通过删除Pod规范文件或使用Kubernetes API来删除Pod。一旦Pod被删除,它将不再存在于集群中。 需要注意的是,Kubernetes会根据集群的状态和配置自动处理Pod生命周期,例如自动重新调度失败的Pod或替换不健康的Pod

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值