Kubernetes

微服务化的基石——持续集成

懵懂的女人 提交于 2021-02-12 09:59:56
点击上方“ 程序员小灰 ”,选择“置顶公众号” 有趣有内涵的文章第一时间送达! 本文转载自公众号 刘超的通俗云计算 一、持续集成对于微服务的意义:拆之前要先解决合的问题 在很多微服务化的文章中,很少会把持续集成放在第一篇,因为大多数的文章都会将如何拆的问题,例如拆的粒度,拆的时机,拆的方式。 为什么需要拆呢?因为这是人类处理问题的本质方式:将一个大的复杂问题,变成很多个小问题解决。 所以当一个系统复杂到一定程度,当维护一个系统的人数多到一定程度,解决问题的难度和沟通成本大大提高,因而需要拆成很多个工程,拆成很多个团队,分而治之。 然而当每个子团队将子问题解决了,整个系统的问题就解决了么?你可以想象你将一辆整车拆成零件,然后再组装起来的过程,你就可以想象拆虽然不容易,合则更难,需要各种标准,各种流水线,才能将零件组装称为车。 我们先来回顾一下拆的过程。 最初的应用大多数是一个单体应用 一个Java后端,后面跟一个数据库,基本上就搞定了。 随着系统复杂度的增加,首先Java程序需要做的是纵向的拆分。 首先最外面是一个负载均衡,接着是接入的nginx,做不同服务的路由。 不同的服务拆成独立的进程,独立部署,每个服务使用自己的数据库和缓存,解决数据库和缓存的单点瓶颈。 数据库使用一主多从的模式,进行读写分离,主要针对读多写少的场景。 为了承载更多的请求,设置缓存层

什么是Service Mesh?

自作多情 提交于 2021-02-12 08:40:58
<div id="cnblogs_post_body" class="blogpost-body"><p><span style="font-size: 16px;">    转至大佬宋净明的博客:https://jimmysong.io/posts/what-is-a-service-mesh/</span></p> <p><span style="font-size: 16px;">Service mesh 又译作 “服务网格”,作为服务间通信的基础设施层。Buoyant 公司的 CEO Willian Morgan 在他的这篇文章 <a href="https://buoyant.io/2017/04/25/whats-a-service-mesh-and-why-do-i-need-one/">WHAT’S A SERVICE MESH? AND WHY DO I NEED ONE?</a> 中解释了什么是 Service Mesh,为什么云原生应用需要 Service Mesh。</span></p> <p><span style="font-size: 16px;">如 <a href="https://twitter.com/wm">Willian Morgan</a> 所言:A service mesh is a dedicated infrastructure

金九银十大厂必备技能,为什么是Docker+k8s ?

坚强是说给别人听的谎言 提交于 2021-02-12 03:45:12
容器技术,大概是最近几年最为流行的一种技术。 这种技术打破了原来用虚拟机部署软件对硬件环境和条件的限制,让软件的逻辑边界获得了更大程度的扩展。 只要是一台能够安装Linux的个人PC机、服务器、甚至是小巧玲珑的树莓派,都可以非常轻松的安装容器,实现了硬件资源的最大化利用。 这也让微服务技术得以更好的落地,更加便捷、高效的实现企业生产效率的提升。 docker的优点 Docker可以解决虚拟机能够解决的问题,同时也能够解决虚拟机由于资源要求过高而无法解决的问题。Docker的优点包括: 标准化应用发布,docker容器包含了运行环境和可执行程序,可以跨平台和主机使用; 节约时间,快速部署和启动,VM启动一般是分钟级,docker容器启动是秒级; 方便构建基于SOA架构或微服务架构的系统,通过服务编排,更好的松耦合; 节约成本,以前一个虚拟机至少需要几个G的磁盘空间,docker容器可以减少到MB级; 方便持续集成,通过与代码进行关联使持续集成非常方便; 可以作为集群系统的轻量主机或节点,在IaaS平台上,已经出现了CaaS,通过容器替代原来的主机。 什么是 K8s ? K8s 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 K8s 拥有一个庞大且快速增长的生态系统。K8s 的服务、支持和工具广泛可用。 通过 K8s 我们可以:

原生加速中国区Kubernetes安装

痴心易碎 提交于 2021-02-11 21:30:33
概述 Kubernetes是一个强大的容器编排工具,帮助用户在可伸缩性系统上可靠部署和运行容器化应用。在容器领域内,K8s已毋庸置疑成为了容器编排和管理的社区标准,连Docker官方都已宣布支持K8s。在容器编排领域的战火已然分出结果,尘埃落定,K8s得到了包括Google、Huawei、Microsoft、IBM、AWS、Rancher、Redhat、CoreOS等在内的容器玩家的一致认可。 Rancher容器管理平台原生支持K8s,使用户可以简单轻松地部署K8s集群。 然而对于中国玩家而言,由于谷歌镜像仓库的原因,很多时候K8S的使用体验并不顺滑。在往期发布的文章( 《Rancher-k8s加速安装文档》 )中,我们有讲解过如何通过修改应用商店地址来实现加速部署kubernetes。虽然这种方法能够实现kubernetes的加速部署,但是因为自定义的商店仓库无法与官方仓库实时同步,很多组件(网络、健康检查等)将无法保证及时的更新。因此,为了解决这个问题,我们在官方catalog模板的基础上做了修改,增加了可以自定义仓库地址和命名空间的功能。这样,我们在部署kubernetes时可以自定义设置拥有kubernetes镜像的仓库与其命名空间。 环境准备 安装前准备(重要): Rancher-server:v1.6.11现在还是rc版本,安装过程中可能会有一些错误提示。

为什么大公司要开源自己的技术?

[亡魂溺海] 提交于 2021-02-11 20:57:00
大约一个月前,谷歌公开了用于Big Transfer(BiT)的预训练模型和微调代码——Big Transfer是一种深度学习的计算机视觉模型。根据谷歌的说法,Big Transfer将允许任何人在相应的任务上达到最优表现,即使每个类只有少量的标签图片。这仅仅是这家科技巨头免费向公众开放其专有产品的一个例子。要知道,发布强大的免费开源软件已经成为科技界的常见事件,并引发了这样一个问题:大型科技公司这么做得到了什么回报? 在90年代后期,当Open Source Initiative出现时,将源代码公开的想法被认为是一个坏策略,因为专有软件是标准,公司会尽一切努力保护软件。到2020年,开源的概念发生了巨大的变化,现在已经成为主流。 如今有许多开源技术公司,其中一些公司的年收入已经超过1亿美元(甚至10亿美元),包括红帽、MongoDB、Cloudera、MuleSoft、Hashicorp、Databricks(Spark)和Confluent(Kafka)。 除了上述科技公司高调收购和投资开源项目外,谷歌和Facebook等科技巨头也把开源放到了难以置信的重要位置,因为开源对于收集新产品的创新和建立一个庞大的开发者社区非常重要。例如,Flutter vs React Native、Tensorflow vs PyTorch、Kubernetes等

【02】Kubernets:使用 kubeadm 部署 K8S 集群

你。 提交于 2021-02-11 20:39:33
写在前面的话 通过上一节,知道了 K8S 有 Master / Node 组成,但是具体怎么个组成法,就是这一节具体谈的内容。概念性的东西我们会尽量以实验的形式将其复现。 部署 K8S 集群 互联网常用的 K8S 集群部署方式: 1. kubeadm(我们本次用到的) 2. rancher 3. 云服务商提供的(如阿里云提供的 K8S) 4. yum 安装(版本有点低,不推荐) 准备: IP 主机名 角色 安装 192.168.100.101 node1 Master kubeadm/kubelet/kubectl/docker-ce/flannel 192.168.100.102 node2 Node kubeadm/kubelet/kubectl/docker-ce/flannel 192.168.100.103 node3 Node kubeadm/kubelet/kubectl/docker-ce/flannel 准备 3 台初始化的机器,内存大于 2G。 至于 kubeadm 文档如下,感兴趣的可以去看看: https://github.com/kubernetes/kubeadm/blob/master/docs/design/design_v1.10.md 【1】所有节点初始化操作: # 配置主机名解析 echo " 192.168.100.101 node1 " >

k8s部署02-----kubeadm部署k8s

元气小坏坏 提交于 2021-02-11 20:30:00
机器规划 系统配置 三台机器都执行 1、关闭selinux及firewalld sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 systemctl stop firewalld && systemctl disable firewalld 2、内核参数调整 cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system 3、关闭swap swapoff -a 为了防止开机自动挂载 swap 分区,可以注释 /etc/fstab 中相应的条目: sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab 注: k8s 版本1.8开始要求关闭系统的swap,否则启动不了kubelet; 安装docker 三台都执行 docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE; 比如: 18.06 为18年6月份发布的版本; 1、下载安装 docker-ce wget -c https://download

kubeadm部署k8s集群

|▌冷眼眸甩不掉的悲伤 提交于 2021-02-11 19:02:25
kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。 这个工具能通过两条指令完成一个kubernetes集群的部署: # 创建一个 Master 节点 kubeadm init # 将一个 Node 节点加入到当前集群中 kubeadm join <Master节点的IP和端口 > 1. 安装要求 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 一台或多台机器,操作系统 CentOS7.x-86_x64 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多 集群中所有机器之间网络互通 可以访问外网,需要拉取镜像 禁止swap分区 2. 学习目标 在所有节点上安装Docker和kubeadm 部署Kubernetes Master 部署容器网络插件 部署 Kubernetes Node,将节点加入Kubernetes集群中 部署Dashboard Web页面,可视化查看Kubernetes资源 3. 准备环境 关闭防火墙: # systemctl stop firewalld # systemctl disable firewalld 关闭selinux: # sed -i 's/enforcing/disabled/' /etc/selinux/config # setenforce 0 关闭swap: #

kubeadm 创建的 k8s 集群的升级

假装没事ソ 提交于 2021-02-11 18:53:19
更好的阅读体验建议点击下方原文链接。 原文地址: http://maoqide.live/post/cloud/build-docker-image-in-a-pod-in-kubernetes 升级 kubeadm 部署的 kubernetes 集群。 <!--more--> 当前环境 [root@centos10 ~]$ uname -a Linux centos10 3.10.0-957.27.2.el7.x86_64 #1 SMP Mon Jul 29 17:46:05 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux [root@centos10 ~]$ kubectl version Client Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.10", GitCommit:"7a578febe155a7366767abce40d8a16795a96371", GitTreeState:"clean", BuildDate:"2019-05-01T04:14:38Z", GoVersion:"go1.10.8", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1

Kubernetes集群升级(kubeadm升级方式)

青春壹個敷衍的年華 提交于 2021-02-11 18:39:36
1、升级前的版本确认( 相同的大版本号下的小版本升级还是跨版本升级 )   例如:从1.12.0升级到1.12.7 或者 从1.12.7升级到1.13.0 2、配置kubernetes安装源( 已配置kubernetes源,此处跳过 )   Debian/Ubuntu添加源方式: apt-get update && apt-get install -y apt-transport-https curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF apt-get update apt-get install -y kubelet kubeadm kubectl   CentOS/RHEL/Fedora添加源方式: cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com