作者老郑来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)RESP协议Redis基于RESP(RedisSerializationProtocal)协议来完成客户端和服务端通讯的。RESP本质是一种文本协议,实现简单、易于解析。如下表所示:如果客户端和服务端在一台机器上。那么会对通讯协议进行优化,直接走本地回环我们可以通过tcpdump命令来抓取客户端和服务端请求、响应的数据包,命令如下:linuxtcpdumpilopart6379Annmactcpdumpilo0por...
2022-09-06 11:58:41 5227浏览 0点赞 0回复 0收藏
作者老夏来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)你否曾经想托管自己的GitLab存储库以确保代码永远不会落入坏人之手?尽管在第三方云主机上托管你的存储库有很多优势(例如可用性和可靠性),但要完全控制你的存储库,这样任何人都可以在未经你批准的情况下访问它。在Docker的帮助下,您可以做到这一点。我将向你展示它是如何完成的。它并不过分复杂,但需要许多步骤。所以,事不宜迟,让我们开始工...
2022-09-06 11:58:27 4253浏览 0点赞 0回复 0收藏
作者乔克来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)什么是云原生?我相信大部分人都听过云原生,但是要你说出一个所以然,却不知道怎么开口,我也是一样。我不知道云原生到底是什么,从字面来看:云原生就是为云而生。云是什么?我理解云就是云计算,那云原生就是在云计算的基础之上设计实现,充分利用云的弹性、分布式等特性,让应用能够实现弹性伸缩、动态调度,也能更高的提升资源利用率。发展历程...
2022-09-06 11:58:19 3845浏览 0点赞 0回复 0收藏
作者乔克来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)容器的发展史容器是一个通用性的技术,不指代某一个特定的软件产品。由于Docker的诞生,带动了容器技术的大火,以至于后面很多时候说的容器都指向Docker,其实除了Docker,还有许多其他的容器技术,比如RKT,LXC,Podman等。其实,在Docker诞生之前,容器技术就已经存在了。可以通过下面这张图来直观的感受容器的发展历史。时间线如下:1979年,Unixv...
2022-09-06 11:58:09 5573浏览 0点赞 0回复 0收藏
作者乔克来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)MNTNamespace虽然我们已经通过Linux的命名空间解决了进程和网络隔离的问题,在Docker进程中我们已经没有办法访问宿主机器上的其他进程并且限制了网络的访问,但是Docker容器中的进程仍然能够访问或者修改宿主机器上的其他目录,这是我们不希望看到的。在新的进程中创建隔离的挂载点命名空间需要在clone函数中传入CLONENEWNS,这样子进程就能得到父进...
2022-09-06 11:57:52 5610浏览 0点赞 0回复 0收藏
作者乔克来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)什么是Kubernetes?在《Docker容器技术》章节就有简单介绍Kuberntes,它是谷歌开源的容器容器集群管理系统,是谷歌内部容器管理系统Borg的开源版本。Borg系统是谷歌内部使用很多的容器管理系统,在早期是采用ChrootJail实现安全隔离,后期采用Namespace,资源隔离是采用CGroup实现。为什么谷歌要推出Kubernetes开源版本呢?我个人的理解是:使用开源...
2022-09-06 11:57:24 4708浏览 0点赞 0回复 0收藏
作者乔克来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)大家好,我是乔克。Kubernetes作为容器的编排平台,它是以集群的形式为业务提供服务。所以在日常的工作中,作为Kubernetes平台的维护者,会经常对集群进行管理。这里,我将集群管理分为以下几种:安装集群前置说明Kubernetes的集群安装分为:kubeadm安装和二进制安装。在这里,只会介绍kubeadm的安装。安装说明:集群节点:2个IP信息:master:192.16...
2022-09-06 11:57:12 4142浏览 0点赞 0回复 0收藏
作者乔克来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)更新集群集群的更新操作有很多,比如创建或删除应用、添加或者删除节点等,这里主要介绍几种常用的操作:升级集群更新集群证书添加或删除集群升级集群Kubernetes社区新版本的推出速度很快的,至少保持一年3个版本的迭代。在实际生产中,我们可能不会频繁的升级集群,因为这样的动作太大,可能导致其他生产问题。但是,有时候会因为某些原因(比如软件...
2022-09-06 11:56:56 4756浏览 0点赞 0回复 0收藏
作者老郑来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)基本介绍在日常工作中,每个机场都有调度室,用来管理飞机应该从哪里降落,停在什么地方。在Kubernetes也有这样的调度器,主要作用就是将Pod安排到合适的节点上。Kubernetes中的调度器是kubescheduler,工作流程如下:在集群中所有Node中,根据调度算法挑选出可以运行该Pod的所有Node;在上一步的基础上,再根据调度算法给筛选出的Node进行打分,筛选...
2022-09-06 11:56:37 4880浏览 0点赞 0回复 0收藏
作者老郑来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)podAntiAffinity上面介绍了pod的亲和性,这里介绍的podAntiAffinity则是Pod的反亲和性,也就是说不将这类Pod调度到一起。在日常工作中,这种亲和性使用频率还比较高。微服务很少有单Pod,基本都是多个Pod,为了提高应用的高可用,不会将同应用的多个Pod调度到同一台机器上,这时候就要用到podAntiAffinity,如下:apiVersion:appsv1kind:Deploymentme...
2022-09-06 11:55:40 4107浏览 0点赞 0回复 0收藏
作者老夏来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)你可能已经知道Kubernetes是领先的容器编排系统。根据最新的CNCF研究,可能已经将它用于生产工作负载或在未来一年考虑使用它。2021年的研究发现,惊人的96%的受访者正在使用Kubernetes或计划在不久的将来使用它——而69%的受访者目前正在生产中使用Kubernetes。Kubernetes为大型组织和小型组织提供了许多好处:它提高了开发人员的生产力、降低了成本...
2022-09-05 17:57:13 5104浏览 0点赞 0回复 0收藏
作者老郑来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)服务质量管理在Kubernetes中,Pod是最小的调度单元,所以跟资源和调度相关的属性都是Pod对象的字段,而其中最重要的就是CPU和内存。如下所示:apiVersion:v1kind:Podmetadata:name:poddemospec:containers:name:mywebimage:wordpressimagePullPolicy:IfNotPresentresources:requests:memory:"128Mi"cpu:"250m"limits:memory:"256Mi"cpu:"500m"其中res...
2022-09-05 17:57:01 4415浏览 0点赞 0回复 0收藏
作者老郑来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)服务可用性管理高可用生产级别应用,为了保证应用的可用性,除了特殊应用(例如批次应用)都会保持高可用,所以在设计应用Pod的时候,就要考虑应用的高可用。最简单的就是多副本,也就是在创建应用的时候,至少需要2个副本,如下指定replicas为3就表示该应用有3个副本:apiVersion:appsv1kind:Deploymentmetadata:labels:app:nginxname:nginxdeployme...
2022-09-05 17:56:29 4451浏览 0点赞 0回复 0收藏
作者老郑来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)Kubernetes为了能更好的支持有状态应用的数据存储问题,除了基本的HostPath和EmptyDir提供的数据持久化方案之外,还提供了PV,PVC和StorageClass资源对象来对存储进行管理。PV的全称是PersistentVolume(持久化卷),是对底层数据存储的抽象,PV由管理员创建、维护以及配置,它和底层的数据存储实现方法有关,比如Ceph,NFS,ClusterFS等,都是通过插...
2022-09-05 17:55:56 4655浏览 0点赞 0回复 0收藏
作者老郑来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)在Kubernetes中,如果仅仅是单纯的部署Pod,部署Deployment,并没有任何意义,因为我们最终的目的是要为应用和用户提供服务。在Kubernetes中,提供了Service和Ingress两种对象来实现应用间访问或外部对集群应用访问,这两种对象在实际的工作中会时长使用,非常重要的对象。Service对于kubernetes整个集群来说,Pod的地址也可变的,也就是说如果一个Po...
2022-09-05 17:55:37 4555浏览 0点赞 0回复 0收藏
作者老郑来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)安装NginxIngressController安装方式非常简单,可以使用Helm和普通的YAML进行安装,由于我们还没有学习Helm,所以采用YAML清单的方式。如果网络条件好(可以翻墙),可直接使用以下命令安装:$kubectlapplyfhttps:raw.githubusercontent.comkubernetesingressnginxcontrollerv1.3.0deploystaticproviderclouddeploy.yaml如果网络条件不好,可以使用:...
2022-09-05 17:55:02 4925浏览 0点赞 0回复 0收藏
作者老郑来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)Dubbo介绍Dubbo是什么?介绍:ApacheDubbo是一款微服务框架,为大规模微服务实践提供高性能RPC通信、流量治理、可观测性等解决方案,涵盖Java、Golang等多种语言SDK实现。特征:RPC通讯框架,服务注册中心,支持原生云(Dubbo3.0)主流版本:2.7.x,3.0SDK:官方SDK支持开发语言:Java、Golang使用厂家:阿里巴巴、饿了么、钉钉、工商银行、小米等注:...
2022-08-26 16:27:21 4303浏览 0点赞 0回复 0收藏
作者乔克来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)Kubernetes主要通过APIServer对外提供服务,对于这样的系统来说,如果不加以安全限制,那么可能导致请求被滥用,甚至导致整个集群崩塌。鉴于此,Kubernetes对于访问API的用户提供了相应的安全控制:认证和授权。认证解决用户是谁的问题,授权解决用户能做什么的问题。只有通过合理的权限控制,才能够保证整个集群系统的安全可靠。下图是API访问需要经...
2022-08-26 16:27:01 6270浏览 0点赞 0回复 0收藏
作者冬子先生来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)1Kafka概述Kafka起初是由LinkedIn公司采用Scala语言开发的一个多分区、多副本且基于ZooKeeper协调的分布式消息系统,现已被捐献给Apache基金会。目前Kafka已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用,主要是由Scala和Java编写。它是一种高吞吐量的分布式发布订阅消息系统,可以...
2022-08-26 16:26:31 3973浏览 0点赞 0回复 0收藏
作者冬子先生来源运维开发故事(ID:mygsdcsf)转载请联系授权(微信ID:wanger5354)5Kafka数据结构说明5.1Kafka在Zookeeper中的注册数据结构kafka使用zookeeper来存储一些meta信息,并使用了zookeeperwatch机制来发现meta信息的变更并作出相应的动作(比如consumer失效,触发负载均衡等)。0)Kafka集群注册信息:永久节点,集群ID当第一台Broker启动的时候,发现clusterid不存在,那么它就会把自己的cluster.id配置写入zk;;标记当前...
2022-08-26 16:25:50 5544浏览 0点赞 0回复 0收藏