debian 下简单的时间同步
2019-03-05 tech linux ntp 1 mins 497 字
以前写过一个 CentOS 下的 ntp 时间同步,centos 一般公司的服务器会使用。就我个人还是比较习惯 Debian 系的,所以我Debian 系的一些文章都是相对简易的,主要目标就是 It Just Work 即可。
说一下写这篇的背景,我给自己服务器中安装了 Etcd 集群,使用集群的时候就有一个重要的前提——时钟一致。一般的做法是在集群中指定一台机器作为ntp服务器,由这台向远端同步,其它机器同步这台。
个人服务要求不高的话,可以在所有机器中按照如下方式实现:
- 安装
$ sudo apt-get update $ sudo apt-get install ntpdate -y
-
同步
ntpdate time.windows.com
当然也可以用阿里的服务器
ntp.aliyun.com
-
定时同步 每小时同步一次
$ sudo crontab -e 在最后一行添加 5 * * * * ntpdate time.windows.com > /dev/null 2>&1
Debian 8 修改本机dns地址
2019-03-04 tech network linux 2 mins 712 字
最近架设了自用的dns服务器,修改本机的 /etc/resolv.conf 实际上并不生效,解决办法如下:
- 查看 /etc/resolv.conf 文件头部
先说说为什么/etc/resolv.conf每次重启会清理掉,通过ls -l 查看,会发现resolv.conf只是一个软链接文件,源文件位于/run/resolvconf/resolv.conf ,查看该文件会发现如下两条注释:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
上面已经说的非常清晰明了了。
解决方法
方法一:
/etc/network/interfaces中添加一行DNS信息
dns-nameservers 8.8.8.8
方法二:
编辑/etc/resolvconf/resolv.conf.d/base文件,加入DNS信息
nameserver 8.8.8.8
方法三:
编辑/etc/resolvconf/resolv.conf.d/head 文件,在其中加入DNS信息
nameserver 8.8.8.8
注:此方法虽然有用但不推荐,因为该文件中,同样有警告信息。
增加完DNS信息后,执行下面的命令生效
resolvconf -u
service networking restart
执行完该命令后,查看/etc/resovle.conf文件,会发现其DNS信息,就是我们刚刚在方法一或方法二中写的DNS信息。
使用 helm 安装 MySQL (包括持久化存储)
2019-02-27 tech docker kubernetes helm mysql 4 mins 2 图 1531 字
背景
本文介绍如何使用 helm 安装 mysql ,使用本地存储的方式。
1. 安装storage
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: local-storage-mysql
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
在这里起了名叫 local-storage-mysql
的 storage class。
在这里我们使用了 WaitForFirstConsumer
延迟绑定pv,直到 pod 被调度。
2. 安装pv绑定
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-pv-mysql
spec:
capacity:
storage: 8Gi
# volumeMode field requires BlockVolume Alpha feature gate to be enabled.
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
storageClassName: local-storage-mysql
persistentVolumeReclaimPolicy: Retain
local:
path: /app/kelu/local-storage/mysql
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- keludev06
在这里我们在 keludev06 这台机器上创建了文件夹 /app/kelu/local-storage/mysql
用于持久化存储。
在这里我们必须定义 nodeAffinity,Kubernetes Scheduler 需要使用 PV 的 nodeAffinity 描述信息来保证 Pod 能够调度到有对应 local volume 的机器上。
如果出现了这个错误 Node didn't find available persistent volumes to bind
,大多原因是因为你没有写对 hsotname,
注意在 k8s 中hostname都是小写显示的,具体参考命令行 kubectl get node -owide
3. 修改 values.yaml
去到 helm 维护的MySQL目录: https://github.com/helm/charts/tree/master/stable/mysql ,下载 values.yaml 文件。
搜索 persistence ,填充 storage class的内容。
4. 安装
helm search mysql
helm install --name mysql -f values.yaml stable/mysql --namespace kelu
安装到 kelu 这个namespace下。