k8s
容器和云原生
車輪の唄
atarik@163.com
展开
-
k8s之pod亲和性与反亲和性的topologyKey
Pod亲和性与反亲和性Pod 间的亲和性与反亲和性根据已经在 Node 上运行的 Pod 的标签来调度新的 Pod 到哪个 Node 上,这些规则的形式是:如果 X 已经运行一个或多个符合规则 Y 的 Pod,那么这个 Pod 应该(如果是反亲和性,则不应该)运行在 X 上。和 Node不同,由于 Pod 都是有命名空间的,所以基于 Pod 标签的标签选择器(Label Selector)必须指定命名空间。可以通过namespaces(与labelSelector和topologyK...原创 2020-05-09 20:47:23 · 4784 阅读 · 0 评论 -
dockerfile的时区问题
k8s直接挂在/etc/localtime,发现进去容器后执行date -R和宿主机得到的结果一致, 但是jvm中获取到的时间和系统相差8小时, 日志打印同样相差8小时. 在当前基础镜像下, 没有/etc/timezone只有/etc/localtime, 通过命令ls -l /etc/localtime发现宿主机和容器所对应的软连接不一致导致, /etc/localtime存储本地时间,并软连接...原创 2020-04-24 22:27:26 · 438 阅读 · 1 评论 -
docker CMD和ENTRYPOINT指令
CMD 和 ENTRYPOINT 指令都是用来指定容器启动时运行的命令。单从功能上来看,这两个命令几乎是重复的。单独使用其中的一个就可以实现绝大多数的用例exec 模式和 shell 模式CMD 和 ENTRYPOINT 指令都支持 exec 模式和 shell 模式的写法,所以要理解 CMD 和 ENTRYPOINT 指令的用法,就得先区分 exec 模式和 shell 模式。这两种...原创 2020-04-19 09:44:22 · 995 阅读 · 0 评论 -
k8s的host网络模型
docker网络模型1. Bridge模式(k8s pod使用的通信模型)docker默认的网络模式,为容器创建独立的网络命名空间,容器具有独立的网卡等所有单独的网络栈,是最常用的使用方式。容器从原理上是可以与宿主机乃至外界的其他机器通信的。同一宿主机上,容器之间都是连接到docker0这个网桥上的,它可以作为虚拟交换机使容器可以相互通信。然而,由于宿主机的IP地址与容器veth pair...原创 2020-03-19 23:36:59 · 2913 阅读 · 0 评论 -
k8s的拓扑编排规范--TOSCA
TOSCA(Topology and Orchestration Specification for Cloud Applications)是由OASIS组织制定的云应用拓扑编排规范。通俗地说,就是制定了一个标准,用来描述云平台上应用的拓扑结构。目前支持XML和YAML,Cloudiy的蓝图就是基于这个规范而来。这个规范比较庞大,本文尽量浓缩了TOSCA的YAML版前两章,以便用尽量少的时间了解尽...原创 2020-02-26 21:44:00 · 4743 阅读 · 2 评论 -
k8s之有状态应用的一个demo--mysql主从模式
在K8S运行的服务,从简单到复杂可以分成三类:无状态服务、普通有状态服务和有状态集群服务。下面分别来看K8S是如何运行这三类服务的。无状态服务,K8S使用RC(或更新的Replica Set)来保证一个服务的实例数量,如果说某个Pod实例由于某种原因Crash了,RC会立刻用这个Pod的模版新启一个Pod来替代它,由于是无状态的服务,新启的Pod与原来健康状态下的Pod一模一样...原创 2020-02-26 21:27:36 · 747 阅读 · 0 评论 -
k8s ConfigMap热更新
ConfigMap是用来存储配置文件的kubernetes资源对象,所有的配置内容都存储在etcd中,下文主要是探究 ConfigMap 的创建和更新流程,以及对 ConfigMap 更新后容器内挂载的内容是否同步更新的测试。测试示例假设我们在defaultnamespace 下有一个名为nginx-config的 ConfigMap,可以使用kubectl命令来获取:$ ...原创 2020-02-22 19:07:25 · 7200 阅读 · 1 评论 -
k8s service
service是一个抽象概念,定义了一个服务的多个pod逻辑合集和访问pod的策略,一般把service称为微服务举个例子一个a服务运行3个pod,b服务怎么访问a服务的pod,pod的ip都不是持久化的重启之后就会有变化。这时候b服务可以访问跟a服务绑定的service,service信息是固定的提前告诉b就行了,service通过Label Selector跟a服务的pod绑定,无论a的...原创 2020-02-09 21:15:25 · 365 阅读 · 0 评论 -
k8s中Pod、ReplicaSet、Deployment、Service对比
Pod、ReplicaSet、Deployment、Service之间的关系如下图Pod:Pod是一个或多个容器的组合,这些容器共享存储、网络和命名空间,以及如何运行的规范。Pod是Kubernetes的最小可部署单元。Pod的中文译词是豌豆荚,docker容器就像是豆子运行在豌豆荚内。ReplicaSet:先说下Replication Controller。Replicatio...原创 2020-02-08 21:43:11 · 752 阅读 · 0 评论 -
k8s 使用 Init Container 确保依赖的服务启动顺序
一个 Pod 中可以有多个 container,也可以有多个 init container,init container 会在应用启动之前启动,并且如果有多个应用会依次启动,只有一个运行成功了,才会启动下一个,所有 init container 都运行结束了,应用才会启动,因此,我们可以借助 init container 来检查应用的依赖(如:db/redis/es...)是否已经可用。Ini...原创 2020-02-08 20:47:38 · 4088 阅读 · 1 评论 -
kubernetes中node的调度策略
1、节点选择器(nodeSelector) nodeSelector是目前最为简单的一种pod运行时调度限制,目前在Kubernetes1.7.x及以下版本可用。Pod.spec.nodeSelector通过kubernetes的label-selector机制选择节点,由调度器调度策略匹配label,而后调度pod到目标节点,该匹配规则属于强制约束。kubectl label nod...原创 2020-01-01 20:49:14 · 692 阅读 · 0 评论 -
k8s与云原生
一, 云原生从字面意思上来看可以分成云和原生两个部分。云是和本地相对的,传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端,云包含了IaaS,、PaaS和SaaS。原生就是土生土长的意思,我们在开始设计应用的时候就考虑到应用将来是运行云环境里面的,要充分利用云资源的优点,比如️云服务的弹性和分布式优势。那具体要怎么利用呢,请参考下图:微服务微服务解决的是我们软...原创 2019-12-28 21:12:48 · 4129 阅读 · 0 评论