6.Pod的资源配置模板
  IS4yhiOomKTv 2023年11月02日 21 0
Pod

资源范式:五个一级字段

    kind:<String>指明对象的类型(资源类型),类型标签
    apiVersion:<String>指明对象的类型(资源类型),类型隶属的API群组
    metadata:<Object>对象元数据,名称/标签/注解和隶属的名称空间
    spec:<Object>对象数据,期望状态
    status:<Object>资源的实际状态,由系统组件自行负责维护

系统默认名称空间

default           默认使用名称空间
kube-node-lease   
kube-public       
kube-system       系统级名称空间

service类型:

cludterIP:仅支持集群内部的客户访问
nodepoet:支持集群内部的客户访问,同时支持集群外部的客户端通过任何一个的节点IP地址进行访问,但要使用特定端口,分配的范围:30000-32768

创建service:
[root@K8s-master01 ~]#kubectl create service nodeport demoapp --tcp=8080:80 -n demo
service/demoapp created

查看该名称空间下的pod明细信息,可以看到外部访问端口号:
[root@k8s-master02 ~]#kubectl get svc -n demo
NAME      TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
demoapp   NodePort   10.97.101.72   <none>        80:31994/TCP   11s

在集群外部访问节点IP和外部访问端口,可以访问到pod:
http://10.0.0.101:31994/
iKubernetes demoapp v1.0 !! ClientIP: 10.244.1.0, ServerName: demoapp-55c5f88dcb-848mv, ServerIP: 10.244.3.2!
#此时,通过所有master节点IP加端口,都可以访问到,并且还会自动做负载均衡,轮询访问node节点

Pod的资源配置

下载镜像策略

imagePullPolicy:
  1.IfnotPresent:在镜像标签不是latest时,当前节点存在相关image时,就直接使用,否则,就去pull image;
  2.Always:无论当前节点是否存在相关的image,都要执行pull image
  3.Never:无论当前节点是否存在相关的image,都不执行pull image

向容器传递环境变量

[root@k8s-master02 chapter4]#vim pod-using-env.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-using-env
  namespace: default
spec:
  containers:
  - name: demo
    image: ikubernetes/demoapp:v1.0
    imagePullPolicy: IfNotPresent
    env:
    - name: HOST
      value: "127.0.0.1"
    - name: PORT
      value: "8080"

查询参数传递成功:
[root@k8s-master02 chapter4]#kubectl exec pod-using-env -- netstat -tnl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN  

查看pod运行到哪个工作节点:
[root@k8s-master02 chapter4]#kubectl get pods -o wide

重启策略

Pod的重启策略:决定了容器终止后是否应该重启
◼ Always:无论何种exit code,都要重启容器
◼ OnFailure:仅在exit code为非0值(即错误退出)时才重启容器
◼ Never:无论何种exit code,都不重启容器

应用监控Pod的健康状态监测机制

Pod支持的监测类型
◼ startup Probe
◼ liveness Probe
◼ readiness Probe
监测机制
◼ Exec Action:根据指定命令的结果状态码判定
◼ TcpSocket Action:根据相应TCP套接字连接建立状态判定
◼ HTTPGet Action:根据指定https/http服务URL的响应结果判定
配置参数
◼ initialDelaySeconds
◼ periodSeconds
◼ timeoutSeconds
◼ successThreshold
◼ failureThreshold

安全上下文

 Pod及容器的安全上下文
◼ 一组用来决定容器是如何创建和运行的约束条件,这些条件代表创建和运行容器时使用的运行时参数
◼ 给了用户为Pod或容器定义特权和访问控制机制
 Pod和容器的安全上下文设置主要包括以下几个方面
◼ 自主访问控制DAC
◼ 容器进程运行身份及资源访问权限
◼ Linux Capabilities
◼ seccomp
◼ AppArmor
◼ SELinux
◼ Privilgegd Mode
◼ Privilege Escalation
 Kubernetes支持在Pod及容器级别分别使用安全上下文
 阿里云知行实验室上的实验:“理解及使用Security Context”

资源需求(requests)和限制(limits)

 资源需求和资源限制
◼ 资源需求(requests)
◆定义需要系统预留给该容器使用的资源最小可用值
◆容器运行时可能用不到这些额度的资源,但用到时必须确保有相应数量的资源可用
◆资源需求的定义会影响调度器的决策
◼ 资源限制(limits)
◆定义该容器可以申请使用的资源最大可用值,超出该额度的资源使用请求将被拒绝
◆该限制需要大于等于requests的值,但系统在其某项资源紧张时,会从容器那里回收其使用的超出其requests值的那部
分
 requests和limits定义在容器级别,主要围绕cpu、memory和hugepages三种资源
 阿里云知行实验室上的实验:“资源需求和资源限制”

资源配置模板

apiVersion: v1 
        kind: Pod 
        metadata: 
            name: 
            namespace:
            labels:
                key1: value1:
        spec: 
            containers:
            - name: 
              image:  
            - name: 
              image:
            - name: 
              image: 
              securityContext: {}
              startProbe: {}
              livenessProbe: {}
              readinessProbe: {}
              command: []string 
              args: []string
              resources: {}
                reuqests: {}
                    cpu: 100m 
                    memory: 512Mi
                limits: {}
              env: {}
              - name: 
                value: 
            imagePullPolicy:
            restartPolicy: 
            securityContext: {}

手动生成资源配置模板

[root@k8s-master01 ~]#kubectl run demoapp-pod-002 --image=ikebernetes/demoapp:v1.0 --restart=Never --port=80 --dry-run=client -o yaml > demoapp-pod-002.yaml
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: demoapp-pod-002
  name: demoapp-pod-002
spec:
  containers:
  - image: ikebernetes/demoapp:v1.0
    name: demoapp-pod-002
    ports:
    - containerPort: 80
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Never
status: {}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  ZLGFQDxSRQTs   2023年11月05日   43   0   0 APIPod
  ozzp9aSSE46S   2023年11月30日   31   0   0 DNSIPPod
  YKMEHzdP8aoh   2023年12月11日   65   0   0 DNSidePod
  zNxK8cIqmu7p   2023年11月19日   31   0   0 ServerAPIPod
  ZLGFQDxSRQTs   2023年11月14日   30   0   0 Docker私有仓库Pod