Debian 9 使用kubeadm创建 k8s 集群(上)
,Docker, kubeadm和kubelet将安装在所有远程服务器上。 kubectl不是必需组件,仅用于执行集群命令。 在此上下文中仅在主节点上安装它是有意义的,因为您将kubectl主服务器运行kubectl命令。 但是,请注意, kubectl命令可以从任何工作节点运行,也可以从可以安装和配置为指向集群的任何计算机运行。 现在已安装所有系统依赖项。 继续阅读本文下半部分,完成主节点的设置并初始化集群。...阅读全文
,Docker, kubeadm和kubelet将安装在所有远程服务器上。 kubectl不是必需组件,仅用于执行集群命令。 在此上下文中仅在主节点上安装它是有意义的,因为您将kubectl主服务器运行kubectl命令。 但是,请注意, kubectl命令可以从任何工作节点运行,也可以从可以安装和配置为指向集群的任何计算机运行。 现在已安装所有系统依赖项。 继续阅读本文下半部分,完成主节点的设置并初始化集群。...阅读全文
Redis的一些开发规范和建议: 1.冷热数据分离,不要将所有数据全部都放到Redis中 虽然Redis支持持久化,但是Redis的数据存储全部都是在内存中的,成本昂贵。建议根据业务只将高频热数据存储到Redis中【QPS大于5000】,对于低频冷数据可以使用MySQL/ElasticSearch/MongoDB等基于磁盘的存储方式,不仅节省内存成本,而且数据量小在操作时速度更快、效率更高! 2.不同的业务数据要分开存储 不要将不相关的业务数据都放到一个Redis实例中,建议新业务申请新的单独实例。因为Redis为单线程处理,独立存储会减少不同业务相互操作的影响,提高请求响应速度;同时也避免单个实例内存数据量膨胀过大,在出现异常情况时可以更快恢复服务! 在实际的使用过程中,redis最大的瓶颈一般是...阅读全文
域名,是用以简化记录服务器IP地址的马夹,所以,域名只有通过解析到具体的IP地址才能访问网站,就相当于给IP地址穿上的一件马夹,避免我们去记那一长串的数字。可以说,域名的价值是依托于服务器的,没有域名的服务器,可以用IP地址访问,而不解析的域名,就仅仅只是一串字符而已。 商标,是用以区分商品(或服务)来源的一种显著标志,不同公司提供的相同商品,对于大众而言,商品上印刷的标志,代表的就是不同公司。商标的价值,是依托于产品和公司的。 由这一点来看,商标和域名是有其相似性的,广义上来说,它们都是一种指代的符号而已。 但是,域名由于其技术特性,它是虚拟的和全球唯一的,同样的域名不可能同时被两个人注册,它遵循着先注先得的原则,而商标,则允许在不同领域,由不同的人持有相同的商标,比如中国的“中华...阅读全文
sandboxes,其主要逻辑为:1、首先获取 node 上所有的 containers 和 sandboxes;2、构建 sandboxes 与 pod 的对应关系并将其保存在 sandboxesByPodUID 中;3、对 sandboxesByPodUID 列表按创建时间进行排序;4、若 sandboxes 所在的 pod 处于 deleted 状态,则删除该 pod 中所有的 sandboxes 否则只保留退出时间最短的一个 sandboxes,deleted 状态在上文 cgc.evictContainers 方法中已经解释过;k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_gc.go:274func (cgc *containerGC...阅读全文
Garrett 在2006年就指出了 Debian 决策效率低下的痛点,而他曾任 Debian Project Leader(简称 DPL,是 Debian 的项目负责人)。 Joey Hess 是 Debian 中的元老,颇具影响力 不过话说回来,Debian 毕竟是个志愿者组织,社区的事情会被成员放在较后的优先级上,效率自然低下。况且,Debian 组织庞大,事情也不像只有十余名维护者的开源社区一样好解决。 但是,同样的问题引来了更多的人离开。2019年3月,一位名为 Michael Stapelberg 的 Debian 包维护者在其个人博客发表了一篇长文,宣布退出 Debian 的维护。他的文章引起了 Debian 社区内外的广泛关注。 Stapelberg 提到了几个星期前参加 Debian...阅读全文
FaaS,有一个对标的产品叫 Lambda。 Serverless 出现的动力是,由于云计算的发展,带来了如对象存储等很多丰富的中间件,Serverless 概念的提出是希望应用开发者可以不用写后端逻辑,直接把逻辑写在客户端,组合云上的一些服务来完成业务逻辑,这样就没有管理后端资源的负担了。但是后来发现很多时候还是需要后端代码的,所以就演变成如果有后端代码,就拆成函数,托管在 FaaS 服务中,这样的话,你依然是不用管理服务器的,你用的还是一个个服务,没有服务器管理负担。 这个概念在不断进步,2017 年的时候 AWS 提出了一个新的概念,重新定义了什么叫 Serverless,只要一个服务具备了四方面特性:免运维、按需付费、高可用和自动扩容,这个服务就是个 Serverless 的服务。所以...阅读全文
。 < ahref="#" target="_blank" rel="noopener"> The link won't make trouble anymore 13. 灵活处理图片标题 The Headline of todays news
阅读全文
的是它不是非黑即白的,更多的时候是两者混合的灰色,很少有公司有自由软件基金会(或者类似的组织,比如软件自由保护组织)的那种纯粹的理念,因此我想那些公司也不喜欢选择和那些理念相关的协议。 我需要说明,我不是在这是说自由软件基金会以及类似的组织(比如软件自由保护组织)的错。他们有着打造完全自由的软件的目标,对于他们来说,走它们选择的路十分合理。自由软件基金会以及软件自由保护组织做了了不起的工作,我将继续支持这些组织以及为他们工作的人们。我只是觉得这种对纯粹性的高要求的一个后果就是让那些公司认为自己难以达到要求,因此,他们使用了非 GPL 的其他协议。 我怀疑 GPL 的使用是随着开源软件增长而变化的。在以前,启动(开源)项目的根本原因之一是对开放性和软件自由的伦理因素的严格关注。GPL 无疑是项...阅读全文
或bpftrace等项目间接使用eBPF,这些项目在eBPF之上提供了抽象,并且不需要直接编写程序,而是提供了指定基于意图的定义的功能,然后使用eBPF实施。 如果不存在更高级别的抽象,则需要直接编写程序。 Linux内核希望eBPF程序以字节码的形式加载。虽然当然可以直接编写字节码,但更常见的开发实践是利用LLVM之类的编译器套件将伪C代码编译为eBPF字节码。 在编写eBPF程序之前,需要简单了解几个概念。 1)map(映射) :BPF最令人着迷的方面之一是,内核上运行的代码和加载了该代码的程序可以在运行时使用消息传递相互通信。 BPF映射是驻留在内核中的键/值存储。任何BPF程序都可以访问它们。在用户态中运行的程序也可以使用文件描述符访问这些映射。只要事先正确指定数据大小,就可以在映射...阅读全文
述。 Go 1 和 Go 2 之间的主要区别在于主导权的不同。谁将影响设计,又该如何做出决策?我们都知道,Go 1 的诞生是小团队努力的结果,受外部影响不大;而到了 Go 2,尤其是经过将近 10 年的发展后,Go 语言的生态已经十分庞大,因此它也更多地受到社区的驱动和影响。经历了这些,Go 开发团队也了解到了更多一开始不知道的与语言特性和库相关的知识 —— 这些都来自于 Go 社区的反馈。 2015年,Go 开发团队引入了提案流程,以收集特定类型的反馈:针对语言和库变更方面的提案。由 Go 开发团队高级成员组成的委员会定期审查、分类和决定社区提交的提案。这个流程十分有效,但作为该过程的一部分,他们忽略了所有不向后兼容的提案,只是将其标记至 Go 2。到了2017年,Go 开发团队也停止进行...阅读全文
资源,从而获取虚拟货币的一种程序,需要较高的硬件配置及用电量。 而单凭一个矿工的力量是挖不到比特币的。于是“安某”便想到可以利用自己的职务之便利用百度的服务器来开启自己的发家致富之路,只是他可能没想到的是事情会败露的这么快。 那么,他具体是怎么做的呢? 首先,他用自己的工作账户上传了一个压缩文件 miner.tar.gz ,其中包含一个名为 java_4u3 的脚本, 而这个脚本可以自动执行解压缩、创建目录、删除目录、自动连接代理进行网络交换,达到控制服务器的目的。 然后,编译了一个挖矿程序,并将上述程序部署非法控制了百度的 155 台服务器上,利用公司为其配备的苹果电脑上的 iterm 软件控制所有服务器的中控机,通过中控机上传挖矿脚本,并通过 iterm 软件发出批量下载指令,让 200...阅读全文
: thanos receive组件需要部署N个进程组成集群,prometheus可以remote write写入数据到任意receive节点,收到写入请求的receive节点根据metrics label做哈希后计算出负责存储该部分数据的receive节点,并将数据转发过去; 同时,receive可以配置replica数量,这样的话receive会根据哈希结果将数据复制给多个receive做冗余,应该说是非常简单粗暴的复制方案吧,因为监控场景没那么严谨所以基本可用即可,查询去重和归拢则全部依靠querier组件反向查询所有Receive组件搞定。 我们的选择 让prometheus直接配置remote write的方式看起来更好一些,我们只需要在启动一套thanos receive集群,然后让...阅读全文
。 输入用户名/密码: nacos/nacos ,登录 Nacos 后会看到如下页面: 六、Nacos 变量参数及其说明 Nacos 提供了很多可以配置的参数,以环境变量的方式让我们进行配置,部分参数如下所示: 参数名称 默认值 参数描述 SERVER_SERVLET_CONTEXTPATH /nacos 指定 Nacos 服务前缀。 NACOS_APPLICATION_PORT 8848 指定 Nacos 端口。 TOMCAT_ACCESSLOG_ENABLED false 是否开启访问日志。 SPRING_DATASOURCE_PLATFORM 指定数据库平台,目前只支持 mysql。 MYSQL_DATABASE_NUM 1 数据库数量。 MYSQL_SERVICE_HOST 指定数据库主...阅读全文
工作程序。 第5步 - 设置工作节点 将工作程序添加到集群涉及在每个集群上执行单个命令。 此命令包括必要的群集信息,例如主服务器API服务器的IP地址和端口以及安全令牌。 只有传入安全令牌的节点才能加入群集。 导航回您的工作区并创建一个名为workers.yml的剧本: nano ~/kube-cluster/workers.yml 将以下文本添加到文件中以将工作程序添加到集群:〜/ KUBE群集/ workers.yml - hosts: master become: yes gather_facts: false tasks: - name: get join command shell: kubeadm token create --print-join-command...阅读全文
、Selenium、Jasmine 和 Cucumber。 JUnit JUnit 是用于 Java 编程语言的单元测试框架。JUnit 在测试驱动开发的环境中扮演着重要角色,从 SUnit 起源的一组单元测试框架(统称为 xUnit)之一。 xUnit.net xUnit.net 是由 NUnit 的原作者编写的,用于.NET Framework 的开源单元测试工具。 Selenium Selenium 是用于测试 Web 应用程序的可移植框架。Selenium 提供了一种回放工具,使用户无需学习测试脚本语言就能编写功能测试。 Jasmine Jasmine 是用于 JavaScript 的开源测试框架。它可以在任何支持 JavaScript 的平台上运行,不会入侵应用程序或 IDE,还有着易读的语法。在...阅读全文