pod说明
运行中的一组容器,Pod
是 kubernetes
中应用的最小单位.
一个 pod
中可以运行多个服务
k8s中资源运行的两种状态
- 预期状态 (资产清单,ymal中定义的内容)
- 实际状态(运行中的状态)
1.实际状态
查看pods实际状态
kubectl get pods -o yaml
2.预期状态
查看pods预期状态
kubectl run mynginx --image=harbor.top/pulic/nginx:1.25.1 --dry-run=client -o yaml
创建 pod
的两种方式
- 命令方式
- yaml清单方式 ( *.ymal / *.yml)
1. 命令方式
[root@master ~]# kubectl run mynginx --image=harbor.top/pulic/nginx:1.25.1 --dry-run=client -o yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: mynginx
name: mynginx
spec:
containers:
- image: harbor.top/public/nginx:1.25.1
name: mynginx
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
2. 清单方式
输出到文件
[root@master data]# mkdir /data/yml && cd /data/yml
[root@master ~]# kubectl run mynginx --image=harbor.top/public/nginx:1.25.1 --dry-run=client -o yaml > 1-pod-create-mynginx.yml
[root@master ~]# vim 1-pod-create-mynginx.yml
注释不要的配置
apiVersion: v1
kind: Pod
metadata:
#creationTimestamp: null
labels:
run: mynginx1 #修改名称
name: mynginx1 #修改名称
spec:
containers:
- image: harbor.top/public/nginx:1.25.1
name: mynginx
#resources: {}
#dnsPolicy: ClusterFirst
#restartPolicy: Always
#status: {}
操作资源
# 创建资源
[root@master yml]# kubectl apply -f 1-pod-create-mynginx.yml
pod/mynginx1 created
# 查看pod
[root@master yml]# kubectl get po
NAME READY STATUS RESTARTS AGE
mynginx 1/1 Running 0 28m
mynginx1 1/1 Running 0 7s
#查看pod ip等信息
[root@master yml]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
mynginx 1/1 Running 0 30m 10.244.2.3 node1 <none> <none>
mynginx1 1/1 Running 0 85s 10.244.2.5 node1 <none> <none>
# 集群中的任意一个机器以及任意的应用都能通过Pod分配的ip来访问这个Pod
# 因没有暴露ip和端口,所有集群外不可访问
[root@master yml]# curl 10.244.2.5
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
# 删除资源 基于yml文件删除
[root@master yml]# kubectl delete -f 1-pod-create-mynginx.yml
pod "mynginx1" deleted
# 查看 pod信息
[root@master yml]# kubectl get po
NAME READY STATUS RESTARTS AGE
mynginx 1/1 Running 0 32m
# 删除pod
[root@master yml]# kubectl delete pod mynginx
pod "mynginx" deleted
您在 /var/spool/mail/root 中有新邮件
# 查看 pod信息
[root@master yml]# kubectl get po
No resources found in default namespace.
pod
常用命令
# 创建容器
kubectl run mynginx --image=nginx
# 拉取nginx镜像
docker pull nginx
# 查看nginx镜像的版本号
docker history nginx
# 重打标签
docker tag nginx:1.25.1 harbor.top/public/nginx:1.25.1
# 推送到仓库
docker push
# 运行
kubectl run mynginx --image=harbor.top/public/nginx:1.25.1
# 查看Pod
kubectl get pod
# 查看所有的pod 可缩写成po
kubectl get pods -A
kubectl get po -A
#按selector名来查找pod
kubectl get pod --selector name=redis
# 查看pod描述
kubectl describe pod mynginx
# 查看pod描述 指定空间
kubectl describe pod mynginx --namespace=kube-system
kubectl describe pod mynginx -n kube-system
# 查看Pod的运行日志
kubectl logs mynginx
# 显示pod的IP和运行节点信息
kubectl get pod -owide
kubectl get pod -o wide
# 使用Pod的ip+pod里面运行容器的端口 请求nginx服务
curl 10.42.1.3
#查看pods定义的详细信息
kubectl get pods -o yaml
#查看运行的pod的环境变量
kubectl exec pod名 env
#查看指定pod的日志
kubectl logs podname
#滚动查看指定pod的日志
kubectl logs -f podname
#滚动查看指定pod的日志 20行
kubectl logs -f podname --tail 20
#查看deployment历史修订版本
kubectl rollout history deployment/nginx-deployment
#在容器中执行
kubectl exec -it mynginx -- /bin/bash
kubectl exec -it mynginx /bin/bash
# 监控po的执行状态
kubectl get po --watch
# 每一秒刷新一次
watch -n 1 kubectl get pod -A
# -it 交互模式
# --rm 退出后删除容器,多用于执行一次性任务或使用客户端
kubectl run mynginx --image=nginx -it --rm -- /bin/bash
# 删除
kubectl delete pod mynginx
kubectl delete pod calico-node-x2bfz -n kube-system
# 强制删除
kubectl delete pod mynginx --force
# 强制删除dead node上的pod
kubectl delete pod foo --grace-period=0 --force
# 删除名为“baz”和“foo”的Pod和Service
kubectl delete pod,service baz foo
# 删除 Label name = myLabel的pod和Service
kubectl delete pods,services -l name=myLabel
# 通过yaml文件删除
kubectl delete -f mynginx.yaml
# 删除所有pod
kubectl delete pods --all
#kubectl delete 常用命令
#https://www.cjavapy.com/article/2420/
# kubectl cp 常用命令 将pod里的文件夹拷贝到主机中
# 更多参考文件:https://www.cjavapy.com/article/2446/
kubectl cp test-programs/cert-view-web-684947c69d-njzvg:usr/share/nginx/html ./html
作者:海马 创建时间:2023-07-19 09:34
最后编辑:海马 更新时间:2024-08-03 21:41
最后编辑:海马 更新时间:2024-08-03 21:41