栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Kubernetes配置与集群监控的搭建

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kubernetes配置与集群监控的搭建

Kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。

安装并配置Kubernetes 安装Docker

docker的安装流程主要参考官方文档。如果下载速度过慢,也可以参考我的这篇文章更换国内源。

查看系统架构

首先为了找到我们需要的正确版本的docker,需要查看系统架构。

uname -a
安装docker

这里安装的docker的版本号为5:19.03.6~3-0~ubuntu-bionic。

sudo apt-get install docker-ce=5:19.03.6~3-0~ubuntu-bionic docker-ce-cli=5:19.03.6~3-0~ubuntu-bionic containerd.io
配置主节点

首先,我们需要完成master节点的环境配置。

安装kubeadmin,kubectl,kubelet

参考官网连接。我们安装的kubeadmin kubectl kubelet版本号为v1.17.3。

初始化控制层节点

参考官网连接。

安装节点网络插件(Pod network add-on)

为了管理复杂的集群网络,使得未来集群中的Node和Pod可以按照我们的需要配置网络结构,需要安装一些网络插件。这里展示的步骤是安装常用的calico插件。

kubeadm init --pod-network-cidr=192.168.0.0/16
# 以管理员身份运行则运行
export KUBECONFIG=/etc/kubernetes/admin.conf
# 若非管理员身份
# mkdir -p $HOME/.kube
# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://docs.projectcalico.org/v3.11/manifests/calico.yaml

期间如果报错提示需要关闭swap,运行

swapoff -a
配置worker节点

有了master节点后,还需要加入工作节点才能构成一个集群。

worker节点加入
kubeadm join 172.31.79.158:6443 --token  
    --discovery-token-ca-cert-hash sha256:
使用命令生成worker的命令
kubeadm token create --print-join-command
常用命令 查看pods列表
kubectl get pods -A
查看pod详细信息

如果有存在pending状态的节点,使用describe命令查看其对应events。

kubectl describe pods -A
配置集群监控

prometheus是集群中非常常用的性能监控服务。

安装prometheus 拉取 kube-prometheus
git clone https://github.com/coreos/kube-prometheus.git
配置prometheus组件
kubectl create -f manifests/setup
until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done
kubectl create -f manifests/
暴露端口

Prometheus

kubectl --namespace monitoring port-forward svc/prometheus-k8s 9090

然后可以通过 http://localhost:9090来访问Prometheus。
Grafana

kubectl --namespace monitoring port-forward svc/grafana 3000

然后可以通过http://localhost:3000 来访问Grafana,默认的用户名密码均为admin。

警告管理

kubectl --namespace monitoring port-forward svc/alertmanager-main 9093

然后可以通过http://localhost:9093来访问。

对外暴露服务端口

为了在集群之外的机器上可以访问到上面的监控服务,我们还需要将网络模式配置为NodePort。

kubectl patch svc -n monitoring prometheus-k8s --type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"}]'

kubectl patch svc -n monitoring grafana --type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"}]'

kubectl patch svc -n monitoring alertmanager-main --type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"}]'
常见问题 本地端口访问异常

如果在安装期间报错The connection to the server localhost:8080 was refused,与安装节点网络插件一样,运行

# 以管理员身份运行则运行
export KUBECONFIG=/etc/kubernetes/admin.conf
# 若非管理员身份
# mkdir -p $HOME/.kube
# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# sudo chown $(id -u):$(id -g) $HOME/.kube/config
taints相关问题

在这篇文章提到了相关问题的解决方法,一般执行命令kubectl taint nodes node1 key:NoSchedule-即可。这条命令表示将node1上的NoSchedule这一标记给去除。这种标记用来表示不会将任务调度至该节点,可以起到保护特定节点的作用)。

其他 查看当前网络服务监听情况

我们可以使用netstat -tnlp来查看当前服务器的端口使用情况。

其中,Program name为kube-proxy的服务就是通过port-forward建立的代理,指向某个pod的端口。

查看当前K8s网络当中的服务

我们可以使用命令kubectl get svc -A来查看集群中的服务列表。

可以看到,其中grafana、prometheus-k8s和alertmanager-main三个服务的TYPE已经修改成了NodePort,在PORT(S)部分冒号前面的是pod内部端口,访问冒号后面的是外网端口。分别可以用curl localhost:${port}和curl ${ip}:${port}来进行访问。

查看/更改服务配置
kubectl get svc -n monitoring grafana -o yaml


以下的命令展示了如何把服务配置输出到文件,在文件中修改之后可以用第二行命令来更新现有服务配置。

kubectl get svc -n monitoring alertmanager-main -o yaml > alertmanager-main.yaml
kubectl patch svc -n monitoring alertmanager-main --patch "$(cat alertmanager-main.yaml)"
参考资料

https://kubernetes.io/zh/

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/456976.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号