k8s学习

一、简单了解

二、Pod的生命周期与拉取、重启策略

1.生命周期

2. 重启策略

适用于pod对象中的所有容器

3. 拉取策略

三、探针

就绪探针不会反复的进行重启,ready会变为0,但运行可能是running

存活探针会根据重启策略,来对pod中的容器进行重启。

mkdir /etc/k8s
kubectl delete -f /etc/k8s/nginx-pod.yaml

cat > /etc/k8s/nginx-pod.yaml <<-'EOF'
apiVersion: v1 
kind: Pod 
metadata: 
  name: pod-nginx
spec: 
  containers: 
  - name: container-nginx
    image: nginx:latest 
    ports: 
    - containerPort: 80
  	#配置存活探针,每五秒钟执行一次探测容器80端口是否准备就绪
    #而第一次探测执行前先等待10秒,留出必要的初始化时间
    livenessProbe:
      tcpSocket:
        #port: 8080
        port: 80
      initialDelaySeconds: 10
      periodSeconds: 5
    readinessProbe:
      httpGet:
        path: /abcde
        #path: /
        port: 80
        httpHeaders:
        - name: Custom-Header
          value: Awesome
      initialDelaySeconds: 3
      periodSeconds: 3      
EOF

kubectl apply -f /etc/k8s/nginx-pod.yaml
kubectl describe pod pod-nginx

在Kubernetes中,利用探针(Probes)检查Pod健康状态是一种标准化的方法,用于确保Pod内的容器处于期望的工作状态。Kubernetes提供了两种类型的探针:

  1. Liveness Probe(存活探针): 用于检测容器是否还在正常运行。如果存活探针检测失败,Kubernetes会认为容器已经进入不健康状态,kubelet会根据容器的重启策略(RestartPolicy)采取相应行动,如重启容器。这有助于自动恢复因内部错误而“卡死”但仍在运行状态的容器。

  2. Readiness Probe(就绪探针): 用于检测容器是否准备好接受流量。只有当就绪探针检测成功时,Kubernetes才会将该容器视为服务的一部分,将其纳入Service的负载均衡池。这对于确保服务只将请求路由到能够正确处理请求的容器至关重要,避免将流量导向尚未初始化完成或正在进行维护的容器。

探针可以通过以下三种方式定义和执行:

  Exec Action: 在容器内执行指定的命令,如果命令退出时返回码为0,则认为探针成功。

例如:

livenessProbe:
  exec:
    command:
    - cat
    - /healthcheck/liveness
readinessProbe:
  exec:
    command:
    - cat
    - /healthcheck/readiness

HTTP GET Action: 向容器内指定的HTTP端点发送GET请求,根据HTTP响应的状态码判断探针是否成功。可以指定超时时间(timeoutSeconds)、重试次数(periodSeconds)和初始延迟(initialDelaySeconds):

livenessProbe:
  httpGet:
    path: /health
    port: 8080
    httpHeaders:
    - name: Custom-Header
      value: Awesome-Value
readinessProbe:
  httpGet:
    path: /ready
    port: 8080

TCP Socket Action: 尝试连接到容器的指定TCP端口,如果能够建立连接,则认为探针成功:

livenessProbe:
  tcpSocket:
    port: 8080
readinessProbe:
  tcpSocket:
    port: 8080

思维导图

四、pod如何对外暴露

突然忘记了 master和workerNode

由k8s的无状态想到http的无状态

1.

五、部署

为什么既然保持一致,那为什么还要template,直接用selector不就行了

滚动更新的时机,通过kubectl edit deploy deploy-nginx --record ,进入配置文件,修改镜像的版本之后,会触发。  --record会将 更新的过程体现出来

操作pod的数量

进行回退后,pod的数量并不会发生改变,pod的镜像会发生改变。

八、service

kubectl   delete  svc  服务名          ps: svc是service的名称

service的IP和Port 比较固定,不像pod那样由于扩容伸缩,释放重建,灵活多变

service和pod通过selector进行绑定

但在设置时,需要设置三个port, 其中service自己设置的port可以被其他服务器进行访问(即可以在另一个工作节点:服务器  进行访问)。

画个图 把service和Node和pod的关系写出来

九、Ingress

Ingress和Ingress Controller是Kubernetes中紧密相关但职责不同的两个概念,它们之间的区别与联系如下:

Ingress

  1. 定义: Ingress是Kubernetes的一个API资源对象,通常以YAML或JSON格式的资源配置文件创建。它是一个高层次的抽象,用来描述集群外部的HTTP(S)流量应该如何路由到内部的Service。

  2. 功能: Ingress资源定义了外部请求的路由规则,包括主机名(hostname)、URL路径(path)、后端Service、TLS配置等。这些规则告诉Kubernetes集群如何将来自外部客户端的请求映射到相应的Service。

  3. 作用: Ingress本身并不执行任何实际的流量处理或代理工作。它更像是一个配置模板,定义了集群对外暴露服务的策略和规则。

Ingress Controller

  1. 定义: Ingress Controller是Kubernetes集群中运行的一个或一组软件组件(通常是部署为Pod),它们持续监控Ingress资源的变化,并根据Ingress的规则配置实际的负载均衡器或代理服务器。

  2. 功能: 当Ingress Controller检测到Ingress资源的创建、更新或删除时,它会解析这些规则,并将其转化为实际的代理配置(如Nginx的配置文件、Envoy的路由规则等)。然后,Ingress Controller会确保这些配置被应用到其管理的负载均衡器或代理服务器上,使其能够按照Ingress定义的规则处理外部请求。

  3. 作用: Ingress Controller是Ingress规则的执行者,它实现了Ingress资源的语义,负责将抽象的路由规则转化为实际的网络流量处理逻辑。常见的Ingress Controller实现包括Nginx Ingress Controller、Traefik、Contour、Istio等。

联系与区别总结

  • 联系: Ingress和Ingress Controller共同构成了Kubernetes的外部访问管理机制。Ingress定义了流量路由规则,而Ingress Controller负责将这些规则转化为实际的网络配置,并确保这些配置在负载均衡器或代理服务器上生效。两者相互配合,使得Kubernetes能够透明地将外部请求路由到集群内的Service。

  • 区别

    • 角色:Ingress是配置层面的抽象,描述了路由规则;Ingress Controller是执行层面的组件,负责实现这些规则。
    • 操作:用户直接操作和管理的是Ingress资源;Ingress Controller则是自动响应Ingress变化,无需用户直接干预。
    • 生命周期:Ingress资源的创建、更新、删除由用户通过Kubernetes API完成;Ingress Controller的部署、升级、维护则属于集群基础设施的一部分,通常由运维人员管理。

总的来说,Ingress和Ingress Controller分工明确,前者负责定义路由策略,后者负责实现这些策略,它们共同构建了Kubernetes集群对外提供HTTP(S)服务的统一入口和管理机制。

十、无头服务

用于 内部访问其他节点。

十一、 PV

让多个pod共享同一个文件

容器内部产生数据

访问模式是什么意思?

pv必须要包含 pvc所具有的功能。

claim声明 pv与pvc的绑定关系

storageClassName

pv和pvc所需的存储空间,假如有多个pvc,应该怎么做。

如何正确的删除 PV和PVC

创建的时候,先创建PV,再创建PVC,再创键部署。

删的时候要反着来。

对象存储、块存储、文件存储

END:一些疑问

1. yml文件里可以定义多个资源吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值