k8s基础了解

标准方式启动的pod

[root@k8s-master-1 nginx]# cat pod1.yaml

apiVersion: v1

kind: Pod

metadata:

  name: nginx-xiaojiahao

spec:

  containers:

  - name: nginx

    image: nginx:latest

    ports:

    - containerPort: 80

apiVersion: apps/v1   # 是k8s里对Deployment资源对象定义的api接口的版本,因为k8s会不断地升级,每个版本的k8s里的对Deployment操作的方法或者操作有改变,会增加或者删除某些内容

任何的资源对象都有对应版本的api,api接口的程序会升级,会增加或者删除某些内容,这个时候就该新的api接口的规范起一个新的名字

kind: Deployment  #定义了资源的类型

metadata:  #对上面的资源的描述  --》元数据: 描述其他数据的数据

  name: nginx-deployment

  labels:

    app: nginx

    author: fengdeyong

    sex:  m

spec:  #资源对象具体的参数(属性)

      https://raw.githubusercontent.com/kubernetes/website/main/content/zh-cn/examples/pods/resource/memory-request-limit.yaml

Container ID:  docker://543ccd1c023e4ca50d5fa13ee2c2debfa002a0dfdf471e15265aa1495a8f2346

内存溢出(OOM)  out of  memory  ---》程序需要使用的内存超出了允许使用内存的范围。

docker   1000

k8s   1个cpu核心  1000豪

      8个cpu核心  8000豪

[root@k8s-master-1 nginx]# kubectl get pod

NAME    READY   STATUS    RESTARTS   AGE

nginx   1/1     Running   0          3s

[root@k8s-master-1 nginx]# kubectl delete  pod nginx --grace-period=1 (1s)优雅的删除 默认30秒

[root@k8s-master-1 nginx]# kubectl delete  pod nginx   --force=1  强制删除

[root@k8s-master-1 nginx]# kubectl delete  pod nginx   --force=true

1. 删除Pod的宽限期

  当用户发送删除Pod的命令时,Kubernetes会为该Pod设置一个宽限期(Grace Period),默认情况下这个宽限期是30秒。

  在这个宽限期内,Pod被视为“Terminating”状态,Kubernetes会尝试优雅地终止Pod中的容器。这通常涉及到向容器发送SIGTERM信号,并等待容器正常退出。

  如果在宽限期内容器没有正常退出,Kubernetes会在宽限期结束时向容器发送SIGKILL信号,强制终止容器。

2. 自定义宽限期

  kubectl delete    --grace-period=<seconds>自定义Pod的删除宽限期。

  如果将宽限期设置为0,并同时使用--force选项,Kubernetes将立即删除Pod,不会等待容器正常退出。但请注意,这种方式可能会导致数据丢失或不一致。

 [root@k8s-master-1 volume]# cat hostpath.yaml

apiVersion: v1

kind: Pod

metadata:

  name: hostpath-example-linux

spec:

  nodeName: k8s-node-2 可以指定pod调度到k8s-node-2节点上

  containers:

  - name: example-container

    image: nginx

    volumeMounts:

    - mountPath: /foo

      name: example-volume

      readOnly: true

  volumes:

  - name: example-volume

    # 挂载 /data/foo,但仅当该目录已经存在时

    hostPath:

      path: /data/foo

      type: DirectoryOrCreate

pod的类型:

    静态pod: kubelet 根据一个配置文件启动的pod,不需要访问api server ,写到etcd数据库--》kube-proxy \calico  --》管理类,基础类

    动态pod: 一般的应用程序业务pod

pod里包含了容器,容器的类型:

until nslookup myservice.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local

do

   echo waiting for myservice

   sleep 2

done

k8s里的dns解析的对象名字

myservice.default.svc.cluster.local

myservice 是一个服务的名字

default 所在的命名空间

svc 表示资源的类型  service类型

.cluster.local 表示本地的k8s集群,默认就是这个名字

pod的对象名字myapp.default.pod.cluster.local

lsns  查看linux里的所有的进程对应的命名空间

/proc  是linux系统里存放的内核的信息  --》目录消耗的内存里的空间

cd  /proc/4116 

[root@k8s-master-1 ns]# ll

lrwxrwxrwx 1 1000 root 0 8月   6 16:59 ipc -> ipc:[4026532541]  与其他进程通信

lrwxrwxrwx 1 1000 root 0 8月   6 16:59 mnt -> mnt:[4026532622]  文件挂载

lrwxrwxrwx 1 1000 root 0 8月   6 16:59 net -> net:[4026532544]  网络通信

lrwxrwxrwx 1 1000 root 0 8月   6 16:59 pid -> pid:[4026532624]  进程

lrwxrwxrwx 1 1000 root 0 8月   6 16:59 user -> user:[4026531837]  用户

lrwxrwxrwx 1 1000 root 0 8月   6 16:59 uts -> uts:[4026532623]  主机名、时间等

cgroups 是用来限制进程的资源(cpu、内存、磁盘IO、网络IO)

  层级关系--》会继承,子文件夹会继承父文件夹里所有的限制项目

  子系统(具体需要限制的资源)   任务--》对应一个进程

[root@k8s-master-1 cgroup]# cd /sys/fs/cgroup/cpu,cpuacct/

[root@k8s-master-1 cpu,cpuacct]# ls

cgroup.clone_children  cgroup.procs      cpuacct.stat   cpuacct.usage_percpu  cpu.cfs_quota_us  cpu.rt_runtime_us  cpu.stat   notify_on_release  system.slice  user.slice

cgroup.event_control   cgroup.sane_behavior  cpuacct.usage  cpu.cfs_period_us     cpu.rt_period_us  cpu.shares         kubepods.slice  release_agent      tasks

cpu.cfs_quota_us  可以限制进程使用的cpu的配额(比例)

tasks  存放受cpu资源限制的进程的名单

root@k8s-master-1 cpu,cpuacct]# cat cpu.cfs_quota_us

-1

[root@k8s-master-1 cpu,cpuacct]#

100000  --》100%

在cpu,cpuacct目录下创建一个sanchuang的cgroup文件夹

[root@k8s-master-1 cpu,cpuacct]# mkdir  sanchuang

[root@k8s-master-1 cpu,cpuacct]# ls

cgroup.clone_children  cgroup.procs          cpuacct.stat   cpuacct.usage_percpu  cpu.cfs_quota_us  cpu.rt_runtime_us  cpu.stat        notify_on_release  sanchuang     tasks

cgroup.event_control   cgroup.sane_behavior  cpuacct.usage  cpu.cfs_period_us     cpu.rt_period_us  cpu.shares         kubepods.slice  release_agent      system.slice  user.slice

[root@k8s-master-1 cpu,cpuacct]# cd sanchuang/

[root@k8s-master-1 sanchuang]# ls

cgroup.clone_children  cgroup.procs  cpuacct.usage         cpu.cfs_period_us  cpu.rt_period_us   cpu.shares  notify_on_release       cgroup.event_control   cpuacct.stat  cpuacct.usage_percpu  cpu.cfs_quota_us   cpu.rt_runtime_us  cpu.stat    tasks

[root@k8s-master-1 sanchuang]# cat cpu.cfs_quota_us

-1

[root@k8s-master-1 sanchuang]# cat cpu.cfs_quota_us

-1

设置sanchuang文件夹下管理的进程,最多可以使用10%的cpu资源 --》指定政策

[root@k8s-master-1 sanchuang]# echo 10000 >cpu.cfs_quota_us

[root@k8s-master-1 sanchuang]# cat cpu.cfs_quota_us

10000  --》10%

编写一个程序产生一个进程去消耗cpu资源

[root@k8s-master-1 sc]# vim test-cpu.py

[root@k8s-master-1 sc]# cat test-cpu.py

while True:

    pass

[root@k8s-master-1 sc]# python test-cpu.py

top 查看cpu消耗

[root@k8s-master-1 sanchuang]# top

查看python允许的test-cpu.py的pid号

[root@k8s-master-1 sanchuang]# ps aux|grep python

root     114853 61.3  0.1 123456  4464 pts/1    R+   17:20   1:36 python test-cpu.py

将pid加入到tasks文件里

[root@k8s-master-1 sanchuang]# cat tasks

[root@k8s-master-1 sanchuang]# echo 114853 >tasks

然后再去top查看python test-cpu.py消耗的cpu资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值