![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
K8S,docker
文章平均质量分 84
++++++
H . C . Y
拥抱开源,学无止境,学以致用。
展开
-
服务注册与发现(Docker+Consul+Registrator)
服务注册中心引言服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态 LB 机制就不再适用了,需要引入额外的组件来管理微服务提供者的注册与发现,而这个组件就是服务注册中心。CAP理论是分布式架构中重要理论一致性(Consistency)(所有节点在同一时间具有相同的数据)可用性原创 2021-11-28 20:04:31 · 1580 阅读 · 0 评论 -
docker 最小镜像(scratch:latest)与golang程序结合,从零构建后端镜像
docker 最小镜像(scratch:latest)一、简介:Scratch镜像很赞,它简洁、小巧而且快速,它没有bug、安全漏洞、延缓的代码或技术债务。除了被Docker添加了metadata (译注:元数据为描述数据的数据)之外,它基本上是空的。我们在使用Dockerfile构建docker镜像时,一种方式是使用官方预先配置好的容器镜像。优点是我们不用从头开始构建,节省了很多工作量,但付出的代价是需要下载很大的镜像包。如果我们的需求是在构建一个符合我们实际业务需求的Docker镜像的前提下,确原创 2021-08-24 21:55:44 · 2200 阅读 · 0 评论 -
K8S自动化发布项目(1.4):配置jenkins的流水线脚本,实现k8s自动发布项目
第一步:安装GitLab第二步:安装jenkins第三步:配置钩子程序完成第四步:实现自动化Jenkins时区和时间问题:第一步:安装GitLab第二步:安装jenkins完成第三步:配置钩子程序1)在【系统管理】-【脚本命令行】里运行System.setProperty(‘org.apache.commons.jelly.tags.fmt.timeZone’, ‘Asia/Shanghai’)2)在jvm中修改JAVA_OPTS=-Duser.timezone=Asia/Shangh原创 2020-05-30 21:57:56 · 1518 阅读 · 0 评论 -
K8S自动化发布项目(1.3):将gitlab和jenkins结合实现自动化(钩子程序)
第一步:安装GitLab第二步:安装jenkins完成第三步:配置钩子程序一、首先需要关闭跨站点保护(CSRF Protection) 1、高版本和低版本的jenkins做了很大的区别,这里用的是高版本的 1)安装tomcat(略),并在tomcat中配置jenkins,修改脚本(关闭CSRF) [root@centos1 bin]# vim ./catalina.sh #!/bin/sh JAVA_OPTS="-Dhudson.security.csrf.GlobalC原创 2020-05-30 21:43:48 · 974 阅读 · 0 评论 -
K8S自动化发布项目(1.2):安装jenkins用于流水线(pipline)
第一步:K8S自动化发布项目(1)完成第二步:安装jenkins一、在官网中下载war包 https://pkg.jenkins.io/redhat/二、系统要求 1、最少是256MB的内存,最好是512MB内存 2、10GB的硬盘空间 3、JDK环境是java8 4、具备docker环境三、启动服务 [root@centos8 jenkins]# ls jenkins.war [root@centos8 jenkins]# java -jar jenkins.war --h原创 2020-05-30 21:31:46 · 749 阅读 · 0 评论 -
K8S自动化发布项目(1.1):构建一个代码仓库(gitlab)用于上传代码
在之前的几章中已经将k8s以及k8s的监控都搭建了一下,这一次就要完成最终的目标了:搭建测试环境的自动化流程,首先完成第一步:搭建代码仓库,这里选用的是gitlab仓库。一、下载镜像[root@gitlab ~]# docker pull registry.cn-hangzhou.aliyuncs.com/imooc/gitlab-ce:latest二、运行gitlab容器 1、生成启动文件 [root@gitlab ~]# mkdir /usr/local/gitlab [root..原创 2020-05-30 21:19:58 · 928 阅读 · 0 评论 -
部署k8s监控(2.2):安装metrics-server,解决dashboard-2.0.1中无法查看内存、cpu等资源的问题
下载metrics-server的yaml文件解决上章遗留的问题:无法监控内存和cpu资源转接上文:部署k8s监控(3):dashboard-2.0.1一、创建用户,并生成证书 [root@k8s-master1 /]# useradd aggregator [root@k8s-master1 aggregator]# vim ./metrics-server-csr.json { "CN": "aggregator", "hosts": [], "key": {原创 2020-05-26 18:25:06 · 2610 阅读 · 3 评论 -
部署k8s监控(2.1):k8s集群升级版本后,需要使用高版本的dashboard才能显示页面,这里使用的dashboard-2.0.1
将升级k8s到高版本以后,会发现web界面无法看到内容,显示404,因此需要借助高版本的dashboard才可以解决这类问题首先要删除之前安装过的dashboard下载dashboard的yaml文件一、生成证书以及修改 1、生成证书,因为自动生成的证书很多浏览器无法使用(可先不配置着一段,如果无法在尝试配置这段) 1)创建证书目录 [root@k8s-master1 ~]# mkdir dashboard-certs [root@k8s-master1 ~]# cd ./dash原创 2020-05-26 18:07:44 · 1338 阅读 · 1 评论 -
部署k8s组件(18):安装配置Helm,带你体验便捷的部署方案!!!
一、什么是HELMHelm包含两个组件:Helm客户端和Tiller服务器,如图所示: 1、在没使用helm之前,向k8s部署应用,我们要依次部署deployment、svc等,步骤繁琐。况且随着很多项目微服务化,复杂的应用在容器中部署以及管理显得较为复杂,helm通过打包的方式,支持发布的版本管理和控制,很大程度上简化了k8s应用的部署和管理 2、helm本质就是让k8s的应用管理(deployment、service等)可配置,能动态生成。通过动态生成k8s资源清单文件(deployment.原创 2020-05-21 18:29:35 · 730 阅读 · 0 评论 -
部署k8s监控(1.2):Prometheus-operator配置持久化方案
转接上文:部署k8s监控(1):Prometheus-operator监控k8s集群的各个组件及pod(二进制环境)解决上一篇博客遗留的问题:产生的数据如何做到持久化prometheus默认的存储方式 (- emptyDir: {})它的生命周期和pod的生命周期一样,重启pod后数据会丢失,因此需要修改持久化方案保存数据持久化方案后很会:这里使用的是hostpath,也可以使用pv/pvc一、进入prometheus-k8s的statefulset中修改挂载文件的类型 [root@k8s原创 2020-05-20 18:51:27 · 1737 阅读 · 0 评论 -
部署k8s监控(1.1):Prometheus-operator监控k8s集群的各个组件及pod(二进制环境)
环境是使用二进制安装的,使用kubeadm则很难遇到这种情况一、下载安装文件 [root@k8s-master1 prometheus]# git clone https://github.com/coreos/kube-prometheus.git [root@k8s-master1 prometheus]# cd ./kube-prometheus/manifests/二、修改yaml文件(开启nodeport,方便外网用户访问) [root@k8s-master1 manifests]#原创 2020-05-19 17:53:03 · 1523 阅读 · 1 评论 -
部署k8s(17):集群安全,为特定用户鉴权
一、机制说明1、kubernetes作为一个分布式集群的管理工具,保证集群的安全性是其中一个重要的任务。apiServer是集群内部各个组件通信的中介,也是外部控制的入口,所以k8s的安全机制基本就是围绕保护apiserver来设计的,k8s使用认证(authentication),鉴权(authorization),准入控制(admissioncontrol)三步来保证api server的安全二、认证(Authentication) 1、HTTP Token认证:通过一个Token来识别合原创 2020-05-19 17:04:52 · 819 阅读 · 0 评论 -
部署k8s(16):集群调度策略的四种方案
一、调度说明1、简介 Scheduler是ku bernet es的调度器, 主要的任务是把定义的pod分配到集群的节点上。听起来非常简单,但有很多要考虑的问题: 公平:如何保证每个节点都能被分配资源 资源高效利用:集群所有资源最大化被使用 效率:调度的性能要好,能够尽快地对大批量的pod完成调度工作 灵活:允许用户根据自己的需求控制调度的逻辑 Sheduler是作为单独的程序运行的,启动之后会一直连接APIServer,获取PodSpec.NodeName为空的po原创 2020-05-19 16:57:40 · 1589 阅读 · 0 评论 -
部署k8s(15):持久化存储方案
一、ConfigMap1、概念 ConfigMap的功能在k8s1.2版本中引入的,许多应用程序会从配置文件,命令行参数或环境变量中读取配置信息。ConfigMap API会给我们提供了向容器中注入配置信息的机制,ConigMap可以被用来保存单个属性,也可以用来保存整个配置文件或者JSON二进制的对象2、ConfigMap的创建 1)使用文件夹创建(--from-file:键的名字是文件的名字,值是文件的内容) [root@k8s-master1 configmap]# cat原创 2020-05-19 16:51:35 · 1000 阅读 · 0 评论 -
部署k8s组件(14):四层转发和七层转发(ingress-nginx)
一、Service的概念 1、kubenrnets的service定义了这样一种抽象:一个pod的逻辑分组,一种可以访问他们的策略--通常别称为微服务。这一组pod能够被service访问到,通常是通过label selector 2、service能够提供负载负载均衡能力,但是在使用上有一下限制: 1)只能提供4层负载均衡能力,而没有七层功能,但是我们可以通过更多的匹配规则来请求转发,这点上4层负载均衡是不支持的二、service的类型1、service在k8s中有以下四种规则原创 2020-05-19 16:42:23 · 6137 阅读 · 0 评论 -
部署k8s组件(13):core-dns的作用和配置的方法
一、介绍在Kubernetes 1.11中,CoreDNS已经实现了基于DNS的服务发现的GA,可作为kube-dns插件的替代品。这意味着CoreDNS将作为各种安装工具未来发布版本中的一个选项来提供。事实上,kubeadm团队选择将其作为Kubernetes 1.11的默认选项。使用kube-dns集群插件,基于DNS的服务发现已成为Kubernetes的一部分。这通常很有效,但是对于实施的可靠性、灵活性和安全性存在一些担忧。CoreDNS是一个通用的、权威的DNS服务器,提供与Kubernete原创 2020-05-19 16:30:07 · 2624 阅读 · 0 评论 -
多节点部署k8s(12):六种资源控制器的详解和用法
pod的分类:自主式pod:pod退出,此类型的pod不会被创建控制器管理的pod:在控制器的生命周期里,始终要维持pod的副本数量一、什么是控制器 k8s中内内建了很多controller(控制器),这些相当于一个状态机,用于控制pod的具体状态和行为二、控制器的类型 1、ReplicationController和ReplicaSet 2、Deployment 3、Daemo...原创 2020-05-07 16:54:17 · 762 阅读 · 0 评论 -
多节点部署k8s(11):资源清单规则
一、集群资源分离1、名称空间级别(kubectl get pod -n default、kube-system) 1)工作负载资源(workload):pod、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job、CronJob RC(在v1.11版本中被抛弃) 2)服务发现以及负载均衡型资源(ServiceDiscovery LoadBa...原创 2020-05-07 16:44:37 · 540 阅读 · 0 评论 -
多节点部署k8s(10):Pod的生命周期
一、pod的生命周期1、生命周期过程描述 1)首先kubectl向api接口发送指令后,kube-api会调度到node中的kubelet(etcd在其中进行存储) 2)kubectl在操作cri,cri完成容器的初始化 3)初始化过程中会先启动一个pause的基础容器(pause负责网络,和磁盘的存储) 4)接着会进行一个或多个initC的初始化,或者是没有initC,初始...原创 2020-05-07 16:40:01 · 639 阅读 · 0 评论 -
多节点部署k8s(9):K8S二进制安装升级
按照之前的多节点的图配置的链接:多节点部署k8s(5):配置master和node多节点-配置master021、查看当前版本 [root@k8s-master1 ~]# kubectl version Client Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.3", GitCommit:"435f92c7...原创 2020-05-07 16:30:33 · 841 阅读 · 0 评论 -
多节点部署k8s(8):解决谷歌浏览器无法访问UI界面的问题
转接上文:多节点部署k8s(7):创建UI界面https://192.168.100.30:30001/1、生成需要的证书[root@k8s-master1 k8s页面]# vim dashboard-cert.sh cat > dashboard-csr.json <<EOF { "CN": "Dashboard", "hosts": [], ...原创 2020-05-06 17:04:38 · 826 阅读 · 0 评论 -
多节点部署k8s(7):创建dashboard的UI界面
转接上文:多节点部署k8s(6):多节点-nginx+keepalived一、准备环境 [root@k8s-master1 k8s页面]# ls dashboard-configmap.yaml dashboard-rbac.yaml dashboard-service.yaml dashboard-controller.yaml dashboard-secret.yaml...原创 2020-05-06 16:50:28 · 610 阅读 · 0 评论 -
多节点部署k8s(6):多节点-nginx+keepalived
转接上文:多节点部署k8s(5):配置master和node多节点-配置master02[root@lb1 /]# vim /etc/chrony.conf[root@lb1 /]# systemctl start chronyd[root@lb1 /]# systemctl enable chronyd[root@lb1 /]# chronyd sources一、部署nginx服务...原创 2020-05-06 16:44:51 · 962 阅读 · 0 评论 -
多节点部署k8s(5):配置master和node多节点-配置master02
转接上文:单节点部署k8s(4):配置master和node1、准备环境,和master01一样 [root@k8s-master2 /]# swapoff -a [root@k8s-master2 /]# vi /etc/fstab 删除swap分区开机自动挂载 [root@k8s-master2 /]# scp root@192.168.100.10:/etc/hosts /etc/...原创 2020-05-06 16:36:36 · 911 阅读 · 0 评论 -
单节点部署k8s(4):配置master和node
一、部署master组件1、解压kubernetes到/中 [root@k8s-master1 /]# cd /kubernetes/server/bin [root@k8s-master1 bin]# cp kube-apiserver kube-controller-manager kube-scheduler kubectl /opt/kubernetes/bin/ [ro...原创 2020-05-06 16:19:41 · 8104 阅读 · 0 评论 -
单节点部署k8s(3):flannel网络配置
转接上文:单节点部署k8s(2):配置etcd集群一、两台node节点部署docker引擎 1、安装docker yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/cent...原创 2020-05-06 16:04:11 · 848 阅读 · 0 评论 -
单节点部署k8s(2):配置etcd集群
Etcd的下载连接一、给etcd颁发证书1、将命令放到/usr/local/sbin中并授予执行权限 [root@k8s-master1 etcd-cert]# cp ./cfssl /usr/local/bin/ [root@k8s-master1 etcd-cert]# chmod +x /usr/local/bin/cfssl2、编辑脚本生成证书 [root@k8s-...原创 2020-04-25 20:05:38 · 995 阅读 · 0 评论 -
单节点部署k8s(1):环境配置以及各程序的作用
架构类别单master多masterK8S生产环境平台规划master建议3台etcd必须三台(3,5,7)worker越多越好实验环境规划三个节点2g内存2核cpu一、部署单master集群master节点主机名:k8s——master1ip:12.168.100.10worker1主机名:k8s-node1ip:192.168.100.30...原创 2020-04-25 19:45:49 · 1434 阅读 · 1 评论 -
Docker仓库(2):在保证镜像不丢失的前提下,升级Harbor版本
Harbor版本升级背景:原Harbor:1.2.0待更新:1.8.0过程:由于harbor从v1.6.0版本开始,后端数据库由MariaDB改为Postgresql,所以在升级过程中,必须先升级到v1.6.0版本,再升级至v1.8.0。v1.2.0 -> v1.6.0该步骤中,由于数据库变更,所以需对数据库进行迁移。另外在升级过程中会改变数据库文件(database schema)以及harbor配置文件(harbor.cfg),所以必须做好备份工作,以备进行回滚操作。一、低版本先升原创 2020-05-23 19:58:23 · 1017 阅读 · 0 评论 -
Docker仓库(1):官方仓库(registry)和企业级仓库(Harbor)的构建
一、配置私有镜像仓库(官方)1)服务器端配置[root@server /]# docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always registry 运行仓库容器[root@server /]# vim /etc/docker/daemon.json 编辑第二个主配置文件{“inse...原创 2020-03-03 10:36:21 · 1169 阅读 · 0 评论 -
Docker监控(1):prometheus+cadviso+grafana实现对docker容器和宿主机进行监控
Prometheus 特点: 1)多维数据模型:由度量名称和键值对标识的时间序列数据(TSDB:存储临时数据还行) 2)promSQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询 3)不依赖分布式存储,单个服务器节点可直接工作 4)基于HTTP的pull方式采集时间序列数据 5)推送时间序列数据通过PushGateway组件支持 6)通过服务发现或者静态配置发现目标 7)多种图形模式及仪表盘支持(grafana)各个组件的作用:Prometheus Server 收集指标和存储原创 2020-05-27 11:22:08 · 1117 阅读 · 0 评论 -
Docker的四种网络深入剖析(host模式、 container模式、 none模式、bridge模式)
Docker虚拟化技术底层是基于LXC+Cgroups+AUFS(Overlay)技术实现,而我们有熟知Cgroups是Linux内核提供的一种可以限制、记录、隔离进程组(Process Groups)所使用的物理资源的机制。Docker虚拟化的产物是Docker容器,基于Docker Engine启动容器时,默认会给容器指定和分配各种子系统:CPU子系统,、Memory子系统、IO子系统、NE...原创 2020-01-10 16:51:39 · 2020 阅读 · 0 评论