Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Kubernetes+Prometheus+Grafana部署笔记

Kubernetes+Prometheus+Grafana部署笔记

原创
作者头像
KaliArch
发布于 2018-08-16 04:09:23
发布于 2018-08-16 04:09:23
1.9K0
举报
文章被收录于专栏:KaliArchKaliArch

一、基础概念

1.1 基础概念

Kubernetes(通常写成“k8s”)Kubernetes是Google开源的容器集群管理系统。其设计目标是在主机集群之间提供一个能够自动化部署、可拓展、应用容器可运营的平台。Kubernetes通常结合docker容器工具工作,并且整合多个运行着docker容器的主机集群,Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。

功能特性:

  • 自动化容器部署与复制
  • 随时扩展或收缩容器规模
  • 组织容器成组,提供容器间的负载均衡
  • 快速更新及回滚容器版本
  • 提供弹性伸缩,如果某个容器失效就进行替换

1.2 架构图

1.3 组件

1.3.1 Master

Master节点上面主要由四个模块组成:APIServer、scheduler、controller manager、etcd

  • APIServer:APIServer负责对外提供RESTful的Kubernetes API服务,它是系统管理指令的统一入口,任何对资源进行增删改查的操作都要交给APIServer处理后再提交给etcd。如架构图中所示,kubectl(Kubernetes提供的客户端工具,该工具内部就是对Kubernetes API的调用)是直接和APIServer交互的。
  • schedule:scheduler的职责很明确,就是负责调度pod到合适的Node上。如果把scheduler看成一个黑匣子,那么它的输入是pod和由多个Node组成的列表,输出是Pod和一个Node的绑定,即将这个pod部署到这个Node上。Kubernetes目前提供了调度算法,但是同样也保留了接口,用户可以根据自己的需求定义自己的调度算法。
  • controller manager:如果说APIServer做的是“前台”的工作的话,那controller manager就是负责“后台”的。每个资源一般都对应有一个控制器,而controller manager就是负责管理这些控制器的。比如我们通过APIServer创建一个pod,当这个pod创建成功后,APIServer的任务就算完成了。而后面保证Pod的状态始终和我们预期的一样的重任就由controller manager去保证了。
  • etcd:etcd是一个高可用的键值存储系统,Kubernetes使用它来存储各个资源的状态,从而实现了Restful的API。
1.3.2 Node

每个Node节点主要由三个模块组成:kubelet、kube-proxy、runtime。

runtime。runtime指的是容器运行环境,目前Kubernetes支持docker和rkt两种容器。

  • kube-proxy:该模块实现了Kubernetes中的服务发现和反向代理功能。反向代理方面:kube-proxy支持TCPUDP连接转发,默认基于Round Robin算法将客户端流量转发到与service对应的一组后端pod。服务发现方面,kube-proxy使用etcd的watch机制,监控集群中service和endpoint对象数据的动态变化,并且维护一个service到endpoint的映射关系,从而保证了后端pod的IP变化不会对访问者造成影响。另外kube-proxy还支持session affinity。
  • kubelet:Kubelet是Master在每个Node节点上面的agent,是Node节点上面最重要的模块,它负责维护和管理该Node上面的所有容器,但是如果容器不是通过Kubernetes创建的,它并不会管理。本质上,它负责使Pod得运行状态与期望的状态一致。
1.3.3 Pod

Pod是k8s进行资源调度的最小单位,每个Pod中运行着一个或多个密切相关的业务容器,这些业务容器共享这个Pause容器的IP和Volume,我们以这个不易死亡的Pause容器作为Pod的根容器,以它的状态表示整个容器组的状态。一个Pod一旦被创建就会放到Etcd中存储,然后由Master调度到一个Node绑定,由这个Node上的Kubelet进行实例化。

每个Pod会被分配一个单独的Pod IP,Pod IP + ContainerPort 组成了一个Endpoint。

1.3.4 Service

Service其功能使应用暴露,Pods 是有生命周期的,也有独立的 IP 地址,随着 Pods 的创建与销毁,一个必不可少的工作就是保证各个应用能够感知这种变化。这就要提到 Service 了,Service 是 YAML 或 JSON 定义的由 Pods 通过某种策略的逻辑组合。更重要的是,Pods 的独立 IP 需要通过 Service 暴露到网络中。

二、安装部署

2.1 kubernetes安装部署

安装有较多方式,在此使用二进制安装和利用kubadm进行安装部署

2.1.1 二进制安装部署k8s
  • 环境介绍

| 名称 | 主机名称 | IP地址 |安装软件包|系统版本

| -------- | -------- | -------- |

| kubernets server | master | 172.16.0.67 |etcd,kube-apiserver,kube-controller-manager,kube-scheduler|CentOS7.3 64位

| kubernets node1 | node01 | 172.16.0.66 |kubelet,kube-proxy,docker|CentOS7.3 64位

| kubernets node1 | node02 | 172.16.0.68 |kubelet,kube-proxy,docker|CentOS7.3 64位

2.1.1.1 服务端安装配置
  • master服务器安装etcdyum install etcd -y配置etcd,并启动服务器配置开机自启动
  • 下载软件包,创建目录拷贝文件cd /tmp && wget -c https://dl.k8s.io/v1.8.13/kubernetes-server-linux-amd64.tar.gz tar -zxf kubernetes-server-linux-amd64.tar.gz mkdir -p /opt/kubernetes/{bin,cfg} mv kubernetes/server/bin/{kube-apiserver,kube-scheduler,kube-controller-manager,kubectl} /opt/kubernetes/bin
  • 创建apiserver配置文件
代码语言:txt
AI代码解释
复制
cat > /opt/kubernetes/cfg/kube-apiserver<<EOF
KUBE_LOGTOSTDERR='--logtostderr=true'
KUBE_LOG_LEVEL="--v=4"
KUBE_ETCD_SERVERS="--etcd-servers=http://172.16.0.67:2379"
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_API_PORT="--insecure-port=8080"
KUBE_ADVERTISE_ADDR="--advertise-address=172.16.0.67"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.10.10.0/24"
EOF
  • 创建apiserver服务文件
代码语言:txt
AI代码解释
复制
cat >/lib/systemd/system/kube-apiserver.service<<EOF
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kube-apiserver
#ExecStart=/opt/kubernetes/bin/kube-apiserver ${KUBE_APISERVER_OPTS}
ExecStart=/opt/kubernetes/bin/kube-apiserver \
\${KUBE_LOGTOSTDERR} \
\${KUBE_LOG_LEVEL} \
\${KUBE_ETCD_SERVERS} \
\${KUBE_API_ADDRESS} \
\${KUBE_API_PORT} \
\${KUBE_ADVERTISE_ADDR} \
\${KUBE_ALLOW_PRIV} \
\${KUBE_SERVICE_ADDRESSES}
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
  • 启动服务设置开机自启动
代码语言:txt
AI代码解释
复制
systemctl daemon-reload
systemctl enable kube-apiserver
systemctl start kube-apiserver
  • 配置scheduler
代码语言:txt
AI代码解释
复制
cat >/opt/kubernetes/cfg/kube-scheduler <<EOF
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=4"
KUBE_MASTER="--master=172.16.0.67:8080"
KUBE_LEADER_ELECT="--leader-elect"
EOF
  • 创建服务器启动文件
代码语言:txt
AI代码解释
复制
cat>/lib/systemd/system/kube-scheduler.service<<EOF
[Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kube-scheduler
ExecStart=/opt/kubernetes/bin/kube-scheduler \
\${KUBE_LOGTOSTDERR} \
\${KUBE_LOG_LEVEL} \
\${KUBE_MASTER} \
\${KUBE_LEADER_ELECT}
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
  • 启动服务
代码语言:txt
AI代码解释
复制
systemctl daemon-reload
systemctl enable kube-scheduler
systemctl restart kube-scheduler
  • 创建contorller-manager配置文件
代码语言:txt
AI代码解释
复制
cat > /opt/kubernetes/cfg/kube-controller-manager<<EOF
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=4"
KUBE_MASTER="--master=172.16.0.67:8080"
EOF
  • 创建系统启动文件
代码语言:txt
AI代码解释
复制
cat > /lib/systemd/system/kube-controller-manager.service<<EOF
[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kube-controller-manager
ExecStart=/opt/kubernetes/bin/kube-controller-manager \
\${KUBE_LOGTOSTDERR} \
\${KUBE_LOG_LEVEL} \
\${KUBE_MASTER} \
\${KUBE_LEADER_ELECT}
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
  • 启动服务
代码语言:txt
AI代码解释
复制
systemctl daemon-reload
systemctl enable kube-controller-manager
systemctl start kube-controller-manager

至此master就已经配置完成,如若配置中有错误,可以通过#journalctl -u 服务名称查看报错,

为方便使用添加环境变量

代码语言:txt
AI代码解释
复制
echo "export PATH=\$PATH:/opt/kubernetes/bin" >> /etc/profile
source /etc/profile
2.1.1.2 node节点安装配置
  • 安装配置docker
代码语言:txt
AI代码解释
复制
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum makecache fast
yum install docker-ce -y
  • 下载安装kubenets-node软件包
代码语言:txt
AI代码解释
复制
cd /tmp && wget https://dl.k8s.io/v1.8.13/kubernetes-node-linux-amd64.tar.gz
tar -zxf kubernetes-node-linux-amd64.tar.gz
mkdir -p /opt/kubernetes/{bin,cfg}
mv kubernetes/node/bin/{kubelet,kube-proxy} /opt/kubernetes/bin/
  • 创建kubeconfig配置文件
代码语言:txt
AI代码解释
复制
cat > /opt/kubernetes/cfg/kubelet.kubeconfig <<EOF
apiVersion: v1
kind: Config
clusters:
  - cluster:
      server: http://172.16.0.67:8080
    name: local
contexts:
  - context:
      cluster: local
    name: local
current-context: local
EOF
  • 创建配置文件
代码语言:txt
AI代码解释
复制
	cat> /opt/kubernetes/cfg/kubelet  <<EOF
	# 启用日志标准错误
	KUBE_LOGTOSTDERR="--logtostderr=true"
	# 日志级别
	KUBE_LOG_LEVEL="--v=4"
	# Kubelet服务IP地址
	NODE_ADDRESS="--address=172.16.0.66"
	# Kubelet服务端口
	NODE_PORT="--port=10250"
	# 自定义节点名称
	NODE_HOSTNAME="--hostname-override=172.16.0.66"
	# kubeconfig路径,指定连接API服务器
	KUBELET_KUBECONFIG="--kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig"
	# 允许容器请求特权模式,默认false
	KUBE_ALLOW_PRIV="--allow-privileged=false"
	# DNS信息
	KUBELET_DNS_IP="--cluster-dns=10.10.10.2"
	KUBELET_DNS_DOMAIN="--cluster-domain=cluster.local"
	# 禁用使用Swap
	KUBELET_SWAP="--fail-swap-on=false"
	EOF
  • 创建systemd服务文件
代码语言:txt
AI代码解释
复制
cat>/lib/systemd/system/kubelet.service<<EOF
[Unit]
Description=Kubernetes Kubelet
After=docker.service
Requires=docker.service
[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kubelet
ExecStart=/opt/kubernetes/bin/kubelet \
\${KUBE_LOGTOSTDERR} \
\${KUBE_LOG_LEVEL} \
\${NODE_ADDRESS} \
\${NODE_PORT} \
\${NODE_HOSTNAME} \
\${KUBELET_KUBECONFIG} \
\${KUBE_ALLOW_PRIV} \
\${KUBELET_DNS_IP} \
\${KUBELET_DNS_DOMAIN} \
\${KUBELET_SWAP}
Restart=on-failure
KillMode=process
[Install]
WantedBy=multi-user.target
EOF
  • 启动服务 systemctl daemon-reload systemctl enable kubelet systemctl start kubelet
  • node节点安装kube-proxy

创建配置文件

代码语言:txt
AI代码解释
复制
cat>/opt/kubernetes/cfg/kube-proxy  <<EOF
# 启用日志标准错误
KUBE_LOGTOSTDERR="--logtostderr=true"
# 日志级别
KUBE_LOG_LEVEL="--v=4"
# 自定义节点名称
NODE_HOSTNAME="--hostname-override=172.16.0.66"
# API服务地址
KUBE_MASTER="--master=http://172.16.0.67:8080"
EOF

创建systemd服务文件

代码语言:txt
AI代码解释
复制
cat > /lib/systemd/system/kube-proxy.service<<EOF
[Unit]
Description=Kubernetes Proxy
After=network.target
[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kube-proxy
ExecStart=/opt/kubernetes/bin/kube-proxy \
\${KUBE_LOGTOSTDERR} \
\${KUBE_LOG_LEVEL} \
\${NODE_HOSTNAME} \
\${KUBE_MASTER}
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF

启动服务

代码语言:txt
AI代码解释
复制
systemctl daemon-reload
systemctl enable kube-proxy
systemctl restart kube-proxy

其他节点加入集群与node01方式相同,但需修改kubelet的--address和--hostname-override选项为本机IP即可。

2.1.2 利用kubeadm安装部署k8s
2.1.2.1 server端配置
  • 安装docker
代码语言:txt
AI代码解释
复制
yum install -y docker
systemctl enable docker && systemctl start docker
  • 配置并安装kubeadm源
代码语言:txt
AI代码解释
复制
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
  • 配置k8s配置文件
代码语言:txt
AI代码解释
复制
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
  • yum安装并启动服务
代码语言:txt
AI代码解释
复制
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet

systemctl daemon-reload
systemctl restart kubelet
  • 初始化创建集群kubeadm init --pod-network-cidr=10.244.0.0/16

--apiserver-advertise-address 指明用 Master 的哪个 interface 与 Cluster 的其他节点通信。如果 Master 有多个 interface,建议明确指定,如果不指定,kubeadm 会自动选择有默认网关的 interface。

--pod-network-cidr 指定 Pod 网络的范围。Kubernetes 支持多种网络方案,而且不同网络方案对 --pod-network-cidr 有自己的要求,这里设置为 10.244.0.0/16 是因为我们将使用 flannel 网络方案,必须设置成这个 CIDR

命令执行完成会返回提示如何注册其他节点到 Cluster,此处需要记录下token值,或整条命令。

  • 配置kubectl
代码语言:txt
AI代码解释
复制
# 创建用户
useradd xuel
passwd xuel
# 切换到普通用户
su - xuel    
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 配置环境变量
export KUBECONFIG=/etc/kubernetes/admin.conf
echo "source <(kubectl completion bash)" >> ~/.bashrc

建议用普通用户操作kubectl

  • 部署flannel 安装 Pod 网络,要让 Kubernetes Cluster 能够工作,必须安装 Pod 网络,否则 Pod 之间无法通信。
代码语言:txt
AI代码解释
复制
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
2.1.2.2 node端配置

在需要加入集群的node节点也需要安装docker 和 kubeadm ,启动kubelet服务等操作,和master节点一样,在此就省略。

  • 加入集群 此条命令为kubeadm init记录的命令 kubeadm join 172.16.0.64:6443 --token dt5tet.26peoqdwftx7yafv --discovery-token-ca-cert-hash sha256:5b4030d19662122204ff78a4fd0ac496b739a9945517deca67a9384f0bab2b21
2.1.2.3 测试查看
  • 在master 执行
代码语言:txt
AI代码解释
复制
kubectl get nodes
kubectl get pod --all-namespaces

2.2 Prometheus+Grafana的监控部署

2.2.1 master/node节点环境部署
  • 在master可以进行安装部署 安装git,并下载相关yaml文件git clone https://github.com/redhatxl/k8s-prometheus-grafana.gitdocker pull prom/node-exporter docker pull prom/prometheus:v2.0.0 docker pull grafana/grafana:4.2.0
  • 在node节点下载监控所需镜像
2.2.2 采用daemonset方式部署node-exporter组件
代码语言:txt
AI代码解释
复制
kubectl create -f  node-exporter.yaml 
2.2.3 部署prometheus组件
2.2.3.1 rbac文件
代码语言:txt
AI代码解释
复制
kubectl create -f  k8s-prometheus-grafana/prometheus/rbac-setup.yaml
2.2.3.2 以configmap的形式管理prometheus组件的配置文件
代码语言:txt
AI代码解释
复制
kubectl create -f  k8s-prometheus-grafana/prometheus/configmap.yaml 
2.2.3.3 Prometheus deployment 文件
代码语言:txt
AI代码解释
复制
kubectl create -f  k8s-prometheus-grafana/prometheus/prometheus.deploy.yml 
2.2.3.4 Prometheus service文件
代码语言:txt
AI代码解释
复制
kubectl create -f  k8s-prometheus-grafana/prometheus/prometheus.svc.yml 
2.2.4 部署grafana组件
2.2.4.1 grafana deployment配置文件
代码语言:txt
AI代码解释
复制
kubectl create -f   k8s-prometheus-grafana/grafana/grafana-deploy.yaml
2.2.4.2 grafana service配置文件
代码语言:txt
AI代码解释
复制
kubectl create -f   k8s-prometheus-grafana/grafana/grafana-svc.yaml
2.2.4.3 grafana ingress配置文件
代码语言:txt
AI代码解释
复制
kubectl create -f   k8s-prometheus-grafana/grafana/grafana-ing.yaml
2.2.5 WEB界面配置

查看node-exporter

http://47.52.166.125:31672/metrics

prometheus对应的nodeport端口为30003,通过访问http://47.52.166.125:30003/target 可以看到prometheus已经成功连接上了k8s的apiserver

通过端口进行granfa访问,默认用户名密码均为admin

添加数据源

导入面板,可以直接输入模板编号315在线导入,或者下载好对应的json模板文件本地导入,面板模板下载地址https:///dashboards/315

查看展示效果

三、测试

3.1 节点状态查看

  • 在master查看nodes节点
  • 查看组件状态

3.2 部署测试实例

  • 部署实例
  • 删除kubectl delete deployment apache 查看具体详细事件 kubectl get pods -o wide
  • 创建svckubectl expose deployment nginx --port=88 --target-port=80 --type=NodePort
  • 集群外单个节点测试

3.3 部署web-ui

配置kubernetes-dashboard.yaml

代码语言:txt
AI代码解释
复制
cat >kubernetes-dashboard.yaml<<EOF
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kubernetes-dashboard
  template:
    metadata:
      labels:
        app: kubernetes-dashboard
      # Comment the following annotation if Dashboard must not be deployed on master
      annotations:
        scheduler.alpha.kubernetes.io/tolerations: |
          [
            {
              "key": "dedicated",
              "operator": "Equal",
              "value": "master",
              "effect": "NoSchedule"
            }
          ]
    spec:
      containers:
      - name: kubernetes-dashboard
        image: registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.7.0
        imagePullPolicy: Always
        ports:
        - containerPort: 9090
          protocol: TCP
        args:
           - --apiserver-host=http://172.16.0.67:8080   #配置为apiserver 地址
        livenessProbe:
          httpGet:
            path: /
            port: 9090
          initialDelaySeconds: 30
          timeoutSeconds: 30

---

kind: Service
apiVersion: v1
metadata:
  labels:
    app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 9090
  selector:
    app: kubernetes-dashboard
EOF
  • 查看dashboard运行在那个具体的nodes内
  • 查看web界面

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
prometheus 告警
告警能力在Prometheus的架构中被划分成两个独立的部分。如下所示,通过在Prometheus中定义AlertRule(告警规则),Prometheus会周期性的对告警规则进行计算,如果满足告警触发条件就会向Alertmanager发送告警信息。
张琳兮
2020/02/07
6.3K4
【玩转腾讯云】记一次容器服务日志处理过程
在目前小程序为主的大背景下,有客户大部分业务在腾讯云,使用的大部分为容器服务,在大规模的使用容器下,需要对容器内业务的日志采集及分析,在腾讯云对应容器服务的日志提供了两种消费方式:Kafka、日志服务CLS。
KaliArch
2021/04/23
8350
【玩转腾讯云】记一次容器服务日志处理过程
大数据平台CDH搭建
Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称“CDH”),基于Web的用户界面,支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop,简化了大数据平台的安装、使用难度。
KaliArch
2018/06/01
5.5K0
大数据平台CDH搭建
Hadoop2.6+Zookper3.4+Hbase1.0部署安装
修改hbase-env.sh,添加java环境变量和生命使用外部zookeeper
KaliArch
2018/05/23
4210
Hadoop2.6+Zookper3.4+Hbase1.0部署安装
hadoop完全分布式部署
是一个框架,允许跨越计算机集群的大数据及分布式处理,使用简单的编程模型(mapreduce)
KaliArch
2018/05/23
8761
hadoop完全分布式部署
大数据平台HDP搭建
在ambari的setup中我们可以选择使用默认的postgresql,也可以自定义使用其他数据库,此处选用mariadb,便于后期管理维护
KaliArch
2018/05/29
2.6K3
大数据平台HDP搭建
Docker+Jenkins+GIT+Tomcat实战持续化集成
| Docker-server | 172.20.6.20 |Docker宿主机
KaliArch
2018/04/22
1.9K1
Docker+Jenkins+GIT+Tomcat实战持续化集成
Docker+Jenkins+Gitlab+Django应用部署实践
在互联网应用快速更新迭代的大背景下,传统的人工手动或简单脚本已经不能适应此变化,此时Devops为我们提供了良好的解决方案,应用好CI/CD可以大大的方便我们的日常工作,自动化快速的持续集成/持续交付为我们带来了应用开放的更快速度、更好的稳定性和更强的可靠性。
KaliArch
2019/01/01
1.5K0
Docker+Jenkins+Gitlab+Django应用部署实践
Serverless初探
无服务器计算是指开发者在构建和运行应用时无需管理服务器等基础设施,应用被解耦为细粒度的函数,函数是部署和运行的基本单位。用户只为实际使用的资源付费。这些代码完全由事件触发(event-trigger),平台根据请求自动平行调整服务资源,拥有近乎无限的扩容能力,空闲时则没有任何资源在运行。代码运行无状态,可以轻易实现快速迭代、极速部署。
KaliArch
2018/08/31
11.3K0
Serverless初探
HTTP 协议Note
名称含义:HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写。
KaliArch
2018/06/24
4430
HTTP 协议Note
ZABBIX监控每秒业务状态
有客户监控MySQL的公网延迟,细粒度到每秒,对你没听错是每秒,云平台级别的监控阿里云/腾讯云虽都支持自定义监控,但是限于数据的存储,粒度最小为每一分钟,阿里云免费云监控频率是5分钟,收费的粒度才可调至1分钟,对此想到利用ZABBIX来进行每一秒的数据上报,最终利用其绘图来进行展示。在此抛砖引玉,其他自定义监控均为此类方法,只需要简单修改脚本获取到需要上报的值即可。
KaliArch
2018/08/28
2.2K0
ZABBIX监控每秒业务状态
Linux系统进程CPU使用率限制脚本
一、背景 近日在客户系统运维中发现,有系统在定时脚本执行期间会将Linux系统CPU利用率跑满,导致其他服务受到影响,故查阅资料发现有大神写的CPU利用率限制程序。 地址:CPU Usage Limiter for Linux 根据此编写脚本,配合定时任务放置在服务器上,达到限制程序CPU情况,可根据自己系统CPU核心数进行参数配置,会记录CPU超过阀值的日志,可供后期进行查看分析。 二、脚本 GIT地址:cpulimit.sh #!/bin/bash # auth:kaliarch # func:sys
KaliArch
2018/11/16
3.7K0
Linux系统进程CPU使用率限制脚本
Python实现端口检测
在平时工作中有遇到端口检测,查看服务端特定端口是否对外开放,常用nmap,tcping,telnet等,同时也可以利用站长工具等web扫描端口等。
KaliArch
2018/07/24
2.2K0
Python实现端口检测
Python利用sphinx构建个人博客
一、基础概念 利用sphinx+pandoc+github+readthedocs构建个人博客 Sphinx: 是一个基于ReStructuredText的文档生成工具,可以令人轻松的撰写出清晰且优美的文档, 由Georg Brandl在BSD许可证下开发。新版的Python文档就是由Sphinx生成的,并且它已成为Python项目首选的文档工具,同时它对C/C++项目也有很好的支持;并计划对其它开发语言添加特殊支持。 Read the Docs是一个在线文档托管服务,可以从各种版本控制系统中导入文档。支持
KaliArch
2018/10/31
2.4K1
Python利用sphinx构建个人博客
Python实现翻译小工具
利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面。
KaliArch
2018/06/05
9155
Python实现翻译小工具
Python构建企业微信自动消息转发服务端
目前有在项目分组,就小组成员中,微信群消息回复较多的情况下,想根据组来转发特定消息,包含文字、图片、语言等。在此只是自己实现仅供参考,可以根据自身需求修改更多功能。
KaliArch
2018/08/10
3.4K0
Python构建企业微信自动消息转发服务端
Python字符串,列表
字符串: 字符串的创建: 单引号, 双引号 ,三引号 <注意: 转义字符的使用> 字符串的特殊性: 索引 切片 连接 重复 成员操作符(in, not in)
py3study
2020/01/14
1.1K0
docker 挂载文件不同步问题记录
# docker 挂载文件不同步问题记录 ```bash 作者: 张首富 时间: 2020-05-09 晚 w x: y18163201 ``` ## 起因 今天上午开发给我反应一个问题,所在宿主机
张琳兮
2020/05/09
4.3K1
ProxySQL!像C罗一样的强大!
作者 | 张甦, 数据库领域的专家和知名人士、图书《MySQL王者晋级之路》作者,51CTO 专家博主。近10年互联网线上处理及培训经验,专注于 MySQL 数据库,对 MongoDB、Redis 等 NoSQL 数据库以及 Hadoop 生态圈相关技术有深入研究,具备非常丰富的理论与实战经验。
数据和云
2018/07/27
1.4K0
ProxySQL!像C罗一样的强大!
Python构建私有代理IP库
至此我们就利用Python构建了一个属于自己的私有代理库,在进行爬去的时候可方便从数据库中获取使用。
KaliArch
2018/04/21
3K5
Python构建私有代理IP库
相关推荐
prometheus 告警
更多 >
交个朋友
加入HAI高性能应用服务器交流群
探索HAI应用新境界 共享实践心得
加入架构与运维学习入门群
系统架构设计入门 运维体系构建指南
加入架构与运维工作实战群
高并发系统设计 运维自动化实践
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档