在实现 Prometheus 中的联邦(federation)之前(k8s 集群构建部分)
前言
-
- k8sクラスタ内のリソース状況の監視をしたい
-
- 諸々の事情があり、クラスタ内のprometheusをシステムのリソース状況の監視に使うことが難しい
- そのためクラスタ外部とクラスタ内にそれぞれprometheusを構築し、クラスタ外のprometheusはfederation機能を用いでクラスタ内のprometheusを参照する
建立k8s集群
本次我们将使用一个Master节点和一个Worker节点的配置来构建集群。
在构建过程中,我们使用了kubeadm,并参考了官方的安装指南。
请参考以下链接:
* https://kubernetes.io/ja/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ (Kubeadm的安装)
* https://kubernetes.io/ja/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/ (使用Kubeadm创建集群)
用过的环境
-
- 使用OS: CentOS7.8
-
- masterノード
ノード名: master1
ipアドレス: 192.168.10.11
wokerノード
ノード名: woker1
ipアドレス: 192.168.10.21
热点的配置
我们将通过名称解析来配置/etc/hosts,使得彼此的节点可以相互解析。
cat <<EOF >> /etc/hosts
192.168.10.11 master1
192.168.10.21 worker1
EOF
失效swap
- swapの無効化
# swapoff -a
- swap領域のマウント無効化
# vi /etc/fstab
将swap项目的内容注释掉
安装Docker
使用Docker官方的安装脚本。
$ curl https://get.docker.com | sh
# systemctl enable docker
# systemctl start docker
kubeadm的安装
不使用nftables作为后端。
# update-alternatives --set iptables /usr/sbin/iptables-legacy
安装kubeadm、kubelet和kubectl。
我将以根权限运行以下代码。(由于使用了Here Document,因此省略了提示符)
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
#Set SELinux in permissive mode (effectively disabling it)
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet
sysctl相关的设置
以下是以root权限运行的(因为在这里用了Here文档所以省略了提示符)。
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
EOF
sysctl -p /etc/sysctl.d/k8s.conf
在我的环境下,在执行上述命令之前,需要执行以下命令。
# modprobe br_netfilter
构建集群(主节点)
本次构建将使用flannel作为CNI。
执行集群的初始化。
# kubeadm init --pod-network-cidr=10.244.0.0/16
kubectl的配置
# mkdir -p $HOME/.kube
# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# sudo chown $(id -u):$(id -g) $HOME/.kube/config
应用flannel的部署
# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml
# kubectl -n kube-system get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
coredns-66bff467f8-hx5zw 0/1 Running 0 2m15s 10.244.0.3 master1 <none> <none>
coredns-66bff467f8-mvnzl 1/1 Running 0 2m15s 10.244.0.2 master1 <none> <none>
etcd-master1 1/1 Running 0 2m26s 192.168.10.11 master1 <none> <none>
kube-apiserver-master1 1/1 Running 0 2m26s 192.168.10.11 master1 <none> <none>
kube-controller-manager-master1 1/1 Running 0 2m26s 192.168.10.11 master1 <none> <none>
kube-flannel-ds-amd64-qgldq 1/1 Running 0 43s 192.168.10.11 master1 <none> <none>
kube-proxy-ttxn8 1/1 Running 0 2m15s 192.168.10.11 master1 <none> <none>
kube-scheduler-master1 1/1 Running 0 2m26s 192.168.10.11 master1 <none> <none>
确认所有的pod都已经处于Running状态。
确认节点
确认master1的状态为Ready。
# kubectl get node
NAME STATUS ROLES AGE VERSION
master1 Ready master 3m18s v1.18.2
构建集群(主节点)
加入到k8s集群中
执行“构建集群(主节点)> 执行集群初始化”的命令后,执行以”kubeadm join”开头的命令。
# kubeadm join ....
确认节点
确认Master1和Worker1的状态是否为Ready。
# kubectl get node
NAME STATUS ROLES AGE VERSION
master1 Ready master 5m21s v1.18.2
worker1 Ready <none> 62s v1.18.2
最后
以上是集群构建的内容!下次我们将在已经构建的k8s集群内进行Prometheus的构建,并进行Prometheus的联邦设置。
【追加】
下一篇已经发布公开了。
https://qiita.com/sinnsa233048/items/7fb3ab5591c5eeecd3b4