分类 自动部署 中的文章

K8S | StatefulSet基本原理

背景

用户通过 Deployment、ReplicationController 可以方便地在 kubernetes 中部署一套高可用、可扩展的分布式无状态服务。这类应用不在本地存储数据,通过简单的负载均衡策略可实现请求分发。随着 k8s 的普及和云原生架构的兴起,越来越多的人希望把数据库这类有状态服务也通过 k8s 进行编排。但因为有状态服务的复杂性,这一过程并不容易。本文将以最流行的开源数据库 MySQL 为例,介绍如何在 k8s 上部署运维有状态服务。本文所作的调研基于k8s 1.18

……

阅读全文

K8S | 创建第一个应用

使用k8s部署第一个应用

创建一个nginx.yaml文件

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  # 指定 label,便于检索
  labels:
    app: nginx
spec:
  containers:
    - name: nginx
      # 指定镜像
      image: nginx:alpine
      # 指定暴露端口
      ports:
        - containerPort: 80

---
# 创建网络服务
apiVersion: v1
kind: Service
metadata:
  name: kube-node-service
  labels:
    name: kube-node-service
spec:
  type: NodePort      #这里代表是NodePort类型的
  ports:
    - port: 80          #这里的端口和clusterIP(10.97.114.36)对应,即10.97.114.36:80,供内部访问。
      targetPort: 80  #端口一定要和container暴露出来的端口对应,nodejs暴露出来的端口是8081,所以这里也应是8081
      protocol: TCP
      nodePort: 32143   # 所有的节点都会开放此端口,此端口供外部调用。

  selector:
    app: nginx          #这里选择器一定要选择容器的标签,之前写name:kube-node是错的。

执行指令:

……

阅读全文

Docker | 远程访问加密

docker的远程访问

方法一 :编辑docker.service文件 编辑docker.service文件

sudo vim /lib/systemd/system/docker.service

修改ExecStart行为下面内容

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock 

重新加载docker配置

sudo systemctl daemon-reload // 1,加载docker守护线程
sudo systemctl restart docker // 2,重启docker

方法二:修改daemon.json的配置 下面修改daemon.json的配置

……

阅读全文

Docker | web管理界面portainer

拉取镜像

$ docker pull portainer/portainer

运行启动portainer

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /home/docker/portainer:/data --name portainer --restart=always portainer/portainer

admin
bigant.cn

汉化

Portainer-CN.zip
百度云盘: https://pan.baidu.com/s/13ra6jXHR_7vajLLlf5GVEw 提取码: nzue
新建文件夹命名为public,把Portainer-CN.zip解压至里面。 2、public文件夹传输至系统根目录 3、然后按需执行以下命令 x86-64系统使用

……

阅读全文

K8S | 集群资源监控 heapster

安装heapster的原因

查看dashboard状态

$ sudo kubectl get pods --all-namespaces | grep dashboard
kubernetes-dashboard   dashboard-metrics-scraper-6b4884c9d5-mvnb9   1/1     Running   0          40m
kubernetes-dashboard   kubernetes-dashboard-d7f7f565d-zhpsc         1/1     Running   0          40m

查看dashboard的日志

$ sudo  kubectl logs -f -n kubernetes-dashboard kubernetes-dashboard-d7f7f565d-zhpsc

日志遇到这样的情况

No metric client provided. Skipping metrics.
2020/08/03 09:02:22 [2020-08-03T09:02:22Z] Outcoming response to 192.168.84.241:40086 with 200 status code
2020/08/03 09:02:23 Metric client health check failed: the server is currently unable to handle the request (get services dashboard-metrics-scraper). Retrying in 30 seconds.

下载heapster的代码

直接现在Github上的最新代码。

……

阅读全文

K8S | Dashboard界面管理

安装部署Dashboard

通过一下命令来部署, recommended.yaml

$ sudo kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml

https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml这个地址却很难打开,如果能打开,直接执行即可,如果不能,可以这样做:

……

阅读全文

K8S | 安装

安装k8s前的准备工作

环境

  • ubuntu18.04
  • docker

关闭 swap

暂时关闭

$ swapoff -a

永久关闭 注释掉这一行

sudo vim /etc/fstab 
# /swapfile none swap sw 0 0

重启机器

sudo reboot

docker 的配置

安装完成之后需要进行一些配置,包括 切换docker下载源为国内镜像站 以及 修改cgroups。
cgroups是一个进程隔离工具 docker就是用它来实现容器的隔离的。docker 默认使用的是cgroupfs,而 k8s 也用到了一个进程隔离工具systemd,如果使用两个隔离组的话可能会引起异常,所以我们要把 docker 的也改成systemd。 编辑daemon.json:

……

阅读全文