kubernetes高可用集群环境搭建(kubeadm-v1.20.6)

网友投稿 292 2022-09-28

kubernetes高可用集群环境搭建(kubeadm-v1.20.6)

1. kubernetes高可用集群环境搭建(kubeadm-v1.20.6)

1.1 前置知识点

目前生产部署Kubernetes 集群主要有两种方式:

kubeadm

Kubeadm 是一个K8s 部署工具,提供kubeadm init 和kubeadm join,用于快速部署Kubernetes 集群。

官方地址:下载发行版的二进制包,手动部署每个组件,组成Kubernetes 集群。

Kubeadm 降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署Kubernetes 集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护。

1.2 kubeadm 部署方式介绍

kubeadm 是官方社区推出的一个用于快速部署kubernetes 集群的工具,这个工具能通过两条指令完成一个kubernetes 集群的部署:

创建一个master01 节点kubeadm init 将Node 节点加入到当前集群中$ kubeadm join

1.3 安装要求

在开始之前,部署Kubernetes 集群机器需要满足以下几个条件:

一台或多台机器,操作系统CentOS7.x-86_x64 硬件配置:2GB 或更多RAM,2 个CPU 或更多CPU,硬盘30GB 或更多 集群中所有机器之间网络互通 可以访问外网,需要拉取镜像 禁止swap 分区

1.4 最终目标

在所有节点上安装Docker 和kubeadm 部署Kubernetes 多master01 部署容器网络插件(calico) 部署高可用组件(nginx+keepalived) 部署Kubernetes Node,将节点加入Kubernetes 集群中 部署Dashboard Web 页面,可视化查看Kubernetes 资源 部署metrics-server 部署Prometheus+Grafana 部署EFK+logstash构建日志收集平台 部署Rancher管理k8s集群 部署helm v3包管理工具 部署ingress控制器 部署Harbor私有镜像仓库

1.5 准备环境

角色 IP地址 组件
master0101 192.168.225.138 apiserver、controller-manager、scheduler、etcd、calico、docker,kubectl,kubeadm,kubelet、kube-proxy
master0102 192.168.225.139 apiserver、controller-manager、scheduler、etcd、calico、docker,kubectl,kubeadm,kubelet、kube-proxy
master0103 192.168.225.140 apiserver、controller-manager、scheduler、etcd、calico、docker,kubectl,kubeadm,kubelet、kube-proxy
node01 192.168.225.141 docker,kube-proxy,kubeadm,kubelet、calico、coredns
node02 192.168.225.142 docker,kube-proxy,kubeadm,kubelet、calico
node03 192.168.225.143 docker,kube-proxy,kubeadm,kubelet、calico
Vip 192.168.225.150

1.6 环境初始化

1.6.1 检查操作系统的版本,安装规划修改所有节点hostname(所有节点操作)

#1 此方式下安装kubernetes集群要求Centos版本要在7.5或之上 [root@master01 ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)

1.6.2 配置集群节点免密登录(所有节点操作)

#1 生成ssh密钥对: [root@master01 ~]# ssh-keygen -t rsa #一路回车,不输入密码 #2 把本地的ssh公钥文件安装到远程主机对应的账号中: [root@master01 ~]# ssh-copy-id -i .ssh/id_rsa.pub master02 [root@master01 ~]# ssh-copy-id -i .ssh/id_rsa.pub master03 [root@master01 ~]# ssh-copy-id -i .ssh/id_rsa.pub node01 [root@master01 ~]# ssh-copy-id -i .ssh/id_rsa.pub node02 [root@master01 ~]# ssh-copy-id -i .ssh/id_rsa.pub node03 #其他几个节点的操作方式跟master01一致,在此只展示master01的操作方式;

1.6.3 主机名解析(所有节点操作)

为了方便集群节点间的直接调用,配置一下主机名解析,企业中推荐使用内部DNS服务器

#1 主机名成解析 编辑6台服务器的/etc/hosts文件,添加下面内容 [root@master0101 ~]# cat >> /etc/hosts <

1.6.4 时间同步(所有节点操作)

kubernetes要求集群中的节点时间必须精确一直,这里使用ntp服务从网络同步时间,企业中建议配置内部时钟同步服务器

#1 安装ntpdate命令, [root@master0101 ~]# yum install ntpdate -y #跟网络源做同步 [root@master0101 ~]# ntpdate ntp.aliyun.com #2 把时间同步做成计划任务 [root@master0101 ~]# crontab -e * */1 * * * /usr/sbin/ntpdate ntp.aliyun.com #3 重启crond服务,修改时区 [root@master0101 ~]# systemctl restart crond.service && timedatectl set-timezone Asia/Shanghai

1.6.5 禁用iptable和firewalld服务(所有节点操作)

kubernetes和docker 在运行的中会产生大量的iptables规则,为了不让系统规则跟它们混淆,直接关闭系统的规则

#1 关闭firewalld服务 [root@master0101 ~]# systemctl stop firewalld && systemctl disable firewalld #2 安装iptables服务,同时关闭iptables服务 [root@master0101 ~]# yum install -y iptables-services.x86_64 [root@master0101 ~]# systemctl stop iptables && systemctl disable iptables #3 清空iptables规则 [root@master0101 ~]# iptables -F

1.6.6 禁用selinux(所有节点操作)

selinux是linux系统下的一个安全服务,如果不关闭它,在安装集群中会产生各种各样的奇葩问题

#1 关闭selinux,注意修改完毕之后需要重启服务器才可以生效 [root@master0101 ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

1.6.7 禁用swap分区(所有节点操作)

swap分区指的是虚拟内存分区,它的作用是物理内存使用完,之后将磁盘空间虚拟成内存来使用,启用swap设备会对系统的性能产生非常负面的影响,因此kubernetes要求每个节点都要禁用swap设备,但是如果因为某些原因确实不能关闭swap分区,就需要在集群安装过程中通过明确的参数进行配置说明

#1 编辑分区配置文件/etc/fstab,注释掉swap分区一行,如果是克隆的虚拟机,需要删除UUID,注意修改完毕之后需要重启服务器 [root@master0101 ~]# vim /etc/fstsb

1.6.8 修改linux的内核参数(所有节点操作)

#1 修改linux的内核采纳数,添加网桥过滤和地址转发功能 #2 加载网桥过滤模块 [root@master01 ~]# modprobe br_netfilter #3 编辑/etc/sysctl.d/k8s.conf文件,添加如下配置: net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 #4 重新加载配置 [root@master01 ~]# sysctl -p /etc/sysctl.d/k8s.conf #5 查看网桥过滤模块是否加载成功 [root@master01 ~]# lsmod | grep br_netfilter #6 开机加载内核模块 [root@master01 ~]# echo "modprobe br_netfilter" >> /etc/profile

1.6.9 配置ipvs功能(所有节点操作)

在Kubernetes中Service有两种带来模型,一种是基于iptables的,一种是基于ipvs的两者比较的话,ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块

#1 安装ipset和ipvsadm [root@master01 ~]# yum install ipvsadm.x86_64 ipset -y #2 添加需要加载的模块写入脚本文件 [root@master01 ~]# cat < /etc/sysconfig/modules/ipvs.modules #!/bin/bash modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4 EOF #3 为脚本添加执行权限 [root@master01 ~]# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs

1.6.10 配置部署集群所需要的yum源(所有节点操作)

#1 需要的yum.repo源 ---CentOS-Base.repo ---docker-ce.repo ---epel.repo ---kubernetes.repo [root@master01 yum.repos.d]# ll total 16 -rw-r--r--. 1 root root 2523 Mar 17 09:44 CentOS-Base.repo -rw-r--r--. 1 root root 2081 Mar 22 21:43 docker-ce.repo -rw-r--r--. 1 root root 1050 Mar 22 22:43 epel.repo -rw-r--r--. 1 root root 133 Mar 22 22:23 kubernetes.repo #2 备份原有yum.repo源 [root@master01 ~]# mkdir /root/yum.bak [root@master01 ~]# mv /etc/yum.repos.d/* /root/yum.bak #3 将准备好的yum源通过scp的方式上传到集群所有节点的yum.repo目录下 ---在文末会提供yum.repo文件的下载链接 #4 更新yum源 [root@master01 ~]# yum makecache #5 配置安装基础依赖包 [root@master01 ~]# yum install -y wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack

1.6.11 安装docker(所有节点操作)

#1 查看当前镜像源中支持的docker版本 [root@master01 ~]# yum list docker-ce --showduplicates #2 安装特定版本的docker-ce,必须制定--setopt=obsoletes=0,否则yum会自动安装更高版本 [root@master01 ~]# yum install docker-ce-20.10.6 docker-ce-cli-20.10.6 containerd.io -y #3 添加一个配置文件,Docker 在默认情况下使用Vgroup Driver为cgroupfs,而Kubernetes推荐使用systemd来替代cgroupfs,同时配置docker镜像源加速 [root@master01 ~]# mkdir /etc/docker [root@master01 ~]# cat < /etc/docker/daemon.json { "exec-opts": ["native.cgroupdriver=systemd"], "registry-mirrors": ["https://kn0t2bca.mirror.aliyuncs.com"] } EOF #4 启动dokcer [root@master01 ~]# systemctl restart docker && systemctl enable docker

1.6.12 安装Kubernetes组件(所有节点操作)

#1 安装kubeadm、kubelet和kubectl [root@master01 ~]# yum install --setopt=obsoletes=0 kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6 -y #2 启动kubelet,并设置为开机自启 [root@master01 ~]# systemctl enable kubelet && systemctl start kubelet [root@master01 ~]# systemctl status kubelet #可以看到kubelet状态不是running(auto-restart)状态,这个是正常的不用管,等k8s组件起来这个kubelet就正常了。

1.6.13 准备集群镜像(所有节点操作)

#1 在安装kubernetes集群之前,必须要提前准备好集群需要的镜像,将部署集群需要的镜像通过scp的方式上传到集群的每个节点上面 [root@master01 ~]# ll -rw-r--r-- 1 root root 1083635200 Mar 17 10:00 k8simage-1-20-6.tar.gz ---在文末会提供k8simage-1-20-6.tar.gz文件的下载链接 #2 在各个节点上面使用docker命令解压集群镜像文件,不能使用tar直接去解压 [root@master01 ~]# docker load -i k8simage-1-20-6.tar.gz #3 查看解压完成后的docker镜像 [root@master01 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry.aliyuncs.com/google_containers/kube-proxy v1.20.6 9a1ebfd8124d 11 months ago 118MB registry.aliyuncs.com/google_containers/kube-controller-manager v1.20.6 560dd11d4550 11 months ago 116MB registry.aliyuncs.com/google_containers/kube-scheduler v1.20.6 b93ab2ec4475 11 months ago 47.3MB registry.aliyuncs.com/google_containers/kube-apiserver v1.20.6 b05d611c1af9 11 months ago 122MB calico/pod2daemon-flexvol v3.18.0 2a22066e9588 12 months ago 21.7MB calico/node v3.18.0 5a7c4970fbc2 13 months ago 172MB calico/cni v3.18.0 727de170e4ce 13 months ago 131MB calico/kube-controllers v3.18.0 9a154323fbf7 13 months ago 53.4MB registry.aliyuncs.com/google_containers/etcd 3.4.13-0 0369cf4303ff 19 months ago 253MB registry.aliyuncs.com/google_containers/coredns 1.7.0 bfe3a36ebd25 21 months ago 45.2MB registry.aliyuncs.com/google_containers/pause 3.2 80d28bedfe5d 2 years ago 683kB

1.6.14 配置nginx和keepalived(3个master节点操作)

#1 安装keepalived和nginx [root@master01 ~]# yum install nginx-mod-stream nginx keepalived -y #2 修改3个节点上面的keepalived配置文件,修改角色、优先级、网卡名称,其他保持不变即可,nginx配置文件不用修改 --- 在文末会提供nginx.conf和keepalived.conf文件以及keepalived健康检测脚本的下载链接 [root@master01 ~]# ll /etc/keepalived/ total 8 -rw-r--r-- 1 root root 134 Mar 22 23:16 check_nginx.sh -rw-r--r-- 1 root root 986 Mar 23 22:51 keepalived.conf [root@master01 ~]# ll /etc/nginx/nginx.conf -rw-r--r-- 1 root root 1442 Mar 22 23:12 /etc/nginx/nginx.conf #3 先启动3个节点的nginx服务,在启动keepalived服务 [root@master01 ~]# systemctl enable nginx && systemctl start nginx [root@master01 ~]# systemctl enable keepalived && systemctl start keepalived #4 查看VIP是否生成 [root@master01 ~]# ip addr 2: ens192: mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:50:56:ba:33:03 brd ff:ff:ff:ff:ff:ff inet 192.168.225.138/24 brd 192.168.225.255 scope global noprefixroute ens192 valid_lft forever preferred_lft forever inet 192.168.225.150/24 scope global secondary ens192 valid_lft forever preferred_lft forever inet6 fe80::88c2:50d5:146:e608/64 scope link noprefixroute valid_lft forever preferred_lft forever

1.6.15 集群初始化(master01节点操作)

#1 创建集群初始化文件 [root@master01 ~]# vim kubeadm-config.yaml apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration kubernetesVersion: v1.20.6 controlPlaneEndpoint: 192.168.225.150:16443 imageRepository: registry.aliyuncs.com/google_containers apiServer: certSANs: - 192.168.225.138 - 192.168.225.139 - 192.168.225.140 - 192.168.225.141 - 192.168.225.142 - 192.168.225.143 - 192.168.225.150 networking: podSubnet: 10.244.0.0/16 serviceSubnet: 10.10.0.0/16 --- apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration mode: ipvs #2 使用配置文件初始化集群 kubeadm init --config kubeadm-config.yaml --ignore-preflight-errors=SystemVerification [root@master01 ~]# mkdir -p $HOME/.kube [root@master01 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config [root@master01 ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

1.6.16 master节点加入集群(master02-03节点操作)

#1 创建目录,拷贝证书 [root@master01 ~]# cd /root && mkdir -p /etc/kubernetes/pki/etcd &&mkdir -p ~/.kube/ [root@master01 ~]# scp /etc/kubernetes/pki/ca.crt master02:/etc/kubernetes/pki/ [root@master01 ~]# scp /etc/kubernetes/pki/ca.key master02:/etc/kubernetes/pki/ [root@master01 ~]# scp /etc/kubernetes/pki/sa.key master02:/etc/kubernetes/pki/ [root@master01 ~]# scp /etc/kubernetes/pki/sa.pub master02:/etc/kubernetes/pki/ [root@master01 ~]# scp /etc/kubernetes/pki/front-proxy-ca.crt master02:/etc/kubernetes/pki/ [root@master01 ~]# scp /etc/kubernetes/pki/front-proxy-ca.key master02:/etc/kubernetes/pki/ [root@master01 ~]# scp /etc/kubernetes/pki/etcd/ca.crt master02:/etc/kubernetes/pki/etcd/ [root@master01 ~]# scp /etc/kubernetes/pki/etcd/ca.key master02:/etc/kubernetes/pki/etcd/ [root@master01 ~]# cd /root && mkdir -p /etc/kubernetes/pki/etcd &&mkdir -p ~/.kube/ [root@master01 ~]# scp /etc/kubernetes/pki/ca.crt master03:/etc/kubernetes/pki/ [root@master01 ~]# scp /etc/kubernetes/pki/ca.key master03:/etc/kubernetes/pki/ [root@master01 ~]# scp /etc/kubernetes/pki/sa.key master03:/etc/kubernetes/pki/ [root@master01 ~]# scp /etc/kubernetes/pki/sa.pub master03:/etc/kubernetes/pki/ [root@master01 ~]# scp /etc/kubernetes/pki/front-proxy-ca.crt master03:/etc/kubernetes/pki/ [root@master01 ~]# scp /etc/kubernetes/pki/front-proxy-ca.key master03:/etc/kubernetes/pki/ [root@master01 ~]# scp /etc/kubernetes/pki/etcd/ca.crt master03:/etc/kubernetes/pki/etcd/ [root@master01 ~]# scp /etc/kubernetes/pki/etcd/ca.key master0:/etc/kubernetes/pki/etcd/ #2 查看token文件,token文件的有效期为24h,过期后无法在使用该token加入集群 [root@master01 ~]# kubeadm token list TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS 6zqaxk.te6y81dkvy73j5hs 23h 2022-03-26T10:43:37+08:00 authentication,signing system:bootstrappers:kubeadm:default-node-token #3 重新生成token文件的方法 [root@master01 ~]# kubeadm token create --print-join-command #4 查看token文件的sha256字段 [root@master01 ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' #5 使用token将master02和master03加入到集群中 [root@master02 ~]# kubeadm join 192.168.225.150:16443 --token 6zqaxk.te6y81dkvy73j5hs --discovery-token-ca-cert-hash sha256:f4694c021a9c1467b40254518358f2abf5e50f775e48907f3e08502a09dcc7db --control-plane --ignore-preflight-errors=SystemVerification [root@master03 ~]# kubeadm join 192.168.225.150:16443 --token 6zqaxk.te6y81dkvy73j5hs --discovery-token-ca-cert-hash sha256:f4694c021a9c1467b40254518358f2abf5e50f775e48907f3e08502a09dcc7db --control-plane --ignore-preflight-errors=SystemVerification

1.6.17 node节点加入集群(node01-03节点操作)

#1 使用token将node01-03加入到集群中 [root@node01 ~]# kubeadm join 192.168.225.150:16443 --token 6zqaxk.te6y81dkvy73j5hs --discovery-token-ca-cert-hash sha256:f4694c021a9c1467b40254518358f2abf5e50f775e48907f3e08502a09dcc7db --ignore-preflight-errors=SystemVerification [root@node02 ~]# kubeadm join 192.168.225.150:16443 --token 6zqaxk.te6y81dkvy73j5hs --discovery-token-ca-cert-hash sha256:f4694c021a9c1467b40254518358f2abf5e50f775e48907f3e08502a09dcc7db --ignore-preflight-errors=SystemVerification [root@node03 ~]# kubeadm join 192.168.225.150:16443 --token 6zqaxk.te6y81dkvy73j5hs --discovery-token-ca-cert-hash sha256:f4694c021a9c1467b40254518358f2abf5e50f775e48907f3e08502a09dcc7db --ignore-preflight-errors=SystemVerification

1.6.18 安装calico网络插件(master01节点操作)

#1 将calico的yaml文件通过scp的方式上传到master01上面,然后使用kubectl安装calico --- 在文末会提供calico.yaml的下载链接 [root@master01 ~]# kubectl apply -f calico.yaml

1.6.19 查看集群状态(master01节点操作)

[root@master01 ~]# kubectl get node NAME STATUS ROLES AGE VERSION master01 Ready control-plane,master 35h v1.20.6 master02 Ready control-plane,master 35h v1.20.6 master03 Ready control-plane,master 22h v1.20.6 node01 Ready 24h v1.20.6 node02 Ready 24h v1.20.6 node03 Ready 24h v1.20.6

1.6.20 为node节点打标签(扩展)(master01节点操作)

#1 我们可以看到,节点列表中ROLES这块,node节点为node,如果想标识node节点,使用下面命令实现 [root@master01 ~]# kubectl label node node01 node-role.kubernetes.io/worker=worker [root@master01 ~]# kubectl label node node02 node-role.kubernetes.io/worker=worker [root@master01 ~]# kubectl label node node03 node-role.kubernetes.io/worker=worker [root@master01 ~]# kubectl get node NAME STATUS ROLES AGE VERSION master01 Ready control-plane,master 35h v1.20.6 master02 Ready control-plane,master 35h v1.20.6 master03 Ready control-plane,master 22h v1.20.6 node01 Ready worker 24h v1.20.6 node02 Ready worker 24h v1.20.6 node03 Ready worker 24h v1.20.6

1.7 集群测试

1.7.1 创建一个nginx服务

[root@master01 ~]# kubectl create deployment nginx --image=nginx:1.14-alpine deployment.apps/nginx created

1.7.2 暴露端口

[root@master01 ~]# kubectl expose deploy nginx --port=80 --target-port=80 --type=NodePort service/nginx exposed

1.7.3 查看服务

[root@master01 ~]# kubectl get pod,svc NAME READY STATUS RESTARTS AGE pod/nginx-65c4bffcb6-2qxzh 1/1 Running 0 49s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/nginx NodePort 10.10.153.8 80:31076/TCP 20s

1.7.4 查看pod

浏览器测试结果:

1.7.5 测试coredns服务是否正常

[root@master01 ~]# kubectl exec -it nginx-65c4bffcb6-2qxzh -- sh / # ping nginx PING nginx (10.10.153.8): 56 data bytes 64 bytes from 10.10.153.8: seq=0 ttl=64 time=0.066 ms 64 bytes from 10.10.153.8: seq=1 ttl=64 time=0.151 ms / # nslookup nginx.default.svc.cluster.local Name: nginx.default.svc.cluster.local Address 1: 10.10.153.8 nginx.default.svc.cluster.local #10.10.153.8 是创建的nginx的service ip

1.8 部署Dashboard Web

之前在kubernetes中完成的所有操作都是通过命令行工具kubectl完成的。其实,为了提供更丰富的用户体验,kubernetes还开发了一个基于web的用户界面(Dashboard)。用户可以使用Dashboard部署容器化的应用,还可以监控应用的状态,执行故障排查以及管理kubernetes中各种资源。

自签证书

因为自动生成的证书很多浏览器无法使用,所以自己创建证书

#1 新建证书存放目录 [root@master01 ~]# mkdir /etc/kubernetes/dashboard-certs [root@master01 ~]# cd /etc/kubernetes/dashboard-certs/ #2 创建命名空间 [root@master01 ~]# kubectl create namespace kubernetes-dashboard #3 创建key文件 [root@master01 ~]# openssl genrsa -out dashboard.key 2048 #4 证书请求 [root@master01 ~]# openssl req -days 36000 -new -out dashboard.csr -key dashboard.key -subj '/CN=dashboard-cert' #5 自签证书 [root@master01 ~]# openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt #6 创建kubernetes-dashboard-certs对象 [root@master01 ~]# kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kubernetes-dashboard

下载并修改配置文件

#1 下载配置文件 [root@master01 ~]# wget 修改配置文件,增加直接访问端口

#4 运行dashboard [root@master01 ~]# kubectl apply -f recommended.yaml namespace/kubernetes-dashboard created serviceaccount/kubernetes-dashboard created service/kubernetes-dashboard created secret/kubernetes-dashboard-csrf created secret/kubernetes-dashboard-key-holder created configmap/kubernetes-dashboard-settings created role.rbac.authorization.k8s.io/kubernetes-dashboard created clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created deployment.apps/kubernetes-dashboard created service/dashboard-metrics-scraper created deployment.apps/dashboard-metrics-scraper created

#5 查看dashboard组件状态 [root@master01 dashboard-certs]# kubectl get all -n kubernetes-dashboard NAME READY STATUS RESTARTS AGE pod/dashboard-metrics-scraper-7b59f7d4df-z24lb 1/1 Running 0 4m20s pod/kubernetes-dashboard-74d688b6bc-wd54z 1/1 Running 0 78s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/dashboard-metrics-scraper ClusterIP 10.10.42.68 8000/TCP 4m20s service/kubernetes-dashboard NodePort 10.10.172.2 443:30001/TCP 4m21s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/dashboard-metrics-scraper 1/1 1 1 4m20s deployment.apps/kubernetes-dashboard 1/1 1 1 4m20s NAME DESIRED CURRENT READY AGE replicaset.apps/dashboard-metrics-scraper-7b59f7d4df 1 1 1 4m20s replicaset.apps/kubernetes-dashboard-74d688b6bc 1 1 1 4m20s

#6 创建Dashboard管理员账号dashboard-admin.yaml,并apply [root@master01 ~]# vim dashboard-admin.yaml apiVersion: v1 kind: ServiceAccount metadata: labels: k8s-app: kubernetes-dashboard name: dashboard-admin namespace: kubernetes-dashboard

#7 赋权dashboard-admin-bind-cluster-role.yaml,并apply [root@master01 ~]# vim dashboard-admin-bind-cluster-role.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: dashboard-admin-bind-cluster-role labels: k8s-app: kubernetes-dashboard roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: dashboard-admin namespace: kubernetes-dashboard

#8 获取token信息 [root@master01 ~]# kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}'

#9 登录访问设置集群参数 [root@master01 ~]# kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/pki/ca.crt --server=" --embed-certs=true --kubeconfig=/root/shibosen-admin.conf #2 设置变量 [root@master01 ~]# DEF_NS_ADMIN_TOKEN=$(kubectl get secret dashboard-admin-token-hj6j4 -n kubernetes-dashboard -o jsonpath={.data.token}|base64 -d) #3 设置客户端认证参数 [root@master01 ~]# kubectl config set-credentials dashboard-admin --token=$DEF_NS_ADMIN_TOKEN --kubeconfig=/root/shibosen-admin.conf #4 设置安全上下文参数 [root@master01 ~]# kubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes --user=dashboard-admin --kubeconfig=/root/shibosen-admin.conf #5 设置当前上下文参数 [root@master01 ~]# kubectl config use-context dashboard-admin@kubernetes --kubeconfig=/root/shibosen-admin.conf

1.9 部署metrics-server

1.10 部署Prometheus+Grafana

1.11 部署EFK+logstash构建日志收集平台

1.12 部署Rancher管理k8s集群

1.13 部署helm v3包管理工具

1.14 部署ingress控制器

1.15 部署Harbor私有镜像仓库

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:关于swagger配置及踩坑@Api参数postion无效解决接口排序问题
下一篇:使用Azure AD密码保护策略强制消除本地AD弱密码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~