Kube

Drone在kubernetes环境下打包并部署

只愿长相守 提交于 2020-08-15 06:49:35
1. drone是一款使用 Go 开发的开源的 CI 自动构建平台。原生 Docker 支持,kubernetes也是支持的。drone比argo, tekton更快,更简单,比jenkins更轻量化。drone云原生概念+1,做了很多事不用考虑+1,gitlab/github能看到构建结果+1 环境:kubernetes 1.8+, helm3 参考官方 https://github.com/drone/charts https://docs.drone.io/server/provider/gitlab/ 创建namespace, 添加仓库 kubectl create ns drone helm repo add drone https://charts.drone.io helm repo update 在gitlab中创建一个OAuth应用。Redirect URI是drone的地址并加一个/login,授权两个api, read_user 增加一个文件 drone-server-overrides.yaml 。这里使用的 traefik image: tag: 1.9.0 ingress: enabled: true annotations: traefik.ingress.kubernetes.io/router.tls: "true" traefik.ingress

kubernetes云平台管理实战:k8s附加组件DNS服务(十三)

为君一笑 提交于 2020-08-15 03:03:56
一、为什么需要DNS组件 进入容器 [root@master ~]# kubectl exec -it myweb-7vjgt sh root@myweb-7vjgt:/usr/local/tomcat# 查看环境变量 root@myweb-7vjgt:/usr/local/tomcat# env MYWEB_PORT_8080_TCP_PORT=8080 HOSTNAME=myweb-7vjgt TOMCAT_VERSION=8.0.35 KUBERNETES_PORT_443_TCP_PORT=443 TERM=xterm KUBERNETES_PORT=tcp://10.254.0.1:443 CATALINA_HOME=/usr/local/tomcat MYWEB_PORT_8080_TCP_ADDR=10.254.202.136 MYWEB_PORT_8080_TCP_PROTO=tcp KUBERNETES_SERVICE_PORT=443 KUBERNETES_SERVICE_HOST=10.254.0.1 MYWEB_SERVICE_HOST=10.254.202.136 MYSQL_PORT_3306_TCP_PORT=3306 MYSQL_PORT_3306_TCP=tcp://10.254.168.177:3306 PATH=/usr/local

详解Kubernetes架构 | 端午送福利

僤鯓⒐⒋嵵緔 提交于 2020-08-15 01:33:12
Kubernetes是Google公司开源的一个容器(Container)编排与调度管理框架,该项目最初是Google内部面向容器的集群管理系统,而现在是由Cloud Native Computing Foundation(CNCF,云原生计算基金会)托管的开源平台,由Google、AWS、Microsoft、IBM、Intel、Cisco和Red Hat等主要参与者支持,其目标是通过创建一组新的通用容器技术来推进云原生技术和服务的开发。作为领先的容器编排引擎,Kubernetes提供了一个抽象层,使其可以在物理或虚拟环境中部署容器应用程序,提供以容器为中心的基础架构。 Kubernetes系统拥有一个庞大而活跃的开发人员社区,这使其成为历史上增长最快的开源项目之一。它是GitHub上排名前10的项目,也是Go语言最大的开源项目之一,Kubernetes也被称为K8s,是通过将8个字母ubernete替换为8而形成的缩写。 Kubernetes系统具有如下特点: 可移植:支持公有云、私有云、混合云、多重云(Multi-cloud)。 可扩展:模块化、插件化、可挂载、可组合。 自动化:自动部署、自动重启、自动复制、自动伸缩/扩展。 Kubernetes的发展历史 2003—2004年,Google发布了Borg系统,它最初是一个小规模项目,约有3~4人合作开发。而现在

externaltrafficpolicy的有关问题说明

孤者浪人 提交于 2020-08-14 16:26:29
环境描述 生产环境通过gitlab-running实现自动化发布业务,现需要收集客户端的真实ip,需要将externaltrafficpolicy改为lacal模式(原来是cluster模式),前天开发反映无法发布业务(镜像拉取不成功)。想到就改动过externaltrafficpolicy所以考虑到了local模式和cluster模式的区别。 externaltrafficpolicy作用阐述 把集群外部的服务引入到集群内部来,在集群内部直接使用。没有任何类型代理被创建,这只有 kubernetes 1.7 或更高版本的 kube-dns 才支持【当我们的集群服务需要访问k8s之外的集群时,可以选择这种类型,然后把外部服务的IP及端口写入到k8s服务中来,k8s的代理将会帮助我们访问到外部的集群服务】 1 什么是external-traffic-policy 在k8s的Service对象(申明一条访问通道)中,有一个“externalTrafficPolicy”字段可以设置。有2个值可以设置:Cluster或者Local。 1)Cluster表示:流量可以转发到其他节点上的Pod。 2)Local表示:流量只发给本机的Pod。 图示一下: 2 这2种模式有什么区别 存在这2种模式的原因就是,当前节点的Kube-proxy在转发报文的时候,会不会保留原始访问者的IP。 2.1 选择

python3.6 操作k8s

可紊 提交于 2020-08-14 15:29:50
一、安装python3 github: https://github.com/kubernetes-client/python 或者参考如下连接快速安装: https://blog.51cto.com/xushaojie/2479753 二、安装kubernetes sdk python3 -m pip install kubernetes -i https://pypi.doubanio.com/simple 三、认证 1、kubeconfig文件认证 首先引入SDK支持库。然后将 ~/.kube/config文件的内容复制到本地目录,保存为文件/root/kubeconfig.yaml,然后运行下面的python代码。 [root@k8s-master python-k8s]#cp /root/.kube/config /root/kubeconfig.yaml 四、api使用 1、列出资源信息 from kubernetes import client, config config.kube_config.load_kube_config(config_file="/root/kubeconfig.yaml") #获取API的CoreV1Api版本对象 v1 = client.CoreV1Api() #列出 namespaces for ns in v1.list

.Net微服务实战之Kubernetes的搭建与使用

大城市里の小女人 提交于 2020-08-14 15:26:41
系列文章 .Net微服务实战之技术选型篇 .Net微服务实战之技术架构分层篇 .Net微服务实战之DevOps篇 .Net微服务实战之负载均衡(上) .Net微服务实战之CI/CD 前言   说到微服务就得扯到自动化运维,然后别人就不得不问你用没用上K8S。无论是概念上还是在实施搭建时,K8S的门槛比Docker Compose、Docker Swarm高了不少。我自己也经过了多次的实践,整理出一套顺利部署的流程。   我这次搭建花了一共整整4个工作实践与一个工作日写博客,中间有一个网络问题导致reset了集群重新搭了一次,完成后结合了Jenkins使用,还是成就感满满的。如果对大家有用,还请点个推荐与关注。 基本概念 Kubectl kubectl用于运行Kubernetes集群命令的管理工具,Kubernetes kubectl 与 Docker 命令关系可以查看这里 http: // docs.kubernetes.org.cn/70.html Kubeadm kubeadm 是 kubernetes 的集群安装工具,能够快速安装 kubernetes 集群,相关命令有以下: kubeadm init kubeadm join Kubelet kubelet是主要的节点代理,它会监视已分配给节点的pod,具体功能: 安装Pod所需的volume。 下载Pod的Secrets。

使用ansible部署K8S1.18集群并使用Kubesphere 3.0.0实现devops、日志收集、灰度发布、告警监控

半城伤御伤魂 提交于 2020-08-14 13:43:36
离线安装集群 参考 https://github.com/easzlab/kubeasz/blob/master/docs/setup/offline_install.md 离线文件准备 在一台能够访问互联网的服务器上执行: 下载工具脚本easzup,举例使用kubeasz版本2.2 export release=2.2.1 curl -C- -fLO --retry 3 https://github.com/easzlab/kubeasz/releases/download/${release}/easzup chmod +x ./easzup 使用工具脚本下载 默认下载最新推荐k8s/docker等版本,使用命令 ./easzup 查看工具脚本的帮助信息 # 举例使用 k8s 版本 v1.18.2,docker 19.03.5 ./easzup -D -d 19.03.5 -k v1.18.2 # 下载离线系统软件包 ./easzup -P 执行成功后,所有文件均已整理好放入目录/etc/ansible ,只要把该目录整体复制到任何离线的机器上,即可开始安装集群,离线文件包括: /etc/ansible 包含 kubeasz 版本为 ${release} 的发布代码 /etc/ansible/bin 包含 k8s/etcd/docker/cni 等二进制文件 /etc

k8s之标签选择器

故事扮演 提交于 2020-08-14 04:08:43
undefined Label(标签)是Kubernetes系统中另外一个核心概念。一个Label是 一个key=value的键值对,其中key与value由用户自己指定。Label可以被 附加到各种资源对象上,例如Node、Pod、Service、RC等,一个资源对 象可以定义任意数量的Label,同一个Label也可以被添加到任意数量的 资源对象上。Label通常在资源对象定义时确定,也可以在对象创建后 动态添加或者删除。 我们可以通过给指定的资源对象捆绑一个或多个不同的Label来实 现多维度的资源分组管理功能,以便灵活、方便地进行资源分配、调 度、配置、部署等管理工作。例如,部署不同版本的应用到不同的环境 中;监控和分析应用(日志记录、监控、告警)等。一些常用的Label 示例如下。 ◎ 版本标签:"release":"stable"、"release":"canary"。 ◎ 环境标 签:"environment":"dev"、"environment":"qa"、"environment":"production"。 ◎ 架构标 签:"tier":"frontend"、"tier":"backend"、"tier":"middleware"。 ◎ 分区标签:"partition":"customerA"、"partition":"customerB"。 ◎ 质量管控标签

kubeadm-config 使用说明

烂漫一生 提交于 2020-08-14 03:40:41
版本列表 kubeadm-config 的版本列表 命令 版本 kubeadm v1.11 v1alpha2 kubeadm v1.12 v1alpha3 kubeadm v1.13 or v1.14 v1beta1 kubeadm v1.15 v1beta2 基础知识 kubeadm-config 支持以下配置类型 apiVersion: kubeadm.k8s.io/v1beta2 kind: InitConfiguration apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration apiVersion: kubeadm.k8s.io/v1beta2 kind: JoinConfiguration init 和 join 的默认配置可以使用以下命令打印出来 kubeadm config print init-defaults kubeadm config print join-defaults Kubeadm init

更新应用时,如何实现 K8s 零中断滚动更新?

笑着哭i 提交于 2020-08-14 02:41:21
作者 | 子白(阿里云开发工程师)、溪恒(阿里云技术专家) <关注阿里巴巴云原生公众号,回复 排查 即可下载电子书> 《深入浅出 Kubernetes》一书共汇集 12 篇技术文章,帮助你一次搞懂 6 个核心原理,吃透基础理论,一次学会 6 个典型问题的华丽操作! Kubernetes 集群中,业务通常采用 Deployment + LoadBalancer 类型 Service 的方式对外提供服务,其典型部署架构如图 1 所示。这种架构部署和运维都十分简单方便,但是在应用更新或者升级时可能会存在服务中断,引发线上问题。今天我们来详细分析下这种架构为何在更新应用时会发生服务中断以及如何避免服务中断。 图1 业务部署图 为何会发生服务中断 Deployment 滚动更新时会先创建新 pod,等待新 pod running 后再删除旧 pod。 新建 Pod 图 2 服务中断示意图 中断原因 :Pod running 后被加入到 Endpoint 后端,容器服务监控到 Endpoint 变更后将 Node 加入到 SLB 后端。此时请求从 SLB 转发到 Pod 中,但是 Pod 业务代码还未初始化完毕,无法处理请求,导致服务中断,如图 2 所示。 解决方法 :为 pod 配置就绪检测,等待业务代码初始化完毕后后再将 node 加入到 SLB 后端。 删除 Pod 在删除旧 pod