pod说明

运行中的一组容器,Podkubernetes 中应用的最小单位.
一个 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-03-24 09:51