k8s集群

本文介绍了如何在Kubernetes集群中安装Harbor私有仓库,以及如何配置节点以优先访问私有仓库。此外,文章还详细讲解了Pod的管理,包括如何使用kubectl命令、Pod的扩容与缩减、Service的概念以及不同类型的Service。还探讨了Init容器、探针(存活、就绪、启动)的使用,以及控制器如ReplicaSet、Deployment和DaemonSet的工作原理及其在Pod管理中的作用。
摘要由CSDN通过智能技术生成

安装harbor

 让节点优先访问私有仓库

vim /etc/docker/daemon.json

 

 systemctl reload docker.service

每个节点同样的操作,且都要做解析 

 

 复制证书后才能正常拉取

 也可以这样直接拉取

 

 可以将需要的镜像上传到私有仓库,然后在不同节点直接从本地私有仓库拉取,速度快

 

 pod管理

 Pod是可以创建和管理Kubernetes计算的最小可部署单元,一个Pod代表着集群 中运行的一个进程,每个pod都有一个唯一的ip。
一个pod类似一个豌豆荚,包含一个或多个容器(通常是docker),多个容器间 共享IPC、Network和UTC namespace。

 kubectl命令:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands 

vim .bash_profile加了环境变量才能用kubectl命令

source .bash_profile 

 

 kubectl  describe pod nginx可以查看详细信息

 

 

 

 

 

 pod扩容与缩减

  service是一个抽象概念,定义了一个服务的多个pod逻辑合集和访问pod的策略, 一般把service称为微服务。

 此时pod客户端可以通过service的名称访问后端的两个Pod 

ClusterIP: 默认类型,自动分配一个仅集群内部可以访问的虚拟IP

 

 

 

使用NodePort类型暴露端口,让外部客户端访问Pod 

 

 集群内只要访问30198端口就会访问到ip,由其进行负载均衡

 

  

更新pod镜像 

 ​​​​​​​

资源清单

 

 删除不用的

 

 

 

 

 

 

 

 pod生命周期

Init 容器 | Kubernetes

Pod 可以包含多个容器,应用运行在这些容器里面,同时 Pod 也可以有一个或 多个先于应用容器启动的 Init 容器。
 Init 容器与普通的容器非常像,除了如下两点: 它们总是运行到完成。  Init 容器不支持 Readiness,因为它们必须在 Pod 就绪之前运行完成,每 个 Init 容器必须运行成功,下一个才能够运行。
如果 Pod 的 Init 容器失败,Kubernetes 会不断地重启该 Pod,直到 Init 容器成 功为止。然而,如果 Pod 对应的 restartPolicy 值为 Never,它不会重新启动

通过初始化容器阻塞正常容器

 

 

 vim svc.yaml

 

  

 

 

 ​​​​​​​

 

 探针 是由 kubelet 对容器执行的定期诊断: ExecAction:在容器内执行指定命令。如果命令退出时返回码为 0 则认为 诊断成功。 TCPSocketAction:对指定端口上的容器的 IP 地址进行 TCP 检查。如果 端口打开,则诊断被认为是成功的。 HTTPGetAction:对指定的端口和路径上的容器的 IP 地址执行 HTTP Get 请求。如果响应的状态码大于等于200 且小于 400,则诊断被认为是成功 的。
每次探测都将获得以下三种结果之一: 成功:容器通过了诊断。 失败:容器未通过诊断。 未知:诊断失败,因此不会采取任何行动

 Kubelet 可以选择是否执行在容器上运行的三种探针执行和做出反应: • livenessProbe:指示容器是否正在运行。如果存活探测失败,则 kubelet 会 杀死容器,并且容器将受到其 重启策略 的影响。如果容器不提供存活探针, 则默认状态为 Success。
readinessProbe:指示容器是否准备好服务请求。如果就绪探测失败,端点 控制器将从与 Pod 匹配的所有 Service 的端点中删除该 Pod 的 IP 地址。初 始延迟之前的就绪状态默认为 Failure。如果容器不提供就绪探针,则默认状 态为 Success。
startupProbe: 指示容器中的应用是否已经启动。如果提供了启动探测 (startup probe),则禁用所有其他探测,直到它成功为止。如果启动探测失 败,kubelet 将杀死容器,容器服从其重启策略进行重启。如果容器没有提 供启动探测,则默认状态为成功Success。

配置存活、就绪和启动探测器 | Kubernetes

 存活探针

 

  

 

 探针探测失败将导致pod不断重启,如修改yaml文件探测端口为8000,直到检测成功

 

 

就绪探针

 

 

 

 此时不会重启,但将一直为未就绪状态

 

就绪探针探测失败,会被微服务下线,实现动态的负载均衡,相当于svc微服务通过探针对后端pod进行一个健康检测,判断pod是否就绪。

控制器 

 ReplicaSet 和 Replication Controller 的唯一区别是选择器的支持,ReplicaSet 支持 新的基于集合的选择器需求。 ReplicaSet 确保任何时间都有指定数量的 Pod 副本在运行。 虽然 ReplicaSets 可以独立使用,但今天它主要被Deployments 用作协调 Pod 创建、 删除和更新的机制

ReplicaSet控制器示例

通过标签来选择pod

 

 

 

  

 

 

 

Deployment 为 Pod 和 ReplicaSet 提供了一个申明式的定义方法。  典型的应用场景: 用来创建Pod和ReplicaSet ,滚动更新和回滚 ,扩容和缩容, 暂停与恢复。

Deployment控制器示例:  

  

 ​​​​​​​

  

 

 所以层级关系为:由development创建rs,再由rs创建pod

升级和回滚

 vim rs.yaml

 

 

 此时kubectl get pod -o wide,curl pod的地址版本更换为v1,对于deployment而言,一个rs就是一个版本

 当进行rs版本更新时,development会重新创建一个rs,把旧版本rs下的pod全部删掉,然后在新版本rs下生成指定副本数的pod。(删除旧版本rs下的pod时,rs保留,为了便于回滚,只需修改yaml文件中为旧版本,即可回滚为旧版本)

 DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。当有节点 加入集群时, 也会为他们新增一个 Pod 。当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。

 DaemonSe用于分布式,一个server端,若干agent端,agent端每个节点都得布置,最后汇总到server端 。在许多节点布置相同的应用。

​​​​​​​

 

 pod数由节点数控制,新增节点会自动加一个pod

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值