pod

kubernetes之创建初始化容器

試著忘記壹切 提交于 2020-01-22 09:26:18
简介 此文讲述在应用容器运行之前如何使用初始化容器。 备注:此文档参考官方文档,并加以自己的理解。如有误导性的内容,请批评指正。 创建一个有初始化容器的Pod 创将一个Pod,该Pod中包含一个应用容器和初始化容器。在应用容器开始之前,初始化容器的初始化任务已经完成。文件名: init-containers.yaml apiVersion: v1 kind: Pod metadata: name: init-demo spec: containers: - name: nginx image: nginx ports: - containerPort: 80 volumeMounts: - name: workdir mountPath: /usr/share/nginx/html # These containers are run during pod initialization initContainers: - name: install image: busybox command: - wget - "-O" - "/work-dir/index.html" - http://kubernetes.io volumeMounts: - name: workdir mountPath: "/work-dir" dnsPolicy: Default volumes: -

k8s架构、基本概念

为君一笑 提交于 2020-01-22 01:53:35
k8s总架构: Master节点: (默认不参加工作) kubectl: k8s是命令端,用来发送客户端的操作指令 k8s的原生组件:(部署k8s比必不可少的组件) API server: 是k8s集群的前端接口,各种客户端工具以及k8s的其他组件可以通过它管理k8s集群的各种资源,它提供了HTTP/HTTPS RESTful API,即k8s API Scheduler: 负责决定将Pod放在哪个Node上运行,在调度时,会充分考虑集群内的拓扑结构,当前各个节点的负载情况,以及对高可用、性能、数据和亲和性需求 Controller Manager: 负责管理集群的各种资源,保证资源处于预期的状态,它由多种Controller组成,包括Replication Controller、Endpoints Controller、Namespace Controller、Serviceaccounts Controller等等 Etcd: 负责保存k8s集群的配置信息和各种资源的状态信息,当数据发生变化时,etcd会快速的通知k8s相关组件。第三方组件,意味着它有可替换方案,比如:Consul、zookeeper Pod: k8s集群的最小组成单位,一个Pod内,可以运行一个或多个容器,大多数情况下,一个Pod内只有一个Container容器 Flannel: 是k8s集群网络解决方案

基于 kubernetes 的动态 jenkins slave

本秂侑毒 提交于 2020-01-22 01:44:01
**基于 Jenkins 的 CI/CD** 既然要创建一个deployment,那我们先给他创建一个namespace kubectl create namespace kube-ops 然后我们创建一个deployment 我们这里使用一个名为 jenkins/jenkins:lts 的镜像,这是 jenkins 官方的 Docker 镜像,然后也有一些环境变量,当然我们也可以根据自己的需求来定制一个镜像,比如我们可以将一些插件打包在自定义的镜像当中,可以参考文档: https://github.com/jenkinsci/docker,我们这里使用默认的官方镜像就行,另外一个还需要注意的是我们将容器的 /var/jenkins_home 目录挂载到了一个名为 opspvc 的 PVC 对象上面,所以我们同样还得提前创建一个对应的 PVC 对象 然后我们为他创建pvc(pvc.yaml) 我们为了测试方便,使用了nfs做到持久化存储 然后我们创建这个pvc对象。 kubectl apply -f pvc.yaml 我们这里还需要使用到一个拥有相关权限的 serviceAccount:jenkins2,我们这里只是给 jenkins 赋予了一些必要的权限,当然如果你对 serviceAccount 的权限不是很熟悉的话,我们给这个 sa 绑定一个 cluster-admin

k8s搭建efk

℡╲_俬逩灬. 提交于 2020-01-22 01:42:22
** efk的搭建** Elasticsearch 是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大量日志数据,也可用于搜索许多不同类型的文档。 Elasticsearch 通常与 Kibana 一起部署,Kibana 是 Elasticsearch 的一个功能强大的数据可视化 Dashboard,Kibana 允许你通过 web 界面来浏览 Elasticsearch 日志数据。 Fluentd是一个流行的开源数据收集器,我们将在 Kubernetes 集群节点上安装 Fluentd,通过获取容器日志文件、过滤和转换日志数据,然后将数据传递到 Elasticsearch 集群,在该集群中对其进行索引和存储。 我们先来配置启动一个可扩展的 Elasticsearch 集群,然后在 Kubernetes 集群中创建一个 Kibana 应用,最后通过 DaemonSet 来运行 Fluentd,以便它在每个 Kubernetes 工作节点上都可以运行一个 Pod。 1.创建 Elasticsearch 集群 在创建 Elasticsearch 集群之前,我们先创建一个命名空间。 新建一个kube-efk.yaml kubectl apply -f kube-efk.yaml kubectl get ns 查看有没有这个efk的命名空间

搭建kubernetes高可用集群(三)

浪子不回头ぞ 提交于 2020-01-21 18:24:27
4. 检查集群状态相干指令 4.1 查看node kubectl get nodes -o wide 4.2 检查Pod kubectl -n kube-system get pod -o wide 效果图 4.3 查看service kubectl -n kube-system get svc 4.4 验证IPVS kubectl -n kube-system logs -f < kube-proxy 容器名 > 效果图 4.5 查看代理规则 ipvsadm -ln 4.6 查看生效配置 kubectl -n kube-system get cm kubeadm-config -oyaml 4.7 查看etcd集群 kubectl -n kube-system exec etcd-kubernetes-master-150 -- etcdctl \ --endpoints = https://192.168.10.150:2379 \ --ca-file = /etc/kubernetes/pki/etcd/ca.crt \ --cert-file = /etc/kubernetes/pki/etcd/server.crt \ --key-file = /etc/kubernetes/pki/etcd/server.key cluster-health # 输出如下 member

k8s集群给pod指定运行的node

狂风中的少年 提交于 2020-01-21 09:30:14
k8s集群的yaml文件,需要指定pod在哪个node上面运行很简单,可以有两种方法。 1. 强制约束Pod调度在指定Node节点上 Pod.spec.nodeName 2. 通过label-selector机制选择节点 Pod.spec.nodeSelector 查询node的label情况命令: kubectl get node --show-labels 为node添加label: kubectl label node k8s-node1 type=node1 修改一个Label的值,如果key值相同,需要加上--overwrite参数;key值不同,同上直接添加label即可: kubectl label node nodename type=node2 --overwrite 删除一个Label,只需在命令行最后指定Label的key名并与一个减号相连即可: kubectl label node nodename role- (ps: 上面命令label后面的node写nodes也行,一样的) 参考网址: https://www.cnblogs.com/wucaiyun1/p/11698320.html 来源: CSDN 作者: 挥挥洒洒 链接: https://blog.csdn.net/u010420283/article/details/103928862

CocoaPods CDN: trunk Repo update failed

半世苍凉 提交于 2020-01-21 02:29:16
问题 今天升级 CocoaPods 到 1.8.4 版本 但是随即问题就来了, 执行 pod install 下载库时,出现错误 [!] CDN: trunk URL couldn't be downloaded: https://cdn.cocoapods.org/all_pods_versions_a_7_5.txt, error: execution expired 解决 后来就去查了半天资料, 最终在 github CocoaPods issues 找到解决方案 就是在 Podfile 加上 https://github.com/CocoaPods/Specs.git 原本的 Podfile target 'XQWatchDemo' do use_frameworks! pod 'AMapLocation' pod 'AMapNavi' end 增加后的 Podfile source 'https://github.com/CocoaPods/Specs.git' target 'XQWatchDemo' do use_frameworks! pod 'AMapLocation' pod 'AMapNavi' end 来源: CSDN 作者: 凤岭 链接: https://blog.csdn.net/pjc6362645/article/details/104048030

kubernetes基础概念知多少

耗尽温柔 提交于 2020-01-21 00:26:10
kubernetes(简称k8s)是一种用于在一组主机上运行和协同容器化应用程序的管理平台,皆在提供高可用、高扩展性和可预测性的方式来管理容器应用的生命周期。通过k8s,用户可以定义程序运行方式、部署升级策略、动态伸缩容,使得用户以一种更灵活可靠的方式来管理应用程序。 关于k8s,是一种对应用服务的打包、部署、监控等一整套生命周期的自动化管理平台,目前各大公司已在生产环境部署使用,同时k8s社区比较活跃,在未来一段时间内会越来越流行,可以说是以后服务部署的事实标准,对于Java开发者来说,你可以不直接使用它,但是不能不了解它。 总结来看,k8s特点如下: 自动装箱 :基于容器,结合调度策略将多种应用部署到同一节点上,提高资源利用率; 自我修复 :支持故障转移/重启,具有健康检查机制; 水平扩展 :通过命令手动执行扩容,可基于CPU等资源负载率来动态实现伸缩容; 服务发现/负载均衡 :通过KubeDNS(或CoreDNS)为系统内置了服务发现功能,为每个service配置DNS名称,service通过iptables或ipvs内建了负载均衡机制; 自动部署 :自动发布和回滚,支持灰度、增量发布等; 配置管理 :ConfigMap实现了配置数据与Docker镜像解耦,为开发部署提供了良好的灵活性; 批处理 :除了管理服务型应用之外,Kubernetes还支持批处理作业及CI(持续集成)

k8s - pod 的生命周期

▼魔方 西西 提交于 2020-01-20 18:06:36
先上图,通过图来看看pod的生命周期 当kubectl调用创建pod的命令之后,pod会经历以下几个阶段,跟着图来走 如图,这个pod里面会有n个容器 1. init container(初次化容器) 每个容器都可以存放一些初次容器(init container),这个初次容器的目的就在运行真正容器之前的一些准备工作,例如拷贝文件,初次化文件,或者获取一些敏感字段如密码,秘钥等。为什么这样做呢?有以下几个点 a.假设每个容器里面都带有一些拷贝的命令工具,如zip,或者crul等工具,就会造成每一个容器的大小会增加,因为这些unzip等工具,在容器运行当中是不会使用到的,这样变成工具冗余了,所以希望能在初次化容器中完成所有工作后就把容器关闭。 b.因为在真正启动的容器当中,是不可以访问敏感字段空间的,所以初次化容器就能把需要的敏感字段拿到后,赋予给主容器当中,这样就不会出现主容器的安全性问题了。 c.这里注意的是,初次容器是同步运行的,按顺序执行,第一初次化容器执行容器失败,是不会进入第二个初次化容器的。 d.这里也涉及到初次化容器的启动策略 2. start (启动容器) 初次化容器全部执行完成后,将会全部被杀掉,然后主容器将会被启动 3. readiness (探针) 启动过程中,会带有探针,目的是检查容器是否启动成功,如果成功,才会把服务端口暴露出去 4. liveness

K8S初探

ぐ巨炮叔叔 提交于 2020-01-20 08:15:28
K8S初探——基本概念+服务启动 核心概念 Pod:Pod是在K8s集群中运行部署应用或服务的最小单元,它是可以支持多容器的。Pod的设计理念是支持多个容器在一个Pod中共享网络地址和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。(Pod是一组容器的组合,这些容器一起合作对外提供一个服务) 复制控制器(Replication Controller,RC) RC是K8s集群中最早的保证Pod高可用的API对象。通过监控运行中的Pod来保证集群中运行指定数目的Pod副本。指定的数目可以是多个也可以是1个;少于指定数目,RC就会启动运行新的Pod副本;多于指定数目,RC就会杀死多余的Pod副本。即使在指定数目为1的情况下,通过RC运行Pod也比直接运行Pod更明智,因为RC也可以发挥它高可用的能力,保证永远有1个Pod在运行。RC是K8s较早期的技术概念,只适用于长期伺服型的业务类型,比如控制小机器人提供高可用的Web服务。(类似于分布式系统中的副本) 副本集(Replica Set,RS) RS是新一代RC,提供同样的高可用能力,区别主要在于RS后来居上,能支持更多种类的匹配模式。副本集对象一般不单独使用,而是作为Deployment的理想状态参数使用。 有状态服务集(PetSet) RC和RS主要是控制提供无状态服务的,其所控制的Pod的名字是随机设置的