K8S的pod的生命周期
一、创建1、创建名称空间2、创建 pod二、发布1、开启ipvs2、查看日志三、更新四、回滚一、创建1、创建名称空间不指定名称空间就是default[root@master ~]# kubectl create namespace zynamespace/zy created2、创建 podkubectl run命令kubectl run NAME --image=image [–env=“key
一、创建
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)