配置系统环境 查看系统版本 1 [root@localhost]# cat /etc/centos-release
配置网络(根据自己本地的网络环境设置主机IP地址) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [root@localhost ~] TYPE =EthernetPROXY_METHOD =noneBROWSER_ONLY =no BOOTPROTO =staticDEFROUTE =yes IPV4_FAILURE_FATAL =no IPV6INIT =yes IPV6_AUTOCONF =yes IPV6_DEFROUTE =yes IPV6_FAILURE_FATAL =no IPV6_ADDR_GEN_MODE =stable-privacyNAME =enp0s3UUID =039303 a5-c70d-4973 -8 c91-97 eaa071c23dDEVICE =enp0s3ONBOOT =yes IPADDR =192.168 .1.31 NETMASK =255.255 .255.0 GATEWAY =192.168 .122.1 DNS1 =223.5 .5.5
设置主机名 1 2 3 hostnamectl set-hostname k8s-master01 hostnamectl set-hostname k8s-node01 hostnamectl set-hostname k8s-node02
添加并启动源 1 2 3 4 5 6 7 8 9 10 11 12 13 14 yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm -y sed -i "s@mirrorlist@#mirrorlist@g" /etc/yum.repos.d/elrepo.repo sed -i "[email protected] /[email protected] /elrepo@g" /etc/yum.repos.d/elrepo.repo yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm -y sed -i "s@mirrorlist@#mirrorlist@g" /etc/yum.repos.d/elrepo.repo sed -i "[email protected] /[email protected] /elrepo@g" /etc/yum.repos.d/elrepo.repo yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
配置yum源 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 sed -i 's/cn.archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.listsudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \ -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos|g' \ -i.bak \ /etc/yum.repos.d/CentOS-*.reposudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \ -e 's|^#baseurl=http://mirror.centos.org/$contentdir|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos|g' \ -i.bak \ /etc/yum.repos.d/CentOS-*.repo sed -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://mirror.centos.org/\$contentdir|baseurl=http://192.168.1.123/centos|g' -i.bak /etc/yum.repos.d/CentOS-*.repo
安装一些必备工具 1 2 3 4 5 6 7 8 9 apt update && apt upgrade -y && apt install -y wget psmisc vim net-tools nfs-kernel-server telnet lvm2 git tar curl yum update -y && yum -y install wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git tar curl yum install -y bash-completion net-tools gcc yum update -y && yum -y install wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git network-scripts tar curl
关闭防火墙 1 2 systemctl disable --now firewalld
关闭selinux(记得升级内核后重启) 1 2 3 4 5 6 7 8 9 10 11 setenforce 0 sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
关闭交换分区 1 2 3 4 5 6 7 8 9 10 11 12 13 14 sed -ri 's/.*swap.*/#&/' /etc/fstab swapoff -a && sysctl -w vm.swappiness=0 cat /etc/fstab# /dev/mapper/centos-swap swap swap defaults 0 0 # 参数解释: # # 's/.*swap.*/#&/' : 这是一个sed命令,用于在文件/etc/fstab中找到包含swap的行,并在行首添加#来注释掉该行。# /etc/fstab: 这是一个文件路径,即/etc/fstab文件,用于存储文件系统表。 # swapoff -a: 这个命令用于关闭所有启用的交换分区。 # sysctl -w vm.swappiness=0: 这个命令用于修改vm.swappiness参数的值为0,表示系统在物理内存充足时更倾向于使用物理内存而非交换分区。
网络配置(俩种方式二选一) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 # Ubuntu忽略,CentOS执行 # 方式一 # systemctl disable --now NetworkManager # systemctl start network && systemctl enable network # 方式二 cat > /etc/NetworkManager/conf.d/calico.conf << EOF [keyfile] unmanaged-devices=interface-name:cali*;interface-name:tunl* EOF systemctl restart NetworkManager# 参数解释 # # # 表示以 "cali" 开头的接口名称被排除在 NetworkManager 管理之外。例如,"cali0" , "cali1" 等接口不受 NetworkManager 管理。 # # 表示以 "tunl" 开头的接口名称被排除在 NetworkManager 管理之外。例如,"tunl0" , "tunl1" 等接口不受 NetworkManager 管理。 #
进行时间同步 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 # 服务端 # apt install chrony -y yum install chrony -y cat > /etc/chrony.conf << EOF pool ntp.aliyun.com iburst driftfile /var/lib/chrony/drift makestep 1.0 3 rtcsync allow 192.168.101.0/24 local stratum 10 keyfile /etc/chrony.keys leapsectz right/UTC logdir /var/log/chrony EOF systemctl restart chronyd ; systemctl enable chronyd# 客户端 # apt install chrony -y yum install chrony -y cat > /etc/chrony.conf << EOF pool 192.168.1.31 iburst driftfile /var/lib/chrony/drift makestep 1.0 3 rtcsync keyfile /etc/chrony.keys leapsectz right/UTC logdir /var/log/chrony EOF systemctl restart chronyd ; systemctl enable chronyd# 使用客户端进行验证 chronyc sources -v# 参数解释 # # 指定使用ntp.aliyun.com作为时间服务器池,iburst选项表示在初始同步时会发送多个请求以加快同步速度。 # # 指定用于保存时钟漂移信息的文件路径。 # # 设置当系统时间与服务器时间偏差大于1秒时,会以1秒的步长进行调整。如果偏差超过3秒,则立即进行时间调整。 # # 启用硬件时钟同步功能,可以提高时钟的准确性。 # # 允许192.168.0.0/24网段范围内的主机与chrony进行时间同步。 # # 将本地时钟设为stratum 10,stratum值表示时钟的准确度,值越小表示准确度越高。 # # 指定使用的密钥文件路径,用于对时间同步进行身份验证。 # # 指定时区为UTC。 # # 指定日志文件存放目录。
配置ulimit(根据自己服务器性能设置) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ulimit -SHn 65535 cat >> /etc/security/limits.conf <<EOF * soft nofile 655360 * hard nofile 131072 * soft nproc 655350 * hard nproc 655350 * soft memlock unlimited * hard memlock unlimited EOF# 参数解释 # # soft表示软限制,nofile表示一个进程可打开的最大文件数,默认值为1024。这里的软限制设置为655360,即一个进程可打开的最大文件数为655360。 # # hard表示硬限制,即系统设置的最大值。nofile表示一个进程可打开的最大文件数,默认值为4096。这里的硬限制设置为131072,即系统设置的最大文件数为131072。 # # soft表示软限制,nproc 表示一个用户可创建的最大进程数,默认值为30720。这里的软限制设置为655350,即一个用户可创建的最大进程数为655350。 # # hard表示硬限制,即系统设置的最大值。nproc 表示一个用户可创建的最大进程数,默认值为4096。这里的硬限制设置为655350,即系统设置的最大进程数为655350。 # # soft表示软限制,memlock表示一个进程可锁定在RAM中的最大内存,默认值为64 KB。这里的软限制设置为unlimited,即一个进程可锁定的最大内存为无限制。 # # hard表示硬限制,即系统设置的最大值。memlock表示一个进程可锁定在RAM中的最大内存,默认值为64 KB。这里的硬限制设置为unlimited,即系统设置的最大内存锁定为无限制。
配置免密登录 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # apt install -y sshpass yum install -y sshpass ssh-keygen -f /root/.ssh/id_rsa -P '' export IP="192.168.1.31 192.168.1.32 192.168.1.33 192.168.1.34 192.168.1.35" export SSHPASS=123123 for HOST in $IP;do sshpass -e ssh-copy-id -o StrictHostKeyChecking=no $HOST done# 这段脚本的作用是在一台机器上安装sshpass工具,并通过sshpass自动将本机的SSH公钥复制到多个远程主机上,以实现无需手动输入密码的SSH登录。 # # # # # # # #
升级内核至4.18版本以上 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # Ubuntu忽略,CentOS执行 # 安装最新的内核 # 我这里选择的是稳定版kernel-ml 如需更新长期维护版本kernel-lt yum -y --enablerepo=elrepo-kernel install kernel-ml# 查看已安装那些内核 rpm -qa | grep kernel# 查看默认内核 grubby --default-kernel# 若不是最新的使用命令设置 grubby --set-default $(ls /boot/vmlinuz-* | grep elrepo)# 重启生效 reboot# v8 整合命令为: yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm -y ; sed -i "s@mirrorlist@#mirrorlist@g" /etc/yum.repos.d/elrepo.repo ; sed -i "[email protected] /[email protected] /elrepo@g" /etc/yum.repos.d/elrepo.repo ; yum --disablerepo="*" --enablerepo="elrepo-kernel" list available -y ; yum --enablerepo=elrepo-kernel install kernel-lt -y ; grubby --default-kernel ; reboot # v7 整合命令为: yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm -y ; sed -i "s@mirrorlist@#mirrorlist@g" /etc/yum.repos.d/elrepo.repo ; sed -i "[email protected] /[email protected] /elrepo@g" /etc/yum.repos.d/elrepo.repo ; yum --disablerepo="*" --enablerepo="elrepo-kernel" list available -y ; yum --enablerepo=elrepo-kernel install kernel-lt -y ; grubby --set-default $(ls /boot/vmlinuz-* | grep elrepo) ; grubby --default-kernel ; reboot # 离线版本 yum install -y /root/cby/kernel-lt-*-1.el7.elrepo.x86_64.rpm ; grubby --set-default $(ls /boot/vmlinuz-* | grep elrepo) ; grubby --default-kernel ; reboot
修改内核参数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 cat <<EOF > /etc/sysctl.d/k8s.conf net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-iptables = 1 fs.may_detach_mounts = 1 vm.overcommit_memory=1 vm.panic_on_oom=0 fs.inotify.max_user_watches=89100 fs.file-max=52706963 fs.nr_open=52706963 net.netfilter.nf_conntrack_max=2310720 net.ipv4.tcp_keepalive_time = 600 net.ipv4.tcp_keepalive_probes = 3 net.ipv4.tcp_keepalive_intvl =15 net.ipv4.tcp_max_tw_buckets = 36000 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_max_orphans = 327680 net.ipv4.tcp_orphan_retries = 3 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.ip_conntrack_max = 65536 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_timestamps = 0 net.core.somaxconn = 16384 net.ipv6.conf.all.disable_ipv6 = 0 net.ipv6.conf.default.disable_ipv6 = 0 net.ipv6.conf.lo.disable_ipv6 = 0 net.ipv6.conf.all.forwarding = 1 EOF sysctl --system# 这些是Linux系统的一些参数设置,用于配置和优化网络、文件系统和虚拟内存等方面的功能。以下是每个参数的详细解释: # # - 这个参数启用了IPv4的IP转发功能,允许服务器作为网络路由器转发数据包。 # # - 当使用网络桥接技术时,将数据包传递到iptables进行处理。 # # 3. fs.may_detach_mounts = 1 # - 允许在挂载文件系统时,允许被其他进程使用。 # # 4. vm.overcommit_memory=1 # - 该设置允许原始的内存过量分配策略,当系统的内存已经被完全使用时,系统仍然会分配额外的内存。 # # - 当系统内存不足(OOM)时,禁用系统崩溃和重启。 # # 6. fs.inotify.max_user_watches=89100 # - 设置系统允许一个用户的inotify实例可以监控的文件数目的上限。 # # - 设置系统同时打开的文件数的上限。 # # - 设置系统同时打开的文件描述符数的上限。 # # - 设置系统可以创建的网络连接跟踪表项的最大数量。 # # - 设置TCP套接字的空闲超时时间(秒),超过该时间没有活动数据时,内核会发送心跳包。 # # - 设置未收到响应的TCP心跳探测次数。 # # - 设置TCP心跳探测的时间间隔(秒)。 # # - 设置系统可以使用的TIME_WAIT套接字的最大数量。 # # - 启用TIME_WAIT套接字的重新利用,允许新的套接字使用旧的TIME_WAIT套接字。 # # - 设置系统可以同时存在的TCP套接字垃圾回收包裹数的最大数量。 # # - 设置系统对于孤立的TCP套接字的重试次数。 # # - 启用TCP SYN cookies保护,用于防止SYN洪泛攻击。 # # - 设置新的TCP连接的半连接数(半连接队列)的最大长度。 # # - 设置系统可以创建的网络连接跟踪表项的最大数量。 # # - 关闭TCP时间戳功能,用于提供更好的安全性。 # # - 设置系统核心层的连接队列的最大值。 # # - 启用IPv6协议。 # # - 启用IPv6协议。 # # - 启用IPv6协议。 # # - 允许IPv6数据包转发。
使用aliyun源安装docker-ce 1 2 3 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum -y install docker-ce
Kubernetes是一个开源系统,用于容器化应用的自动部署、扩缩和管理。它将构成应用的容器按逻辑单位进行分组以便于管理和发现。
由于 Kubernetes 官方变更了仓库的存储路径以及使用方式,如果需要使用 1.28 及以上版本,请使用 新版配置方法 进行配置。
下载地址:https://mirrors.aliyun.com/kubernetes/
新版下载地址:https://mirrors.aliyun.com/kubernetes-new/
k8s组件安装配置方法 新版配置方法 新版 kubernetes 源使用方法和之前有一定区别,请求按照如下配置方法配置使用。
其中新版 kubernetes 源按照安装版本区分不同仓库,该文档示例为配置 1.30 版本,如需其他版本请在对应位置字符串替换即可。
Debian / Ubuntu
在配置中添加镜像(注意修改为自己需要的版本号):
1 2 3 4 5 apt-get update && apt-get install -y apt-transport-https curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/deb/ /" | tee /etc/apt/sources.list.d/kubernetes.list
安装必要应用:
1 2 3 4 5 6 apt-get update apt-get install -y kubelet kubeadm kubectl systemctl enable kubelet && systemctl start kubelet# 如安装指定版本 # apt install kubelet=1.28.2-00 kubeadm=1.28.2-00 kubectl=1.28.2-00
CentOS / RHEL / Fedora
执行如下命令(注意修改为自己需要的版本号):
1 2 3 4 5 6 7 8 cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/ enabled=1 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/repodata/repomd.xml.key EOF
安装必要应用:
1 2 3 4 5 6 7 # 查看kubelet的版本,方便在安装的时候使用k8s 1.23的新版本 yum search kubelet --showduplicates # 根据查询出来的kubelet,选择对应的安装版本,这里以1.23.9为例 yum install kubelet-1.23.9-0 kubeadm-1.23.9-0 kubectl-1.23.9-0# 配置kubelet自动启动,但是查看状态的时候是没有启动的,在kubeadm初始化集群的时候会自动启动 systemctl enable kubelet && systemctl start kubelet
ps: 由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时请用 yum install -y --nogpgcheck kubelet kubeadm kubectl
安装
旧版配置方法 目前由于kubernetes官方变更了仓库的存储路径以及使用方式,旧版 kubernetes 源只更新到 1.28 部分版本,后续更新版本请使用 新源配置方法 进行配置。
Debian / Ubuntu 1 2 3 4 5 6 7 apt-get update && apt-get install -y apt-transport-https curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF apt-get update apt-get install -y kubelet kubeadm kubectl
CentOS / RHEL / Fedora 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF# 查看kubelet的版本,方便在安装的时候使用k8s 1.23的新版本 yum search kubelet --showduplicates # 根据查询出来的kubelet,选择对应的安装版本,这里以1.23.9为例 yum install kubelet-1.23.9-0 kubeadm-1.23.9-0 kubectl-1.23.9-0# 配置kubelet自动启动,但是查看状态的时候是没有启动的,在kubeadm初始化集群的时候会自动启动 systemctl enable kubelet && systemctl start kubelet
ps: 由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时请用 yum install -y --nogpgcheck kubelet kubeadm kubectl
安装
使用kubeadm初始化安装 配置k8s使用阿里云源 1 2 3 4 5 6 7 8 9 [root@master01 ~]# cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
查看k8s版本使用的镜像(可以先拉取下来这样比较快一点) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [root@k8s-master01 ~]# kubeadm config images list --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers [root@k8s-master01 ~]# kubeadm config print init-defaults > kubeadm-init.yaml [root@k8s-master01 ~]# kubeadm init --config=kubeadm.yaml [root@k8s-master01 ~]# kubeadm reset [root@k8s-master01 ~]# kubeadminit--kubernetes-version=1.23.9 --apiserver-advertise-address=10.0.0.19 --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=Swap
安装完成后 1 2 3 [root@k8s-master01 ~]# mkdir -p $HOME /.kube [root@k8s-master01 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME /.kube/config [root@k8s-master01 ~]# sudo chown $(id -u):$(id -g) $HOME /.kube/config
把其他节点以node方式加入k8s 1 2 3 4 5 6 7 8 9 10 11 12 13 14 You can now join any number of control-plane nodes by copying certificate authorities and service account keys on each node and then running the following as root: kubeadm join 192.168.1.36:9443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:583ddadd1318dae447c3890aa3a2469c5b00c6775e87102458db07e691c724be \ --control-plane Then you can join any number of worker nodes by running the following on each as root: kubeadm join 192.168.1.36:9443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:583ddadd1318dae447c3890aa3a2469c5b00c6775e87102458db07e691c724be
安装网络插件 打开k8s官网网址提供的网络插件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 https://kubernetes.io/docs/concepts/cluster-administration/addons/ https://github.com/flannel-io/flannel#deploying-flannel-manually [root@master01 ~]# kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml [root@master01 ~]# kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml watch -n 1 kubectl get po -n kube-flannel
查看k8s集群状态 1 2 3 4 5 [root@k8s-master01 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master01 NotReady control-plane 2m14s v1.23.9 k8s-node01 NotReady <none> 19s v1.23.9 k8s-node02 NotReady <none> 9s v1.23.9
安装后完善 执行下面命令,使kubectl可以自动补充 1 2 [root@master01 ~]# source <(kubectl completion bash) [root@master01 ~]# source <(kubeadm completion bash)
安装kubernetes-dashboard 为dashboard配置nodeport端口 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [root@master01 ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc7/aio/deploy/recommended.yaml [root@master01 ~]# vim recommended.yaml kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: type : NodePort ports: - port: 443 targetPort: 8443 nodePort: 30000 selector: k8s-app: kubernetes-dashboard [root@master01 ~]# kubectl create -f recommended.yaml namespace/kubernetes-dashboard created serviceaccount/kubernetes-dashboard created service/kubernetes-dashboard created secret/kubernetes-dashboard-certs 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
查看pod,service 1 2 3 4 5 6 7 NAME READY STATUS RESTARTS AGEdashboard -metrics-scraper-dc6947fbf-869 kf 1 /1 Running 0 37 skubernetes -dashboard-5 d4dc8b976-sdxxt 1 /1 Running 0 37 s[root@master01 ~]# kubectl get svc -n kubernetes-dashboard NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE dashboard-metrics-scraper ClusterIP 10.10.58.93 <none> 8000/TCP 44s kubernetes-dashboard NodePort 10.10.132.66 <none> 443:30000/TCP 44s
通过页面访问,推荐使用firefox浏览器 1 2 打开浏览器输入https://192.168.1.30000
使用token进行登录,执行下面命令获取token 1 [root@master01 ~]# kubectl describe secrets -n kubernetes-dashboard kubernetes-dashboard-token-t4hxz | grep token | awk 'NR==3{print $2}'
登录后,如果没有namespace可选,并且提示找不到资源 ,那么就是权限问题。
通过查看dashboard日志,得到如下 信息,出现以下信息的原因是,登录dashboard的权限不够,不能获取到内容
1 2023/04/08 01:54:31 Non-critical error occurred during resource retrieval: jobs.batch is forbidden: User "system:serviceaccount:kubernetes-dashboard:kubernetes-dashboard" cannot list resource "jobs" in API group "batch" in the namespace "default"
创建集群角色绑定 1 2 3 [root@master01 ~]# kubectl create clusterrolebinding serviceaccount-cluster-admin --clusterrole=cluster-admin --group=system:serviceaccount clusterrolebinding.rbac.authorization.k8s.io/serviceaccount-cluster-admin created
查看dashboard日志 1 [root@master01 ~]# kubectl logs -f -n kubernetes-dashboard kubernetes-dashboard-5d4dc8b976-sdxx
此时再查看dashboard,即可看到有资源展示