k8s

Pod的配置管理

一笑奈何 提交于 2020-04-05 14:57:56
在Kubernetes中,资源对象和信息都存储在Etcd中,但是对于某一个服务的配置该如何管理了? 当然你可以在镜像打包的时候,将配置文件直接配置打包到镜像里面,这样确实可以达到目的。 但是大部分的容器是在运行之后需要改配置,每次都重新打包确实会是一个不小的工作。 当然可以通过文件映射或者环境变量来改变容器的配置,这是稍微比较不错的做法。 但是如果在大规模集群中,容器的配置管理将是一个非常麻烦的事项。 Kubernetes从1.2开始提供一种统一的应用配置管理方案——ConfigMap。 ConfigMap将应用所需的配置信息与程序进行分离,这样配置信息可以更好的被多次复用。 在Kubernetes中,配置信息会被封装成一个个资源资源对象,这样便于集中管理和使用。 如果你需要修改配置,那么只需要修改ConfigMap的引用对象或者直接修改ConfigMao资源对象的配置就可以了。 1.ConfigMap ConfigMap供容器使用的典型用法如下: (1)生成为容器内的环境变量 (2)以Volume的形式挂载为容器内部的文件或者目录 ConfigMap以一个或多个key:value的形式保存在Kubernetes系统中供应用使用, 既可以用于表示一个变量的值(例如apploglevel=info),也可以用于表示一个一个完整配置文件的内容(server.xml=<?xml>)。 2

k8s集群日志收集

旧巷老猫 提交于 2020-04-05 03:53:11
k8s集群日志收集 收集哪些日志 K8S系统的组件日志 K8S Cluster里面部署的应用程序日志 日志方案 Filebeat+ELK        Filebeat(日志采集工具)+Logstach(数据处理引擎)+Elasticserch(数据存储、全文检索、分布式搜索引擎)+Kibana(展示数据、绘图、搜索)        3 容器中的日志怎么收集        收集方案:Pod中附加专用日志收集的容器 优点:低耦合 缺点:每个Pod启动一个日志收集代理,增加资源消耗和运维维护成本              4 部署DaemonSet采取k8s组件日志/var/log/messages        4.1 ELK安装在harbor节点        安装、配置ELK        1)安装openjdk yum -y install java-1.8.0-openjdk              2)安装Logstash https://www.elastic.co/guide/en/logstash/7.6/installing-logstash.html              配置网络源 /etc/yum.repos.d/logstash.repo [logstash-7.x] name=Elastic repository for 7.x packages

Kuerbernetes 1.11 二进制安装

别来无恙 提交于 2020-04-03 18:37:36
Kuerbernetes 1.11 二进制安装 标签(空格分隔): k8s 2019年06月13日 本文截选 https://k.i4t.com 更多文章请持续关注https://i4t.com 什么是Kubernetes? Kubernetes是一个完备的分布式系统支撑平台。Kubernetes具有完备的集群管理能力,包括多层次的安全防护和准入机制/多租户应用支撑能力、透明的服务注册和服务发现机制、内建智能负载均衡器、强大的故障发现和自我修复功能、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制,以及多粒度的资源配额管理能力。同时kubernetes提供了完善的管理工具,这些工具覆盖了包括开发、测试部署、运维监控在内的各个环节;因此kubernetes是一个全新的基于容器技术的分布式架构解决方案,并且是一个一站式的完备的分布式系统开发和支撑平台 ###Kubernetes 基础服务简介 在这里我们只是简单的介绍一下Kubernetes基础组件,后面文章会有详细介绍! </br> </br> </br> ####Kubernetes Service 介绍 Service(服务)是分布式集群架构的核心,一个Server 对象拥有如下关键特征 (1) 拥有一个唯一指定的名字(比如mysql-server) (2) 拥有一个虚拟IP (Cluster IP、Service

Kubenetes 1.13.5 集群源码安装

删除回忆录丶 提交于 2020-04-03 17:32:29
Kubenetes 1.13.5 集群源码安装 标签(空格分隔): k8s 2019年06月13日 本文截选https://k.i4t.com 更多k8s内容请持续关注https://i4t.com 一、K8s简介 在1.11安装的地方已经讲过了,简单的查看K8s原理可以通过 k8s 1.11源码安装 查看,或者通过https://k.i4t.com查看更深入的原理 二、K8s环境准备 本次安装版本 Kubernetes v1.13.5 (v1.13.4有kubectl cp的bug) CNI v0.7.5 Etcd v3.2.24 Calico v3.4 Docker CE 18.06.03 kernel 4.18.9-1 (不推荐使用内核5版本) CentOS Linux release 7.6.1810 (Core) K8s系统最好选择7.4-7.6 docker 提示 Centos7.4之前的版本安装docker会无法使用 overlay2 为docker的默认存储引擎。 关闭IPtables及NetworkManager systemctl disable --now firewalld NetworkManager setenforce 0 sed -ri '/^[^#]*SELINUX=/s#=.+$#=disabled#' /etc/selinux/config

K8S : Helm 部署 ELK 7.6

|▌冷眼眸甩不掉的悲伤 提交于 2020-04-03 17:11:20
K8S : Helm 部署 ELK 7.6 场景 ​ 在 K8S 上部署有状态应用 ELK,收集日常测试数据的上报(应用拨测的 Heartbeat、调用链追踪的 APM、性能指标 metabeat 等)。本文通过rook提供底层存储,用于安装elk的statefulset,然后部署MetalLB实现本地负载均衡,最后通过ingress-control实现访问kibana。 操作步骤 1.安装rook 2.安装helm 3.安装ES 4.安装kibana 5.安装filebeat 6.安装metalLB 7.安装Ingress-control 8.访问测试 1.安装rook 1.1 安装说明 ​ Rook是专用于Cloud-Native环境的文件、块、对象存储服务。它实现了一个自我管理的、自我扩容的、自我修复的分布式存储服务。Rook支持自动部署、启动、配置、分配(provisioning)、扩容/缩容、升级、迁移、灾难恢复、监控,以及资源管理。为了实现所有这些功能,Rook依赖底层的容器编排平台。 ​ Ceph是一个分布式存储系统,支持文件、块、对象存储,在生产环境中被广泛应用。 ​ 此次安装就是通过rook进行ceph进行部署,简化了ceph的安装管理配置。同时也是为了能够利用本地资源。提供storageclass。 1.2 rook和ceph架构 1.2 安装ceph

『中级篇』Kubenetes简介(60)

只谈情不闲聊 提交于 2020-04-03 17:10:42
原创文章,欢迎转载。转载请注明:转载自 IT人故事会 ,谢谢! 原文链接地址: 『中级篇』Kubenetes简介(60) Kubernetes单词起源于希腊语, 是「舵手」或者「领航员」的意思,是“管理者”和“控制论”的根源。 K8s是把用8代替8个字符“ubernete”而成的缩写。 Docker Swarm 和 k8s的前世今生 可以很明确的说 先有的k8s,后有的docker swarm。 容器编排工具Kubernetes诞生,并迅速得到Google和RedHat的支持。2014年7月,Docker收购Orchard Labs,由此Docker公司开始涉足容器编排领域,Orchard Labs这家2013年由两位牛逼的年轻人创建的公司,有一个当时非常著名的容器编排工具fig,而这个fig就是docker-compose的前身。Docker Compose虽然能编排多容器的APP,但是却不能实现在多个机器上进行容器的创建和管理。所以此时Docker公司和Kubernetes并未开始正面竞争和冲突。 10月17日,Docker公司在其丹麦哥本哈根举行的 DockerCon 大会上宣布,将扩大其Docker平台并拥抱支持Kubernetes。显然,在容器编排领域的战火已然分出结果,尘埃落定,Kubernetes得到了包括Google、Huawei、Microsoft、IBM、AWS

k8s中service发现相关说明

旧巷老猫 提交于 2020-04-03 04:04:35
service discory kubernetes中查找服务主要有两种方式:环境变量和DNS 环境变量 kubelet给每个pod中添加了每个service对应的一组环境变量,包括简单变量{SVCNAME}_SERVICE_HOST和Docker-links变量{SVCNAME}_PORT,变量中的service_name全部大写,中划线转为下划线。 我的一个svc相关变量如下: SVC_MALIBU_SERVICE_HOST=172.21.39.194 SVC_MALIBU_PORT_8080_TCP_ADDR=172.21.39.194 SVC_MALIBU_PORT_8080_TCP_PORT=8080 SVC_MALIBU_SERVICE_PORT=8080 SVC_MALIBU_PORT_8080_TCP=tcp://172.21.39.194:8080 SVC_MALIBU_PORT_8080_TCP_PROTO=tcp SVC_MALIBU_PORT=tcp://172.21.39.194:8080 注:在pod中使用这些变量的时候,一定要在pod运行前先创建好svc,不然pod里面读不到的 DNS 像coredns等集群感知的DNS server监视了kubernetes api,它会为新service创建一组dns记录。 A记录 除了Headless

微服务交付至kubernetes流程

倾然丶 夕夏残阳落幕 提交于 2020-04-02 08:29:32
目录 1、微服务简介 2、K8s部署微服务考虑的问题 3、项目迁移到k8s流程 1、微服务简介 微服务优点 服务组件化 每个服务独立开发、部署,有效避免一个服务的修改引起整个系统重新部署 技术栈灵活 约定通信方式,是得服务本身功能实现对技术要求不再那么铭感 独立部署 每个微服务独立部署,加快部署速度,方便扩展 扩展性强 每个微服务可以部署多个,并且有负载均衡能力 独立数据 每个微服务有独立的基本组件,例如数据库、缓存等 微服务缺点 沟通成本 数据一致性 运维成本 内部架构复杂性 微服务和单体应用 单体应用,易于部署、测试,但是会使得代码膨胀,难以维护,构建和部署成本大,新人上手难 适用于微服务的框架:Spring Boots、Spring Cloud、Dubbo、Go-micro ..... 2、K8s部署微服务考虑的问题 微服务架构图 微服务流程图 微服务间如何通信? REST API、RPC、MQ(后两者主流)。 微服务如何发现彼此? 通过注册中心进行服务的注册与发现。 组件之间怎么个调用关系? 微服务内部处理逻辑。 那个服务作为整个网站入口? 网关,即gateway(也是单独的一个微服务)。 那些微服务需要对外访问? 只需要网关gateway入口对外即可, 一般都是先为gateway创建svc,然后由Ingress指定到该svc。 微服务怎么部署?更新?扩容?

K8S 之 YAML文件创建各种角色

夙愿已清 提交于 2020-04-01 01:21:45
一、创建单个nginx-pod文件 apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中 kind: Pod #指定创建资源的角色/类型(pod\deployment\svc) metadata: #资源的元数据/属性 name: nginx #资源的名字,在同一个namespace中必须唯一,pod显示名 labels: #设定资源的标签 app: web #为app标签打上web字段 namespace: test #存放的空间 spec: #指定该资源的内容 containers: #该POD运行容器的相关信息 - name: nginx-test #容器的名称,docker ps 看到的名称 image: test-harbor.cedarhd.com/public/nginx:curl #容器使用的镜像 ports: #指定容器的端口 - containerPort: 80 #容器使用的端口 [root@test-nodes1 ~]# kubectl create -f nginx-pod.yaml pod/nginx created [root@test-nodes1 ~]# kubectl get pod -o wide -n test NAME READY STATUS RESTARTS AGE IP NODE

K8S 之 POD标签的应用

那年仲夏 提交于 2020-04-01 01:17:48
一、创建POD时指定相应标签 apiVersion: v1 kind: Pod metadata: name: kubia-manual namespace: test labels: app: web_html #定义了app标签为:web_html env: prod #定义了env标签为:prod spec: containers: - name: kubia image: luksa/kubia ports: - containerPort: 8080 protocol: TCP 二、通过标签查看POD [root@test-nodes1 ~]# kubectl get pod --show-labels -n test #查看所有pod的标签 NAME READY STATUS RESTARTS AGE LABELS kubia-manual 1/1 Running 0 47h app=web_test,env=prod nginx-dp-856666d759-bfrgj 1/1 Running 0 3d9h app=nginx-proxy,env=test,pod-template-hash=856666d759 nginx-dp-856666d759-c5p4l 1/1 Running 0 3d9h app=nginx-proxy,env=test,pod