在实现 Prometheus 中的联邦(federation)之前(k8s 集群构建部分)

前言

    • k8sクラスタ内のリソース状況の監視をしたい

 

    • 諸々の事情があり、クラスタ内のprometheusをシステムのリソース状況の監視に使うことが難しい

 

    そのためクラスタ外部とクラスタ内にそれぞれprometheusを構築し、クラスタ外のprometheusはfederation機能を用いでクラスタ内のprometheusを参照する
prometheus-fedaration.png

建立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

广告
将在 10 秒后关闭
bannerAds