问题描述
对于 Nginx 配置文件的修改或增加,通常是在命令行中是通过 vim 编辑器完成的。
但是,最痛苦的事情就是配置文件的格式化,即配置行的缩进。由于 vim 不会自动缩进 Nginx 配置行,在经过日积月累的修改后,Nginx 配置文件的格式乱七八糟,可读性极低,维护这种配置文件极易出错。
该笔记将记录:如何格式化 Nginx 配置文件,以及常见问题的处理。
解决方案
命令行工具
1)Nginx Formatter,这是目前(05/22/2019)能找到的、Star 比较多的项目(使用 Python 开发),也是我们正在使用的工具:[……]

Read more

问题描述
该笔记将记录:在 Kubernetes Cluster 中,与 Calico 有关的常用设置,以及相关问题处理。
解决方案
calico/node is not ready: BIRD is not ready: BGP not established with 172.21.0.1
Calico readiness and liveliness probe fails · Issue #2042 · projectcalico/calico Configuring calico/node
问题描述
在集群中的 calico-node 处于 Read[……]

Read more

问题描述
虽然很多复杂的操作还是要通过命令行来完成,但是通过图形化界面能够快速完成简单操作,而且操作更加友好、数据显示更加直观,这是命令行所无法相提并论的。
鉴于此,我们将在集群中部署 Dashboard 界面,实现对集群的资源的简单管理、显示正在运行的应用、查看资源状态、查看集群信息等等。但是 kubernetes/dashboard: General-purpose web UI for Kubernetes clusters 表示 Dashboard 只是用于完成简单通用的管理任务,更加复杂的操作还要通过其他组件来完成。
该笔记将记录:在 Kubernetes Cl[……]

Read more

服务搭建流程概览
1)确定需要收集的日志及位置 2)搭建日志收集服务:Elasticsearch + Kibana + Fluentd 3)验证日志收集成功(能够查看)
集群环境概述
操作系统:CentOS Linux release 7.4.1708 (Core) 集群版本:Kubernetes v1.16.2 软件版本:Docker version 19.03.8
第一步、需要收集的日志
systemd
服务:docker.service kubelet.service 日志:systemd or /var/log
1)[……]

Read more

apiVersion: v1
kind: ServiceAccount
metadata:
name: fluentd
namespace: kube-system

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: fluentd
namespace: kube-system
rules:
– apiGroups:
– “”
resources:
– pods
– namespaces
verbs:
– get
– list[……]

Read more

apiVersion: v1
kind: Service
metadata:
name: logcluster
namespace: kube-system
spec:
ports:
– protocol: TCP
port: 9200
targetPort: 9200


apiVersion: v1
kind: Endpoints
metadata:
name: logcluster
namespace: kube-system
subsets:
– addresses:
– ip: 10.10.50.229[……]

Read more

问题描述
在 Docker Compose 中,可以使用 docker-compose build <service> 可以构建单独的镜像。
但是,在实际的应用过程中,还会遇到其他的更复杂的需求,导致我们需要从 docker-compose.yaml 提取构建命令。
该笔记将记录:在 Docker Compose 中,如何使用 docker-compose.yml 生成构建命令。
解决方案
# 04/15/2021 虽然 docker-compose.yaml 支持 build 指令,但是我们很少使用该指令,我们将 docker[……]

Read more

问题描述
该笔记将记录:在 Groovy 中,如何找到方法的调用者,以及相关问题的处理方法。
解决方案
方法一、强行试探(不可行)
通过观察栈,找到方法所在的位置:

class Log {

public void printCaller() {
println Thread.currentThread().getStackTrace()[10].getMethodName()
}
}

class Func {
Log log = new Log()

public void doSomeStuff() {
log.[……]

Read more

内容简介
本部分将介绍与Kubernetes日志有关内容,包括日志种类、收集方法等等。
关于日志
#1 多种多样的日志
应用程序具有日志,用于排查问题。集群具有日志,用于排查问题。容器环境具有日志机制,容器化应用应将日志写入标准输出与标准错误。
#2 但这些日志机制存在问题
但是由容器引擎提供的日志功能远远不够:容器崩溃,驱逐POD实例,节点崩溃,在这些情况下我们依旧希望访问日志。因此日志需要独立存储,并且生命周期与节点、容器等等无关。
该概念被称为“集群日志”。
#3 集群日志
“集群日志”需要单独存储[……]

Read more

问题描述
这是我们在部署Nginx Ingress Controller时使用的部署文件。该部署文件是对原有mandatory.yaml文件的修改。
在部署NGINX Ingress Controller组件时,如果使用Kubernetes 1.14版本之前的集群,需要修改mandatory.yaml文件的217行,将kubernetes.io/os修改为beta.kubernetes.io/os即可。
另外我们使用DaemonSet进行部署NGINX Ingress Controller组件。
原配置文件
https://raw.githubusercont[……]

Read more

问题描述
通过 Web UI (Dashboard) 界面,能够对集群的资源进行管理、显示正在运行的应用,查看资源状态,查看集群信息。
该笔记将记录:在 Kubernetes Cluster 中,如何安装部署 Dashboard 服务,以及常见问题处理。
解决方案
实验环境:Kubernetes Cluster v1.14.0
第一步、安装服务
查看集群版本:

# kubectl version -o json | jq -r ‘.serverVersion.gitVersion’
v1.14.0

下载找到对应版本(如果无法下载[……]

Read more

Compose,一个用于定义和运行多个容器的工具。
首先,使用YAML文件定义一组要启动的容器,然后通过一个简单的命令来启动所有在配置文件中定义的服务。
使用Docker Compose部署应用:
(1)创建Compse文件。该文件的内容「类似于把docker run的参数写在文件中」。

web:
image: jam01/compseapp
command: python app.py
ports:
– “5000:5000”
volumns:
– .:/composeapp
links:
– redis[……]

Read more

在 x86 中,安装 Docker Compose 命令
方法一、从 GitHub 中安装(推荐)

curl -s -L “https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)” \
-o /usr/local/sbin/docker-compose

chmod +x /usr/local/sbin/docker-compose

国内最见使用的安装方法:

curl -s -[……]

Read more

设置 PROJECT NAME 信息
Project name in docker-compose.yml · Issue #1123 · docker/compose Set $PROJECT_NAME in docker-compose file – Stack Overflow Declare default environment variables in file | Docker Documentation
问题描述
在 Docker Compose 中,默认使用当前目录名作为应用名,并前缀到容器目录。
当我将 docker-compose[……]

Read more

问题描述
通常,我们本地编写 docker-compose.yml 文件,然后运行测试。但是,我们需要在 arm64 环境中进行测试,无法在本地直接运行测试。
我们希望可以在本地编写,然后本地使用 docker-compose up 直接在远程 arm 主机上运行测试。
该笔记将介绍:在本地运行 docker-compose 命令,但是在远程主机中启动服务的方法。
方法一、在上传后执行(传统方法)
在传统方法中,我们需要将 docker-compose.yaml 及相关文件,上传到远程主机,然后执行 docker-compose up 启动[……]

Read more

问题描述
在 CI/CD 中,我们使用 Docker Compose 来进行容器编排。
但是如果 docker-compose.yaml 包含 build 指令,会导致我们无法分离构建阶段与运行阶段。
该笔记将记录:在使用 Docker Compose 编排时,如何分离构建阶段与运行阶段。
解决方案
docker-compose build docker-compose push docker-compose pull docker-compose up -d
参考文献
docker-compose up | Docke[……]

Read more