Kube

Gitlab+Jenkins Pipeline+Docker+k8s+Helm自动化部署实践(干货!)

生来就可爱ヽ(ⅴ<●) 提交于 2020-08-05 22:55:30
通过前面两篇文章,我们已经有了一个“嗷嗷待哺”的K8s集群环境,也对相关的概念与组件有了一个基本了解(前期对概念有个印象即可,因为只有实践了才能对其有深入理解,所谓“纸上得来终觉浅,绝知此事要躬行”),本文从实践角度介绍如何结合我们常用的Gitlab与Jenkins,通过K8s来实现项目的自动化部署,示例将包括基于SpringBoot的服务端项目与基于Vue.js的Web项目。 本文涉及到的工具与技术包括: Gitlab —— 常用的源代码管理系统 Jenkins, Jenkins Pipeline —— 常用的自动化构建、部署工具,Pipeline以流水线的方式将构建、部署的各个步骤组织起来 Docker,Dockerfile —— 容器引擎,所有应用最终都要以Docker容器运行,Dockerfile是Docker镜像定义文件 Kubernetes —— Google开源的容器编排管理系统 Helm —— Kubernetes的包管理工具,类似Linux的yum,apt,或Node的npm等包管理工具,能将Kubernetes中的应用及相关依赖服务以包(Chart)的形式组织管理 环境背景: 已使用Gitlab做源码管理,源码按不同的环境建立了develop(对应开发环境),pre-release(对应测试环境),master(对应生产环境)分支 已搭建了Jenkins服务

k8s使用kubeadm安装-ubuntu

[亡魂溺海] 提交于 2020-08-05 17:02:28
环境ubuntu-server 20.04 参考 https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/ 同步集群时间 # 设定时区, 选择Asia -> 再选择Shanghai -> OK: sudo dpkg-reconfigure tzdata # 安装ntpdate工具 sudo apt-get install ntpdate # 将系统时间与网络同步 sudo ntpdate cn.pool.ntp.org #将时间写入硬件 sudo hwclock --systohc 编辑ubuntu apt使用阿里云镜像 sudo vi /etc/apt/sources.list deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted

单机版kubernetes的备份与恢复

有些话、适合烂在心里 提交于 2020-08-05 16:06:14
1.备份以下数据 - /var/lib/etcd - /etc/kubernetes - /var/lib/kubelet 2.kubeadm reset #初始化 3.恢复备份数据到文件夹 4.拉取镜像(被墙了,拉取私有镜像仓库,也可以拉取阿里云) docker pull 10.10.44.232/third/kube-apiserver:v1.12.1 docker pull 10.10.44.232/third/kube-controller-manager:v1.12.1 docker pull 10.10.44.232/third/kube-scheduler:v1.12.1 docker pull 10.10.44.232/third/pause:3.1 docker pull 10.10.44.232/third/etcd:3.2.24 docker pull 10.10.44.232/third/kube-proxy:v1.12.1 docker pull 10.10.44.232/third/coredns:1.2.2 docker pull 10.10.44.232/third/kubernetes-dashboard-amd64:v1.10.0 docker tag 10.10.44.232/third/kube-apiserver:v1.12.1 k8s

技术分享 | kubernetes 环境测试部署 MySQL 的随想

◇◆丶佛笑我妖孽 提交于 2020-08-05 11:02:33
作者:王悦 爱可生研发团队成员,负责数据库管理平台相关项目的开发和故障排查,好奇 MySQL 技术原理及各类数据库实现方案。 本文来源:转载自公众号-图解 MySQL *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 注:阅读本文需要了解 pod,controller,service 等一些 kubernetes 的基本概念。 什么是 kubernetes?有了容器技术后为什么还需要 kubernetes? 容器凭借其良好的移植性,敏捷性和革命性的打包方式迅速成为云服务的新基础设施。但 Docker 毕竟只是 “container runtime”,我们需要一个编排框架作为系统核心来串联开发、测试、部署、运维等整个软件生命周期。kubernetes 就提供这样一个框架,提供大量容器的部署、编排、管理的能力。 如果将 MySQL 部署在 kubernetes 会有哪些挑战?带来了什么收益? 虽然 kubernetes 社区一直在努力使得有状态应用成为一等公民,也推出了 statefulset 控制器支持 pod 的顺序部署,稳定的域名访问和存储访问。但鉴于 MySQL 部署运维的多样性和复杂性,在 kubernetes 上部署 MySQL 仍然要面临众多挑战。 1、业务流量入口的配置方式 传统虚拟机环境下,我们通过虚 IP 的方式

Windows节点上使用logtail

霸气de小男生 提交于 2020-08-05 10:37:10
环境要求 创建Linux托管集群,添加OS为Windows的节点池来使用Windows节点 集群已经部署了日志组件 添加Windows节点的logtail 在kube-system下的configmap alibaba-log-configuration 中添加item win-log-config-path: C:\Program Files (x86)\Alibaba\Logtail\conf\ap-southeast-1\ilogtail_config.json 部署Windows节点的daemonset apiVersion: extensions/v1beta1 kind: DaemonSet metadata: labels: k8s-app: win-logtail-ds name: win-logtail-ds namespace: kube-system spec: selector: matchLabels: k8s-app: logtail-ds kubernetes.io/cluster-service: "true" version: v1.0 template: metadata: annotations: scheduler.alpha.kubernetes.io/critical-pod: "" labels: k8s-app: logtail-ds

node节点flannel网络问题导致该node上的pod与其他node节点网络不通的排查思路与解决

…衆ロ難τιáo~ 提交于 2020-08-04 13:59:02
node节点flannel网络问题导致该node上的pod与其他node节点网络不通的排查思路与解决方法 一、问题发现 在部署一个replicas:4的nginx deployment之后在master节点通过curl + podIP + 端口的形式测试时,发现两次访问不到,两次可以访问得到。 二、问题排查 1、通过ping pod的ip地址,发现node1节点的pod全都ping不通,问题很有可能就出在node1节点上 2、通过ip a查看node1节点发现flannel.1没有ip地址,可能原因就出现在这。 3、刚开始以为是iptables规则可能导致节点flannel网络没起来,于是就把iptables规则全清了,重启了kubelet后发现还是没有flannel网络。 4、然后在master节点通过kubectl logs -f -n kube-system kube-flannel的Pod来查看对应node1的flannel Pod的日志发现一个错误日志,还是网络down掉了 failed to add vxlanRoute (10.244.0.0/24 -> 10.244.0.0): network is down 5、尝试将node1节点的flannel.1网络删除,在node1节点上执行 ip link delete flannel.1 6、在 /etc/sysctl

kubeadm部署kubernetes v1.14.1高可用集群

回眸只為那壹抹淺笑 提交于 2020-08-04 11:31:03
高可用简介 kubernetes高可用部署参考: https://kubernetes.io/docs/setup/independent/high-availability/ https://github.com/kubernetes-sigs/kubespray https://github.com/wise2c-devops/breeze https://github.com/cookeem/kubeadm-ha 拓扑选择 配置高可用(HA)Kubernetes集群,有以下两种可选的etcd拓扑: 集群master节点与etcd节点共存,etcd也运行在控制平面节点上 使用外部etcd节点,etcd节点与master在不同节点上运行 堆叠的etcd拓扑 堆叠HA集群是这样的拓扑,其中etcd提供的分布式数据存储集群与由kubeamd管理的运行master组件的集群节点堆叠部署。 每个master节点运行kube-apiserver,kube-scheduler和kube-controller-manager的一个实例。kube-apiserver使用负载平衡器暴露给工作节点。 每个master节点创建一个本地etcd成员,该etcd成员仅与本节点kube-apiserver通信。这同样适用于本地kube-controller-manager 和kube-scheduler实例

kubernetes(八) kubernetes的使用

99封情书 提交于 2020-07-29 10:24:39
kubernetes的使用 kubectl命令行管理工具 参考命令: kubectl常用的命令行管理命令 部署应用 kubectl create deployment web --image=nginx:1.14 kubectl get deploy,pods 暴露应用 kubectl expose deployment web --port=80 --type=NodePort --targer-port=80 --name=web kubectl get service 应用升级 kubectl set image deployment/web nginx=nginx:1.16 kubectl rollout status deployment/web 应用回滚 kubectl rollout undo deployment/web #回滚到上一个版本 kubectl rollout history deploy/web #查看版本(版本号递增,最新的也就是版本号最大的) kubectl rollout undo deploy/web --to-revision=1 #指定版本回滚 扩缩容 kubectl scale deployment web --replicas=4 #扩容至4个pod kubectl scale deployment web --replicas=1

使用Rancher在Microsoft Azure上搭建Kubernetes集群

穿精又带淫゛_ 提交于 2020-07-29 04:44:35
Rancher 是一种简化Kubernetes集群部署的方案,它的理念是,在任何地方运行Kubernetes集群。由于在最近的工作中需要用到,因此,就写一篇文章介绍一下Rancher的使用,以及通过Rancher在Azure上搭建Kubernetes集群的方式。 开始使用Rancher Rancher的基本使用非常简单,英语比较好的可以直接翻看 Rancher官网上的文档 ,我们先从Rancher的安装开始。Rancher的安装非常简单,在装有docker的机器上直接运行以下命令,就可以启动Rancher。 sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher 启动完成后,打开浏览器,使用http或者https访问运行Rancher容器的主机,就可以看到用户界面。第一次使用时,Rancher会提示为admin用户设置新的密码,输入密码后,就可以开始使用Rancher了。进入主界面后,页面会显示Add Cluster的按钮,点击该按钮就可以开始创建一个新的Kubernetes集群。但在开始创建集群前,有些配置是需要预先设置好的,因此,我们不急于点击这个Add Cluster按钮,我们先点击界面右上方的用户头像,然后可以看到两个重要的菜单项:Cloud

Rancher部署K8s以及编排springboot项目

久未见 提交于 2020-07-29 03:03:55
rancher安装k8s集群 参考 https://docs.rancher.cn/rancher2x/quick-start.html#_3-%E5%AE%89%E8%A3%85rancher 预计耗时: 5分钟 springboot打包镜像,并提交至私服镜像仓库 Dockerfile FROM openjdk:8-jdk-alpine # 复制打包完成后的jar文件到/opt目录下 WORKDIR /opt/ COPY ./ruoyi-sys.jar /opt/ruoyi-sys.jar # /data设为环境变量 ENV DATAPATH /tmp # 挂载/data目录到主机 VOLUME $DATAPATH EXPOSE 8087 # 启动容器时执行 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-XX:-PrintGCDetails","-XX:-PrintGCTimeStamps","-XX:-HeapDumpOnOutOfMemoryError","-XX:HeapDumpPath=/var/logs/dump/oom_dump.dump","-Xloggc:/var/logs/jvm/app.log","-Dfile.encoding=UTF8","-Duser.timezone=GMT