简单的shell连写判断对应pod是否创建

当前的运维监控是比较简陋的,运维程序在kubectl apply YAML配置后需要判断是否成功创建对应的pod, 嫌调用 kubenetes 的接口太麻烦,就直接用了 shell 命令行, 这里简单记录下: var svrName = “xxx”; var yamlFileName = “test.{svrName}.yaml”; var timeoutSecond = 100; var k8SJob = “svrName-job”; var cmd = “kubectl create -f {yamlFileName} \ && ret=0 … “简单的shell连写判断对应pod是否创建”

Read More

创建基于Fannel网络的Kubernetes 1.11.4

上次发布的 K8s 1.10.3 构建 的文章被喷我太懒,居然文章里还嵌了另一篇内容,而这另一篇文章里面居然还嵌了另一篇,简直不能看. 其实二进制搭建 K8s ,很多的步骤都是要重复的,并且升级版本也是,改动的只是极个别的参数,个人不是很喜欢其他的构建方式,比如16年和17年用 kubeadm 或 minikube 的时候,老会被网络问题困扰,毕竟公司的大网络环境下不能随意上代理, 而 kubespray(之前叫kargo) 的参数化配置还必须预先准备要用的程序然后再一行行填写,我也不喜欢,因此我为自己方便,早早的就搞了个 shell 的一键构建脚本,. 准备环境 本次构建同样是基于 Fannel 网络,并启用 IPVS. Master节点的配置建议 2U2G 起,Node 节点的配置建议 2U2G 起. 各节点系统为 CentOS 7 ,需要配置各个节点的名称,IP,全部流程使用 root 权限,关闭 SELinux … “创建基于Fannel网络的Kubernetes 1.11.4”

Read More

使用EFK收集Kubernetes多集群日志

使用EFK收集Kubernetes多集群日志 Collecting logs for multi kubernetes clusters with EFK 在有多个集群的情况下,一个集群就搭建一套日志收集分析服务实在太浪费。因此可以尝试只跑一套Elasticsearch和Kibana实例,然后让各个集群中的日志收集器向Elasticsearch发送日志。 如图所示: Elasticsearch和Kibana可以放在Kubernetes集群中也可以独立部署。这里为了方便就选择独立部署. 部署ElasticSearch和Kibana Elastic 自建了 docker 镜像仓库,因此到https://www.docker.elastic.co/拉去最新的 Elasticsearch 和 Kibana 的镜像. 然后编写docker-compose.yaml文件. 关于详细配置,参考官方文档: Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/master/docker.html Kibana: https://www.elastic.co/guide/en/kibana/master/docker.html version: ‘2’ services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:6.4.0 restart: unless-stopped … “使用EFK收集Kubernetes多集群日志”

Read More

构建Flutter Android编译环境的Jenkins Slave

曾经给公司搞了个 Android 编译环境的 Docker 镜像,但是时间比较早,大概是17年5/6月,当时还加入 Node.JS 和 Cordova ,构建出来的镜像的 Size 非常巨大,达到了 3.7 G,于是想趁着添加 Flutter 的环境,重新搞一个,这里记录下. FROM jenkins/jnlp-slave:latest # 官方使用的jenkins用户没有太多权限,这里用root USER root # 抛弃 Android 4.4 版本之前的API SDK ARG ANDROID_APIS=”android-20,android-21,android-22,android-23,android-24,android-25,android-26,android-27,android-28″ ARG ANDROID_BUILD_TOOLS_VER=28.0.2 ARG ANDROID_SDK_TOOLS_VER=4333796 ARG FLUTTER_VER=0.7.3 … “构建Flutter Android编译环境的Jenkins Slave”

Read More

创建基于Flannel网络的Kubernetes 1.10.3

和之前系列的文章一样,都是手动部署 Kubernetes,流程也相似,参考之前记录的 关于 IPVS 以及部署Kubernetes 1.9.2 并启用IPVS和CoreDNS. 早在上个月 Kubernetes 就已经发布了 1.10 系列,这个系列的新特性主要是将 CSI 和 CoreDNS 特性置为 beta. 开启 IPVS modprobe ip_vs ip_vs_sh ip_vs_rr ip_vs_wrr. 手动管理 IPVS 可用 ipvsadm工具, RedHat 系的系统使用yum install -y ipvsadm安装 ,Debian 系的系统使用apt … “创建基于Flannel网络的Kubernetes 1.10.3”

Read More

MacOS 下登陆私有Docker 仓库并拉取镜像

在mac下,并不存在/etc/docker/certs.d文件夹,虽然可以手动创建,但即便将自己私有仓库的CA证书放入,仍旧提示x509: certificate signed by unknown authority错误. 因此可以在图形界面打开Docker.app-Preferences-Daemon在Insecure registries栏中填入私有仓库的doman:port.这样便可以直接拉去公开的镜像.但若要拉去私有镜像,则必须先登录,此时便有可能遇到如下错误: Error saving credentials: error storing credentials – err: exit status 1, out: `User interaction is not allowed.` 有两种方法可以解决这个情况: 在图形界面打开Docker.app-Preferences-General,取消勾选的Securely store Docker logins in macOS keychain,此后的登陆便不会验证证书. 在launchpad中搜索Keychain Access并打开,然后在搜索栏中搜索仓库的证书,关键字为仓库的domain. … “MacOS 下登陆私有Docker 仓库并拉取镜像”

Read More

Kubernetes 的多种调度方法

label 通常在部署对机器有特殊需求的服务的时候,可以使用给 Node 贴上label 的方式来绑定这些服务: # add label kubectl label nodes node-name key1=value1 # show node label kubectl get nodes –show-labels # remove label kubectl label nodes node-name key1- 接着在部署的 YAML 描述文件中spec字段添加nodeSelector即可: spec: nodeSelector: key1: … “Kubernetes 的多种调度方法”

Read More

关于 IPVS 以及部署Kubernetes 1.9.2 并启用IPVS和CoreDNS

IPVS简介 IPVS 即IP Virtual Server. 是基于Netfilter,用于IP层(三层)的负载均衡. 它是专门为负载均衡设计的,其底层使用哈希表数据结构,数据处理高效,并且允许无限扩容. IPVS 的架构主要有IP包处理, 负载均衡算法, 参数配置管理这三个模块以及虚拟服务器与真实服务器链表(iptables)组成.可以说 IPVS 它依赖 iptables. 但 IPVS 模式承诺比 iptables 模式有更加高效的性能,也能支持更加庞大的集群. 在 Kubernetes 1.8 的时候,官方加入了 IPVS的支持(alpha). 上周发布的 1.9 中,已经将该特性置为 beta,但默认是 false,需要手动开启. 部署 整体部署的流程和之前写过的 创建基于Fannel网络的Kubernetes 1.7.6 类似,依旧是三个 Master,同时也做 … “关于 IPVS 以及部署Kubernetes 1.9.2 并启用IPVS和CoreDNS”

Read More

GitLab 接入AD域验证

公司之前用的都是由我部署的 LDAP , 前些日子升级了成 Windows 的域控,类似 Jenkins, Harbor 和 Gitlab 这些已接入账号管理的都要重新配置,这里记录下 Gitlab 的修改记录. Gitlab 使用的是官方的 Docker 容器,将容器内的/etc/gitlab挂载出来,编辑其中的gitlab.rb文件. 找到gitlab_rails[‘ldap_enabled’] = true,去掉前面的注释,编辑下方的 YAML.load: gitlab_rails[‘ldap_servers’] = YAML.load <<-‘EOS’ main: # ‘main’ is the GitLab ‘provider ID’ of this … “GitLab 接入AD域验证”

Read More