Kubernetes更新etcd证书
在三台etcd所在的主机上执行以下操作
123456789$ cd /etc/kubernetes/pki$ mv etcd etcd.bak$ mkdir apiserver-etcd-client$ mv apiserver-etcd-client.* apiserver-etcd-client/$ kubeadm alpha phase certs etcd-ca$ kubeadm alpha phase certs etcd-server --config=/etc/kubernetes/kubeadmcfg.yaml$ kubeadm alpha phase certs etcd-peer --config=/etc/kubernetes/kubeadmcfg.yaml$ kubeadm alpha phase certs etcd-healthcheck-client --config=/etc/kubernetes/kubeadmcfg.yaml$ kubeadm alpha phase certs apiserver-etcd-client --config=/etc/ ...
Kubespray安装Kubernates过程
准备机器,绑定好IP(请关闭ipv6功能),关闭防火墙,并配置好hostname
1
在bation机器上设置免密码登录,并下载好kubespray安装脚本
先安装python3与python3-pip,并将pip进行升级
12$ yum install python3 python3-pip -y$ pip3 install --upgrade pip
安装python依赖包
1$ pip install -r requirements.txt -i https://pypi.douban.com/simple
更改镜像地址,特别是国内网络安装时
12$ vim roles/download/defaults/main.yml
OpenShift-3升级Docker服务
背景介绍OpenShift是一个开源产品,自2015年3.0版本开始,它使用Kubernetes作为底层的编排引擎,已经有将近5年了。同时它也有企业级版本,服务了众多大中小企业。经过这些年生产上的实践,OpenShift 3不断完善,已经非常稳定了,但是它依赖组件多,不断增加新的功能,使用量不断增多,一些漏洞和问题会被发现。在生产环境中,运行着大量的生产级应用,我们该如何升级Docker等组件,把业务影响降到最小,这是每个企业都无法绕过的问题。Docker作为OpenShift 3默认的容器运行,它的可靠性也尤为重要。本篇就以Docker升级为例介绍如何对OpenShift组件进行升级。升级不同OpenShift组件的思路是一样,主要是如下两条。
逐个节点升级
升级前将业务应用迁走
升级Docker实操
更新yum源中的docker包12$ cp docker-rpm/* ./extras/Packages/d/$ createrepo --update extras
迁移节点上的POD并将它设置为不可调度1$ oc adm drain <node_name> --fo ...
OpenShift-4-3部署安装(国内需要使用科学上网支持)
准备好本机访问科学上网环境
安装pip软件1$ yum install python2-pip
安装shadowsocks包1pip install shadowsocks -i https://pypi.douban.com/simple
编辑文件/etc/shadowsocks.json123456789101112$ cat > /etc/shadowsocks.json <<EOF{ "server":"shadowsocks的IP", "server_port":8388, "local_address": "0.0.0.0", "local_port":1080, "password":"fuuuuuuuuuuuuckgfw", "timeout":300, "method":" ...
OpenShift-ImageStream指向的镜像是否为内部镜像仓库
ImageStream是OpenShift中的一个特有的资源。在DeploymentConfig/BuildConfig中使用ImageStream和ImageStreamTag时经常会有这样的疑惑:究竟它指向的镜像有没有pull到OpenShift内部的镜像仓库呢?我们使用DeploymentConfig发布应用时,集群会从内部镜像仓库中pull镜像,还是从指向的外部镜像仓库中拉取?大家来看一下下面这个例子:
1$ oc import-image openshift/jenkins:v3.10 --from=docker.io/openshift/jenkins-2-centos7:v3.10 --confirm
猜一猜,以上这条命令是否会将镜像拉取到内部镜像仓库?答案是否定的,内部镜像仓库并不会拉取镜像本身,只是获取镜像的元数据,将创建的ImageStreamTag openshift/jenkins:v3.10指向镜像docker.io/openshift/jenkins-2-centos7:v3.10。这里的关键就是ImageStream[Tag]的一个配置项:re ...
OpenShift-Kafka-Operator测试报告
1. 测试环境物理机设备:集群(3 master 2 infra 3 node) 管理(1manager 部署LB+外部镜像仓库+DNS)物理机配置:40c 378GOpenshift:v3.11.0+1a90c5c-83Kubernetes:v1.11.0+d4cacc0Kafka Operator:amq-streams-1.1.0Kafka:2.1.1
2. 测试要求和内容根据测试要求,本次具体测试的功能点如下:
序号
测试项目
测试项
优先级
1
Kafka Operator部署
Kafka Operator部署
高
Kafka集群创建
高
Kafka监控部署
高
2
Kafka功能测试
Kafka创建Topic
高
Openshift集群内部Kafka producer与consumer测试
高
Openshift集群外部Kafka producer与consumer测试(NodePort方案)
高
Openshift集群外部Kafka producer与consumer测试(Router方案)
高
3
Kafka ...
OpenShift-Kubernetes中易理解错误的问题汇总
###1. readiness健康检查一直失败,Pod会不会重启?
不会,一直处于Running状态,但Not Ready。
2. Pod重启时,Pod的容器是重启,还是重新创建? POD容器不动,应用容器是重新创建。POD IP保持不变,但应用容器中的临时文件会丢失。
###3. 如果更改Deployment的配置后,马上将配置恢复回去,应用Pod是否会触发重新部署?不会,恢复回去后不会创建新的RS。
4. master_cluster_hostname与master_cluster_public_hostname的区别master_cluster_hostname是集群内部组件使用的域名master_cluster_public_hostname是集群外部使用的域名###5. 对于高可用集群中,3个master节点是完全相同的吗?openshift
不是,虽然它们的运行态是完全一致的,但是在OpenShift的运维脚本中是有区分的,如集群扩容时。有一台是主master(inventory中的第一台),它会单独保存集群的证书及一些配置。
###6. 对于statefulset类型 ...
OpenShift-Kubernetes集群-Calico-BGP管理工具calicoctl配置
calico 是容器网络的一种解决方案,也是当前最流行的方案之一。它完全利用路由规则实现动态组网,通过BGP协议通告路由。Calico BGP没有像ovs那样需要封包解包,所以它的网络性能更好。管理calico网络免不了使用calicoctl工具,本篇介绍如何在OpenShift/Kubernetes环境下,配置calicoctl来管理集群网络。
calico元数据支持两种存储类:etcd与kubernetes
安装calicoctl12$ curl -O -L https://github.com/projectcalico/calicoctl/releases/download/v3.10.0/calicoctl$ chmod a+x calicoctl
确认Calico部署时使用的元数据存储类型,查看calico-config1$ oc describe cm calico-config -n kube-system | grep datastore_type
可以为kubernetes、etcdv3。默认为etcdv3。设置为kubernetes时表示直接使用k8 ...
OpenShift-Master1彻底挂了,如何恢复?
小强维护着一套生成的OpenShift集群,突然有一天集群的master1节点出现异常,自动关机了。他尝试了多次,都无法开机,怎么办?他需要赶快恢复master1节点,来满足集群的高可用性。
原来的masters在ansible/hosts中的顺序如下
1234567891011121314[masters]master1 ## 重要主节点,安装完后单独保存/etc/etcd/ca中的证书master2master3[etcd]master1master2master3[nodes]master1master2master3
恢复过程如下:
新建一台 master1节点,hostname 与 IP 都和原 master1 节点一致
在master2上恢复master主节点的证书、ca.serial.txt及openshift软件。
通过新增 master 的方式将这个节点重新加回集群
通过新增 etcd 的方法,恢复了这台 master 节点 etcd 的状况
以下是恢复的具体步骤。
一、初始化Master节点
与部署机互信
开启selinux
关闭firewall ...
OpenShift-Prometheus使用集群外部Prometheus级联的方法实现多集群统一监控告警
背景大家知道OpenShfit官方通过Prometheus Operator可以快速构建高可用的监控告警平台,它不仅能够收集集群本身的监控指标,还可以通过ServiceMonitor扩展以监控应用自身的指标,实现单集群内部的统一监控。但是生产实践中,我们并不会只采用一个OpenShift部署应用,还会部署非容器应用,在非容器环境下也可能会部署Prometheus来监控相关服务(特别是现在Prometheus已经成为了监控的一个标配),甚至有可能会在不同的网络区部署多个集群,由于不同网络的隔离特性显然一组Prometheus是无法满足所有平台及应用的监控的。这就使得生产中会有很多套Prometheus集群需要管理与维护,查看监控指标也很分散,也就让我们想到必须采用一种办法能够将各处的指标统一收集,实现多集群多Prometheus服务的统一监控。目前实现这种要求的方法主要有两个,一个是通过Prometheus联邦 Federate,另一个是通过Thanos。今天主要介绍集群外部如何使用Prometheus联邦机制收集OpenShift内部Prometheus服务的监控指标。
操作实现其实 ...