pod

Kubernetes常用命令

一世执手 提交于 2020-01-31 16:09:22
最近学习 Kubernetes ,记录下常用的命令。 常用命令 获取当前命名空间下的容器 kubectl get pods 获取所有容器l列表 kubectl get all 创建 容器 kubectl create -f kubernate-pvc.yaml 删除容器 kubectl delete pods/test-pd 或者 kubectl delete -f rc-nginx.yaml 查看指定pod跑在哪个node上 kubectl get pod /test-pd -o wide 查看容器日志 Kubectl logs nginx-8586cf59-mwwtc 进入容器终端命令 kubectl exec -it nginx-8586cf59-mwwtc /bin/bash 一个Pod里含有多个容器 用–container or -c 参数。 例如:假如这里有个Pod名为my-pod,这个Pod有两个容器,分别名为main-app 和 helper-app,下面的命令将打开到main-app的shell的容器里。 kubectl exec -it my-pod --container main-app – /bin/bash 容器详情列表 kubectl describe pod/mysql- m8rbl 查看容器状态 kubectl get svc 来源: CSDN

K8s基本概念入门

微笑、不失礼 提交于 2020-01-30 04:42:09
序言 没等到风来,绵绵小雨,所以写个随笔,聊聊k8s的基本概念。 k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈,例如一个服务器挂了,可以自动将这个服务器上的服务调度到另外一个主机上进行运行,无需进行人工干涉。那么,问题来了,要运维何用? k8s可以更快的更新新版本,打包应用,更新的时候可以做到不用中断服务,服务器故障不用停机,从开发环境到测试环境到生产环境的迁移极其方便,一个配置文件搞定,一次生成image,到处运行。。。 k8s的全生命周期管理 在k8s进行管理应用的时候,基本步骤是:创建集群,部署应用,发布应用,扩展应用,更新应用。 1、创建集群:为什么要使用集群? 有一句古话叫做三个臭皮匠,赛过诸葛亮,这就是创建集群的原因。。。 使用集群,create cluster是为了掩盖底层的无能,在各种环境中,底层的硬件各不相同,有的是各种低廉的服务器,有的各种云环境,有的是各种vm,有的各种host machine,要想屏蔽底层的细节,增强可靠性和稳定性,从而需要创建集群。 创建集群的好处就是,统一对外提供接口,无须进行各种复杂的调用;提供更好的可靠性,服务器宕机那么频繁,物理磁盘那么容易损坏,无须担心,集群统一进行调配;提供更好的性能

K8s

穿精又带淫゛_ 提交于 2020-01-29 23:46:56
K8s: 开源的容器集中管理系统,使用go语言开发,用于管理云平台中多个主机上的容器化应用 Kubernetes 特性: K8s的目标是让部署容器化的应用简单并且高效提供了资源调度、部署管理、服务发现、扩容缩容、监控,维护等一整套功能。成为跨主机集群的自动部署、扩展以及运行应用程序容器的平台。 1.自我修复 2.弹性伸缩 3.自动部署和回滚 4.服务发现和负载均衡 5.机密和配置管理 6.存储编排 7.批量处理 Kubernetes集群构架与组件: K8s属于主从分布式架构,主要由master和worker node组成,包括客户端命令行工具kubectl和其它附加项。 Master作为控制节点,对集群进行统一的调度和管理,增删改查。 Worker Node:作为真正的工作节点,运行业务应用的容器,node由master管理,node负责监控并汇报容器的状态。 kubectl:客户端工机具,用于通过命令行与API Server进行交互,对Kubernetes集群进行操作,实现在集群中进行各种资源的增删改查等操作。 Kubernetes 组件介绍: Master组件:集群控制管理节点,负责管理集群,所有的命令都经由master处理,拥有Etcd存储服务,运行Api Server进程,Controller Manager服务进程及Scheduler服务进程,关联工作节点Node。

kube-controller-manager inform机制学习

余生长醉 提交于 2020-01-29 06:12:03
介绍 controller中的传感器主要由Reflector, Informer, Indexer组成 Reflector通过List&Watch kube-apiserver来获取k8s资源数据,获取到资源数据后,会在Delta队列放入一个包括资源对象信息本身以及资源对象事件类型的Delta记录 Informer不断从Delta队列中弹出Delta记录,一方面把事件交给事件回调函数,另一方面把资源对象交给Indexer。 Indexer把资源记录在一个缓存中 controller中的控制器主要由事件处理函数及worker组成 事件处理函数会监听Informer中资源的新增、更新、删除事件,并根据控制器的逻辑决定是否需要处理 对于需要处理的事件,会把相关信息放到工作队列中,并由后续worker池中的worker来处理 worker在处理资源对象时一般需要用资源对象的名字去缓存中重新获取最新的资源数据 源码阅读 1、kube-controller-manager.Run方法会调用sharedInformerFactory.Start; /k8s.io/kubernetes/cmd/kube-controller-manager/app/controllermanager.go controllerContext . InformerFactory . Start (

[kubernetes]9-4 部署策略详解 --- 重建、滚动、蓝绿、金丝雀

不羁岁月 提交于 2020-01-29 05:08:20
9-4 部署策略详解 --- 重建、滚动、蓝绿、金丝雀 部署策略实践 这两个是kubernetes 层面支持的策略 Rolling update Recreate 需要先停止旧服务 这两个是需要通过service的一些特征(labelselector)结合deployment一起完成 蓝绿部署 金丝雀 1 测试Recreate 创建web-recreate.yaml #deploy apiVersion: apps/v1 kind: Deployment metadata: name: web-recreate namespace: dev spec: # 策略为Recreate strategy: type: Recreate selector: matchLabels: app: web-recreate replicas: 2 template: metadata: labels: app: web-recreate spec: containers: - name: web-recreate image: harbor.pdabc.com/kubernetes/web:v3 ports: - containerPort: 8080 livenessProbe: tcpSocket: port: 8080 initialDelaySeconds: 20

制作Cocoapods私有库

本小妞迷上赌 提交于 2020-01-29 01:30:32
为自己写好的代码添加pod管理是非常有必要的, 既方便自己的项目管理,也方便他人调用自己的代码模块,这里说一下Cocoapods私有库的制作。 一、远端创建存放项目工程文件仓库(github、gitlab、码云等) 这里使用github创建XPYTestLib项目,Private需要收费,暂时使用Public。.gitignore和license文件可以不选,因为后面创建本地库的时候会自动创建 二、创建本地项目 (1)这里在本地桌面创建项目。打开终端,使用pod lib create命令,之后会有一些问题,根据自己需求作答。 (2)至此就创建好了本地项目,可以在桌面看到XPYTestLib项目,进入项目的Example目录,打开XPYTestLib.xcworkspace,可以直接运行空白项目。可以看到Podspec Metadata目录下的XPYTestLib.podspec文件就是私有库管理文件,选中可以直接进行编辑。 (3)编辑完终端进入Example目录,使用pod install命令,更新项目pod。这里因为pod版本问题可能会遇到各种问题,最常见的解决方法就是使用pod update命令先检查更新,关于cocoapods 1.8.0版本以后使用CDN还是继续使用以前版本的问题可以自行上网解决,推荐使用CDN,毕竟与时俱进。 (4)验证该文件的有效性

从零开始入门 K8s | Kubernetes 调度和资源管理

泪湿孤枕 提交于 2020-01-28 11:07:39
作者 | 子誉 蚂蚁金服高级技术专家 关注“阿里巴巴云原生”公众号,回复关键词 “入门” ,即可下载从零入门 K8s 系列文章 PPT。 Kubernetes 调度过程 搜小说 https://biqi.org/ 首先来看第一部分 - Kubernetes 的调度过程。如下图所示,画了一个很简单的 Kubernetes 集群架构,它包括了一个 kube-ApiServer,一组 Web-hook Controllers,以及一个默认的调度器 kube-Scheduler,还有两台物理机节点 Node1 和 Node2,分别在上面部署了两个 kubelet。 我们来看一下,假如要向这个 Kubernetes 集群提交一个 pod,它的调度过程是什么样的一个流程? 假设我们已经写好了一个 yaml 文件,就是下图中的橙色圆圈 pod1,然后往 kube-ApiServer 里提交这个 yaml 文件。 此时 ApiServer 会先把这个待创建的请求路由给我们的 webhook Controllers 进行校验。 通过校验之后,ApiServer 会在集群里面生成一个 pod,此时生成的 pod,它的 nodeName 是空的,并且它的 phase 是 Pending 状态。在生成了这个 pod 之后,kube-Scheduler 以及 kubelet 都能 watch 到这个 pod

使用cocoapods

旧街凉风 提交于 2020-01-28 06:17:00
使用 cocoapods 0. 如果发现装 cocoapods 时 出错就更新 gem 到最新版本,在终端中输入: $ sudo gem update --system , 注意不要把 “$” 复制上。等待一会儿会看到 我已经敲过 所以是 1. 移除原有的源 gem sources --remove https://rubygems.org/ 2. 添加淘宝的镜像 gem sources -a https://gems.ruby-china.org/ ( 原来的淘宝镜像 https://ruby.taobao.org/ 已经不能用了 ) 。 3. 检查源 可以用 gem sources -l 来检查使用替换镜像位置成功,结果应该只有 https://gems.ruby-china.org/ 才对 5. 安装 CocoaPods ,终端输入: sudo gem install cocoapods 等待一会儿会看到: 出现问题查阅解决方法 https 导致 stackflow 中也有案例链接 http://stackoverflow.com/questions/30812777/cannot-install-cocoa-pods-after-uninstalling-results-in-error/30851030#30851030 解决方法是 sudo gem install -n

cocoapods安装说明,最快安装,以及使用

一笑奈何 提交于 2020-01-27 14:43:42
安装卸载更新新推荐 文章最后 其他问题总结; 1 添加taobao提供的镜像地址:http://ruby.taobao.org/ 移除命令:gem sources --remove https://rubygems.org/ 添加命令:gem sources -a http://ruby.taobao.org/ 查看gem来源列表:$ gem sources -l 2 在命令终端输入: sudo gem install cocoapods 等待15分钟: $ sudo gem install cocoapods Password: Fetching: i18n-0.7.0.gem (100%) Successfully installed i18n-0.7.0 Fetching: thread_safe-0.3.4.gem (100%) Successfully installed thread_safe-0.3.4 Fetching: tzinfo-1.2.2.gem (100%) Successfully installed tzinfo-1.2.2 Fetching: minitest-5.5.1.gem (100%) Successfully installed minitest-5.5.1 Fetching: activesupport-4.2.0.gem (100%)

K8s Nginx Ingress 介绍

帅比萌擦擦* 提交于 2020-01-27 11:55:24
作者:漠然,原文发布于2017年3月4日, 原文链接 一、Ingress 介绍 Kubernetes 暴露服务的方式目前只有三种:LoadBlancer Service、NodePort Service、Ingress;前两种估计都应该很熟悉,具体的可以参考下 这篇文章 ;下面详细的唠一下这个 Ingress 。 1.1、Ingress 是个什么玩意 可能从大致印象上 Ingress 就是能利用 Nginx、Haproxy 啥的负载均衡器暴露集群内服务的工具;那么问题来了,集群内服务想要暴露出去面临着几个问题: 1.2、Pod 漂移问题 众所周知 Kubernetes 具有强大的副本控制能力,能保证在任意副本(Pod)挂掉时自动从其他机器启动一个新的,还可以动态扩容等,总之一句话,这个 Pod 可能在任何时刻出现在任何节点上,也可能在任何时刻死在任何节点上;那么自然随着 Pod 的创建和销毁,Pod IP 肯定会动态变化;那么如何把这个动态的 Pod IP 暴露出去?这里借助于 Kubernetes 的 Service 机制,Service 可以以标签的形式选定一组带有指定标签的 Pod,并监控和自动负载他们的 Pod IP,那么我们向外暴露只暴露 Service IP 就行了;这就是 NodePort 模式:即在每个节点上开起一个端口,然后转发到内部 Pod IP 上,如下图所示