k8s 更新pod(k8s pod service deployment)

k8s 更新pod(k8s pod service deployment)K8S 是一个便携的 可扩展的 开源平台 利用声明式的配置和自动化操作来管理容器化的服务 K8S 主要功能就是做容器编排 编排是什么 就是原本就已经存在了某些东西 你利用这些东西进行排列组合之类的操作 来发挥某些价值 上面提到了 Docker 可以对应用进行打包 但是当容器越来越多的时候 管理难度也会随之增加 而 K8S 就是一种容器管理工具 方便我们来管理 Docker 下图是部署方案的升级

大家好,我是讯享网,很高兴认识大家。



K8S是一个便携的,可扩展的,开源平台,利用声明式的配置和自动化操作来管理容器化的服务。

K8S主要功能就是做容器编排, 编排是什么? 就是原本就已经存在了某些东西,你利用这些东西进行排列组合之类的操作,来发挥某些价值。上面提到了Docker可以对应用进行打包,但是当容器越来越多的时候,管理难度也会随之增加,而K8S就是一种容器管理工具,方便我们来管理Docker。


讯享网

下图是部署方案的升级:

可参考:什么是 Docker ?容器对应用程序的好处。

K8S是方便容器管理的,那么K8S有哪些好处呢?

我自己的感觉是K8S在运维和发布上相比于传统的方式简化了很多:

K8S的集群主要有Master节点和Worker节点两种类型,左侧为Master节点,右侧为多个Worker节点。Master节点主要用于暴露API,调度部署,和节点的管理。Worker节点时真正工作的节点,Docker就运行在工作节点上,同时运行一个K8S的代理用于同主节点通信。

集群版本如果只是做实验会比较麻烦,我们可以使用官方提供的minikube安装简化版本的K8S即可。

在minikube配置好本地K8S集群之后,我们就可以利用本地环境来探索K8S的用法了。

Pod

K8S调度的最小单位,在一个pod里面可以有一个或者多个容器。下图为pod,node,与Container的关系:

参考: Hands-on: Kubernetes Pods. My first container

Replication Controller

其实听名字我们大致可以猜到这个概念在K8S中就是控制复制相关的东西,实际上它就是在配置文件中定义了一个期望的场景,即声明某种pod的副本数量在任意时刻都符合某个预期值,然后K8S会根据期望值进行调度Pod。所以RC的定义包含如下部分:

如下为一个RC定义的例子:

apiVersion: v1 kind: ReplicationController  metadata:   name: nginx spec:   replicas: 3   #定义副本数   selector:     app: nginx  #定义选择的pod label   template:     metadata:       name: nginx       labels:         app: nginx     spec:       containers:       - name: nginx         image: nginx         ports:         - containerPort: 80

讯享网

如果我们想要让pod的数量变为2个的话:

删除RC:

Deployment

Deployment相当于对RC的一次升级,它也是描述自己期望的状态,然后K8S会尽力实现我们想要的状态。Deployment的典型使用场景有以下几个:

讯享网apiVersion: apps/v1 kind: Deployment metadata:   name: nginx-deployment   labels:     app: nginx spec:   replicas: 3   selector:     matchLabels:       app: nginx   template:     metadata:       labels:         app: nginx     spec:       containers:       - name: nginx         image: nginx:1.12.2         ports:         - containerPort: 80

使用命令创建Deplyment:

.kubectl create -f .labsdeploymentdeployment_nginx.yml

更新与回滚容器的镜像

ReplicationSet

ReplicaSet(RS)是Replication Controller(RC)的升级版本。ReplicaSet 和 Replication Controller之间的唯一区别是对选择器的支持。

大多数kubectl支持Replication Controller 命令的也支持ReplicaSets。

一般使用Deployment来管理ReplicaSets,很少会单独使用ReplicaSets

Service

在K8S集群中,每个pod都有自己的独立IP地址。

当我们使用RS或者RC的时候,如果对pod做scale的话,可能会杀死一些pod。当使用Deployment进行滚动更新的时候,旧的pod也会被终止,然后创建新的pod,但是这个时候Pod IP地址就会变化了。

但是一般提供给外界的都是一个稳定的IP和端口,来提供服务,那么pod提供的服务如何才能被发现或者及时更新呢?这就是K8S的Service做的事。

Service有三种类型:

首先看下节点的IP

ClusterIP

通过kubectl expose命令创建的服务默认是ClusterIP,其地址如上图,只有K8S集群内部可以访问。

NodePort

在使用Kubectrl创建服务的时候指定service的类型:

kubectl expose deployment nginx-deployment –type=NodePort

从外部访问:

关于LoadBalancer需要外部依赖,这里就不做演示

K8S现在基本上成为互联网公司的标准配备,哪怕没有在线上使用,也会再开发环境做一些研究,作为技术人员很有必要学习一下K8S,希望这篇文章能帮助到大家。

注:

本文独家发布自金蝶云社区


小讯
上一篇 2025-05-10 21:33
下一篇 2025-05-17 15:38

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/179504.html