您现在的位置是:首页 >技术交流 >Kubernetes----Pod,资源对象文件网站首页技术交流

Kubernetes----Pod,资源对象文件

云海0478 2023-04-24 20:18:51
简介Kubernetes----Pod,资源对象文件

kubectl容器管理

kubectl用于控制Kubernetes集群的命令行工具

语法格式

        kubectl [command] [type] [name] [flages]

        command: 子命令,如create,get,describe,delete

        type: 资源类型,可以表示为单数,复数形式或缩写形式

        name: 资源的名称,如果省略,则显示所有资源信息

        flags:指定可选标志,或者附加的参数

管理命令(一)

子命令说明备注
help用于查看命令及子命令的帮助信息
cluster-info显示集群的相关配置信息
version查看服务器及客户端的版本信息
api-resources查看当前服务器上所有的资源对象
api-versions查看当前服务器上所有资源对象的版本
config管理当前节点上kubeconfig 的认证信息

详解Pod

pod是k8s中最小的管理元素,由一个或者多个容器组成,是一个服务的多个进程的聚合单位

同一个pod共享网络IP及权限

同一个pod共享主机名称

同一个pod共享存储设备

Pod创建过程

为什么要使用pod?

容器服务之间有相关性

启动容器的时候需要初始化或进行相关配置

pod的生命周期

pod对象从创建开始至终止的时间范围称其为生命周期

在这断时间中,pod处在多种不同的状态,并执行相关操作

创建主容器为必须操作,其他为可选操作(初始化 启动后勾子 存活性探测 就绪性探测 终止前勾子)

 Pod创建过程与状态

Pod相位状态

 

 pending 容器创建过程中,但它尚没被调用完成

running 所有容器都已经被kubelet创建完成

succeeded 所有容器都已经成功终止了,并不会被重启 (执行一次退出)

failed pod 中的所有容器中至少有一个容器退出是非0状态

Unknown 无法正常获取到pod对象的状态信息

Pod管理命令(二)

系统中的核心服务都是运行在pod中

子命令说明备注
run创建Pod资源对象一般用来创建 Pod 模板
get查看资源对象的状态信息可选参数: -o 显示格式
describe查询资源对象的属性信息
logs查看容器的报错信息可选参数: -c 容器名称

排错三板斧99.99% 问题通过 get describe logs提示解决

# 创建 Pod
[root@master ~]# kubectl run myweb --image=myos:httpd
pod/myweb created
[root@master ~]# kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
myweb   1/1     Running   0          26s
# 创建交互式 Pod
[root@master ~]# kubectl run mypod -it --image=myos:v2009
If you don't see a command prompt, try pressing enter.
[root@mypod /]# : 这里已经进入Pod了

# 查询 Pod 信息
[root@master ~]# kubectl get pods
NAME    READY   STATUS    RESTARTS     AGE
mypod   1/1     Running   1 (3s ago)   18s
myweb   1/1     Running   0            68m
[root@master ~]# kubectl get pods -o name
pod/mypod
pod/myweb
[root@master ~]# kubectl get pods -o wide
NAME    READY   STATUS    RESTARTS      AGE   IP           NODE
mypod   1/1     Running   1 (39s ago)   54s   10.244.1.2   node-0001
myweb   1/1     Running   0             69m   10.244.2.2   node-0002

# 查询 pod 的属性信息
[root@master ~]# kubectl describe pod myweb
Name:         myweb
... ...
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  18s   default-scheduler  Successfully assigned default/myweb to node-0002
  Normal  Pulling    17s   kubelet            Pulling image "myos:httpd"
  Normal  Pulled     17s   kubelet            Successfully pulled image "myos:httpd" in 153.394005ms
  Normal  Created    17s   kubelet            Created container linux
  Normal  Started    17s   kubelet            Started container linux

# 查询 pod 的日志信息
[root@master ~]# kubectl logs myweb
[root@master ~]# 

名称空间 

# 查询节点信息
[root@master ~]# kubectl get namespaces 
NAME              STATUS   AGE
default           Active   44m
kube-node-lease   Active   44m
kube-public       Active   44m
kube-system       Active   44m

# 查询 kube-system 名称空间下 Pod 信息
[root@master ~]# kubectl -n kube-system get pods
NAME                             READY   STATUS    RESTARTS   AGE
coredns-54b6487f4d-t7f9m         1/1     Running   0          120m
coredns-54b6487f4d-v2zbg         1/1     Running   0          120m
etcd-master                      1/1     Running   0          120m
kube-apiserver-master            1/1     Running   0          120m
kube-controller-manager-master   1/1     Running   0          120m
kube-flannel-ds-8x4hq            1/1     Running   0          111m
kube-flannel-ds-c5rkv            1/1     Running   0          111m
kube-flannel-ds-sk2gj            1/1     Running   0          111m

系统命名空间

        default 默认的 不声明命名空间的pod都在这

        kube-node-lease为高可用提供心跳检测的命名空间

        kube-public公共数据,所有用户都可以读取它

        kube-system系统服务对象所示用的命名空间,系统核心服务都运行在这

查看命名空间

        kubectl get namespace

查看命名空间中pod信息

        kubectl -n kube-system get pods

管理命令(三)

子命令说明备注
exec在某一个容器内执行特定的命令可选参数: -c 容器名称
cp在容器和宿主机之间拷贝文件或目录可选参数: -c 容器名称
delete删除资源对象可选参数: -f 文件名称
create创建资源对象必选参数: -f 文件名称
apply(创建/更新)资源对象必选参数: -f 文件名称
# 使用资源文件创建/更新Pod
[root@master ~]# vim mypod.yaml 
---
kind: Pod
apiVersion: v1
metadata:
  name: mypod
spec:
  containers:
  - name: linux
    image: myos:latest
    stdin: true
    tty: true

[root@master ~]# kubectl apply -f mypod.yaml 
Warning: resource pods/mypod is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.
The Pod "mypod" is invalid: spec.containers: Forbidden: pod updates may not add or remove containers
[root@master ~]# sed 's,mypod,pod1,' mypod.yaml |kubectl apply -f -
pod/pod1 created

# 在Pod中执行命令
[root@master ~]# kubectl exec myweb -- ls
index.html
info.php
# 在Pod中执行一个交互式命令
[root@master ~]# kubectl exec -it myweb -- bash
[root@myweb html]# : 这里已经进入Pod了

# 拷贝Pod文件到本地
[root@master ~]# mkdir -p website
[root@master ~]# kubectl cp myweb:index.html website/index.html
[root@master ~]# tree website
config
└── index.html
# 拷贝目录到Pod
[root@master ~]# kubectl cp website mypod:./
[root@master ~]# kubectl exec mypod -- tree website
website
`-- index.html

# 删除Pod
[root@master ~]# kubectl delete -f mypod.yaml 
pod "mypod" deleted
[root@master ~]# kubectl delete pod1 myweb
pod "pod1" deleted
pod "myweb" deleted

Pod资源文件

使用资源文件定义Pod

最小资源文件

kind: Pod
apiVersion: v1
metadata: 
  name: pod-name
spec:
  containers:
  - name: containers-name
    image: mirror-where
status: {}

k8s定义关键字key采用小驼峰  vaule采用大驼峰形式

你必须要掌握

  1. ---                   #yaml文件开始标识
  2. kind: Pod        #资源对象类型
  3. apiVersion: v1  #版本
  4. metadata:        #元数据
  5. name: myweb   #资源对象名称
  6. spec:                 #规格
  7. terminationGracePeriodSeconds: 0     #宽限期
  8. restartPolicy: Always      #容器结束后的重启策略
  9. containers:                 #容器定义
  10. - name: apache           #容器名称
  11. image: myos:httpd        # 创建容器的镜像
  12. ports:                             #容器端口配置
  13. - protocol: TCP            # 协议
  14. containerPort: 80          # 容器服务监听的端口
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。