k8s-使用kube-install一键部署(亲测超详细)

news2024/9/22 9:44:15

文章目录

  • 测试环境
  • 操作系统环境配置
    • 升级操作系统内核
    • 基础配置
  • k8s前置配置
  • docker 安装
  • kube-install
    • 1.获取kube-install软件包
    • kube-install提供两种安装方式
      • 通过Web平台安装kubernetes集群
    • 通过命令行快速安装kubernetes集群
    • 扩容与销毁Node|修复Master|卸载集群
  • Kubernetes Dashboard 操作
    • token认证方式
    • Kubeconfig认证方式
  • 参考资料

测试环境

五台虚拟机,配置4核CPU 4G内存
CentOs7 内核版本5.4.225
192.168.79.11 kube-install
192.168.79.12 k8s-master
192.168.79.13 k8s-node
192.168.79.14 k8s-node
192.168.79.15 k8s-node

操作系统环境配置

升级操作系统内核

CentOS内核升级的官方文档:http://elrepo.org/tiki/tiki-index.php
Docker官方对OverlayFS 和 内核版本的要求说明:https://docs.docker.com/storage/storagedriver/overlayfs-driver/
Docker使用OverlayFS作为存储驱动程序,同时Docker为OverlayFS提供了两个存储驱动程序:原始的overlay 和 更新、更稳定的overlay2,
但是Docker官方建议如果使用OverlayFS,请使用overlay2驱动程序而不是overlay驱动程序,因为overlay2驱动程序在inode利用率方面更为有效。
要使用overlay2驱动程序,就需要Linux内核的版本4.0或更高版本,或者使用3.10.0-514及更高版本的RHEL或CentOS

#查看内核版本
uname -r

#显示内核版本信息如下
3.10.0-693.el7.x86_64

#载入公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

#安装ELRepo
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm

#安装内核 kernel
yum --enablerepo=elrepo-kernel install -y kernel-ml-devel kernel-ml


#查看已安装的内核版本
rpm -qa | grep -i kernel

#查找新安装的内核完整名称
cat /boot/grub2/grub.cfg | grep menuentry


#更改CentOS7默认的系统内核版本
#更改系统内核版本为最新安装版本
grub2-set-default 0

#查看默认启动内核是否更换成功
grub2-editenv list

#重启系统
reboot

#提示:由于升级后内核版本是往前面插入的,前面在查看新安装的内核完整名称时,我们也看到新安装的内核信息在第一行输出,所以设置启动顺序为0,即可更改为新内核版本
uname -r

基础配置

#永久配置host
hostnamectl set-hostname work1

echo '''
192.168.79.11 work1
192.168.79.12 work2
192.168.79.13 work3
192.168.79.14 work4
''' >> /etc/hosts

# 网络
systemctl stop firewalld
systemctl disable firewalld
iptables -L
setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
sestatus

# 关闭swap
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
free -m

yum install –y chrony
systemctl start chronyd
systemctl enable chronyd
systemctl status chronyd

vim /etc/chrony.conf
/**
 * 注释掉默认的四个ntp服务器,因为该服务器同步时间略慢
 **/
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

/**
 * 格式为:server 服务器ip地址 iburst
 * 添加阿里云的ntp服务器,可以多写几个ntp服务器,防止第一个服务器宕机,备用的其他ntp服务器可以继续进行时间同步
 * ip地址为服务器ip地址,iburst代表的是快速同步时间
 **/
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst

systemctl restart chronyd
systemctl status chronyd




k8s前置配置

#编写kubernetes.conf配置
vim /etc/sysctl.d/kubernetes.conf

# 填写如下内容
# 开启ipv4的过滤规则
net.bridge.bridge-nf-call-iptables=1 
# 开启iptables中ipv6的过滤规则
net.bridge.bridge-nf-call-ip6tables=1
# 开启服务器的路由转发功能
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
# 禁止使用swap 空间,只有当系统OOM 时才允许使用它
vm.swappiness=0
# 不检查物理内存是否够用
vm.overcommit_memory=1
# 开启OOM
vm.panic_on_oom=0
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
# 禁止ipv6
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720

#执行命令,使其配置文件生效
modprobe br_netfilter
sysctl -p /etc/sysctl.d/kubernetes.conf
# 可以看到最后一行提示为:sysctl: cannot stat /proc/sys/net/netfilter/nf_conntrack_max: No such file or directory,这是因为我们当前3.10版本的CentOS内核中,不存在该文件,在后面操作中,我将会升级CentOS内核,升级之后的CentOS内核将包含该文件,所以这里我们暂时忽略该提示

#开启kube-proxy的ipvs前置条件
#从kubernetes的1.8版本开始,kube-proxy引入了ipvs模式,ipvs模式与iptables同样基于Netfilter,但是ipvs模式采用的是hash表,因此当service数量达到一定规模时,hash查表的速度优势就会显现出来,从而提高service的服务性能
//1、安装ipvsadm 和 ipset
yum -y install ipvsadm ipset

//2、编辑ipvs.modules配置文件,使其永久生效
vim /etc/sysconfig/modules/ipvs.modules

//3、填写如下内容
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack

//4、设置文件权限
chmod 755 /etc/sysconfig/modules/ipvs.modules

//5、查看是否已经正确加载所需的内核模块
bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

在网上找到教程安装K8S需要配置ipvs功能,但是在进行配置时会报错modprobe: FATAL: Module nf_conntrack_ipv4 not found.
这是因为使用了高内核,较如博主就是使用了5.2的内核,一般教程都是3.2的内核。在高版本内核已经把nf_conntrack_ipv4替换为nf_conntrack了

docker 安装

# docker卸载
yum remove docker-ce
rm -rf /var/lib/docker
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
# 配置源
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
yum -y install wget
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
yum makecache fast

# docker 一键安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
curl -sSL https://get.daocloud.io/docker | sh


# 特定版
yum list docker-ce --showduplicates | sort -r
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

# 例如:
##1、查询18.09版的docker-ce和docker-ce-cli
yum  list available docker-ce* --showduplicates|grep 18.09
##2、安装指定版本的docker-ce和docker-ce-cli
yum install -y docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io


# 最新版
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin




# 检查
systemctl enable docker && systemctl start docker
docker version
docker info

sudo docker run hello-world

# 配置国内镜像
cat <<EOF > /etc/docker/daemon.json
{
  "registry-mirrors": ["https://m0p0xxqj.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}
EOF

#创建一个docker.service.d目录,用于存放docker的配置文件
mkdir -p /etc/systemd/system/docker.service.d

systemctl daemon-reload
systemctl restart docker


# 升级
sudo yum install docker-ce docker-ce-cli containerd.io


# docker compose 安装
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
#测试安装结果
docker-compose --version

kube-install

kube-install是k8s一键安装脚本,支持高度可用的多个kubernetes集群可以在二进制模式下一键离线安装,也可以计划安装、添加kubernets节点、删除kubernete节点、销毁kubernetesmaster、重建kubernetes-master和卸载集群。

(无需在目标主机上安装任何软件。只需使用空主机即可脱机部署高度可用的kubernetes集群!)

1.获取kube-install软件包

你可以从 https://github.com/cloudnativer/kube-install/releases 这里下载kube-install-*.tgz软件包。
举例,下载kube-install-allinone-v0.8.0.tgz软件包进行安装:

 cd /root/
 curl -O https://github.com/cloudnativer/kube-install/releases/download/v0.8.0/kube-install-allinone-v0.8.0.tgz
 tar -zxvf kube-install-allinone-v0.8.0.tgz
 cd /root/kube-install/

注意:如果你本地的网络环境不是太好的话,建议你使用支持断点续传的下载软件进行软件包下载,这样可以获得更好的下载体验。

kube-install提供两种安装方式

通过Web平台安装kubernetes集群

如果你有四台服务器,k8s-master安装在三台服务器(192.168.1.11、192.168.1.12、192.168.1.13)上,k8s-node安装在四台服务器(192.168.1.11、192.168.1.12、192.168.1.13、192.168.1.14)上。服务器的操作系统是纯净的CentOS Linux或RHEL(RedHat Enterprise Linux),具体如下表所示:
IP地址 需要安装的组件 操作系统版本 root密码
192.168.1.11 k8s-master,k8s-node,kube-install CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer
192.168.1.12 k8s-master,k8s-node CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer
192.168.1.13 k8s-master,k8s-node CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer
192.168.1.14 k8s-node CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer

注意:这里使用192.168.1.11作为kube-install源安装机。事实上,您可以将任何主机(包括kubernetes集群之外的任何主机)用来作为kube-install源安装机!
初始化系统环境
首先你需要使用root用户对kube-install源安装机本地环境进行初始化操作,进入解压后的软件目录执行kube-install -init命令:

 cd /root/kube-install/
 ./kube-install -init -ostype "centos7"

注意:kube-install软件支持rhel7, rhel8, centos7, centos8, ubuntu20, suse15等版本的操作系统,在做初始化操作的时候,请确保-ostype参数设置正确。

运行kube-install的Web管理服务
然后,执行systemctl start kube-install命令来运行kube-install的Web管理平台服务。kube-install的Web管理平台具备SSH打通、定时安装部署、Node扩容、Master修复、集群卸载等强大的功能,你可以在Web管理平台上获得更好的安装体验。

# systemctl start kube-install.service

# systemctl status kube-install.service
  ● kube-install.service - kube-install One click fast installation of highly available kubernetes cluster.
     Loaded: loaded (/etc/systemd/system/kube-install.service; disabled; vendor preset: disabled)
     Active: active (running) since Fri 2021-08-20 14:30:55 CST; 21min ago
       Docs: https://cloudnativer.github.io/
   Main PID: 2768 (kube-install)
     CGroup: /system.slice/kube-install.service
             └─2768 /go/src/kube-install/kube-install -daemon
   ...

此时,你就可以使用网页浏览器打开http://kube-install源安装机IP:9080,访问kube-install的Web管理平台了。使用用户名 admin 和默认密码 CloudNativeR 登录!(你可以后期通过web平台修改密码)
在这里插入图片描述

注意:kube-install的Web管理平台服务默认监听TCP 9080。如果你想修改这个监听地址的话,可以通过修改/etc/systemd/system/kube-install.service文件中的kube-install -daemon -listen ip:port参数来进行设置

Run as a systemd service
You can run Kube-Install in systemd service mode.
Prepare /etc/systemd/system/kube-install.service file as follows, here is a sample file for reference.
[Unit]
Description=kube-install One click fast installation of highly available kubernetes cluster.
Documentation=https://cloudnativer.github.io/
After=sshd.service
Requires=sshd.service
  
[Service]
Environment="USER=root"
ExecStart=/var/lib/kube-install/kube-install -daemon -listen 0.0.0.0:9080
User=root
PrivateTmp=true
LimitNOFILE=65536
TimeoutStartSec=5
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

#Notice: Please fill in the actual full path of kube-install binary file after ExecStart= parameter. Kube-install web service listens to TCP 9080 by default. If you want to modify the listening address, you can set it by modifying the kube-install -daemon -listen ip:port parameter in the /etc/systemd/system/kube-install.service file.

#Start the service

#Start the service using the systemctl start kube-install command:

systemctl start kube-install.service
 systemctl status kube-install.service
  ● kube-install.service - kube-install One click fast installation of highly available kubernetes cluster.
     Loaded: loaded (/etc/systemd/system/kube-install.service; disabled; vendor preset: disabled)
     Active: active (running) since Fri 2021-08-20 14:30:55 CST; 21min ago
       Docs: https://cloudnativer.github.io/
   Main PID: 2768 (kube-install)
     CGroup: /system.slice/kube-install.service
             └─2768 /go/src/kube-install/kube-install -daemon
             
#Set the service startup
To set the service startup, you can execute the following commands:
# systemctl enable kube-install.service


快速安装部署kubernetes集群
然后,点击Web界面右上角的的Install Kubernetes按钮开始kubernetes集群的安装 我这里已经安装
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

注意:在你开始给目标主机安装kubernetes集群之前,请先打通kube-install源安装机本地到目标主机的SSH免密通道。 你可以自己手工打通到目标主机的SSH通道,也可以点击右上角的Open SSH Channel of Host按钮来进行打通 详见https://github.com/cloudnativer/kube-install/blob/master/docs/webssh0.8.md
在弹出的安装表单窗口中填写好安装所需的参数信息:
说明:
在这里插入图片描述

请选择好你需要安装的Kubernetes版本,目前kube-install支持v1.17~1.24版本的Kubernetes安装部署,其他版本的Kubernete暂未进行验证。
请选择好你需要安装的CNI插件,目前kube-install支持Flannel、Calico、Kube-router、Weave、Cilium等CNI插件类型。如果需要安装Cilium,请将Linux内核升级到4.9或以上版本。
请选择好你的操作系统环境。由于低版本的Centos 7和RHEL 7可能缺少内核模块,kube-install对Centos 7和RHEL 7操作系统内核的提供了自动升级到4.19的功能,你可以选择使用此功能,也可能自己手工优化操作系统内核。

注意:如果不设置定时安装的话,默认为立即开始安装。你如果想进行定时安装,也可以在下方的选择定时安装的日期与时间。

在这里插入图片描述

通过命令行快速安装kubernetes集群

除了可以使用Web平台安装kubernetes集群外,你还可以通过kube-install的命令行来安装kubernetes集群,kube-install的命令行使用起来比较简单方便。
初始化系统环境

首先你需要使用root用户对kube-install源安装机本地环境进行初始化操作,进入解压后的软件目录执行kube-install -init命令:

# cd /root/kube-install/
# ./kube-install -init -ostype "centos7"

注意:kube-install软件支持rhel7, rhel8, centos7, centos8, ubuntu20, suse15等版本的操作系统,在做初始化操作的时候,请确保-ostype参数设置正确。

打通到目标主机的SSH通道

在你开始给目标主机安装kubernetes集群之前,请先打通kube-install源安装机本地到目标主机的SSH免密通道。 你可以自己手工打通到目标主机的SSH通道,也可以通过kube-install -exec sshcontrol命令来打通:

 cd /root/kube-install/
 ./kube-install -exec sshcontrol -sship "192.168.1.11,192.168.1.12,192.168.1.13,192.168.1.14" -sshpass "cloudnativer"

你也可以通过kube-install的Web管理平台来打通到目标主机的SSH通道

一键安装部署kubernetes集群
在kube-install源安装机上使用root用户执行下面这条命令即可:

# cd /root/kube-install/
# ./kube-install -exec install -master "192.168.1.11,192.168.1.12,192.168.1.13" -node "192.168.1.11,192.168.1.12,192.168.1.13,192.168.1.14" -k8sver "1.22" -ostype "centos7" -label "192168001011"

注意:

kube-install软件支持rhel7, rhel8, centos7, centos8, ubuntu20, suse15等版本的操作系统,在做安装部署操作的时候,请确保-ostype参数设置正确。由于低版本的centos7和redhat7可能缺少内核模块,kube-install对centos7和rhel7操作系统内核的提供了自动升级到4.19的功能,你可以选择-upgradekernel参数使用此功能,也可能自己手工优化操作系统内核。
请选择好你需要安装的CNI插件,目前kube-install支持Flannel、Calico、Kube-router、Weave、Cilium等CNI插件类型。如果需要安装“Cilium”,请将Linux内核升级到4.9或以上版本。

另外,如果你需要自定义制定Kubernetes集群安装在目标主机上的目录路径的话,可以带上-softdir参数来设置。

4.4 登录kubernetes dashboard界面
通过查看loginkey.txt文件可以获取kube-dashboard的登录地址和密钥
cat /opt/kube-install/loginkey.txt
如下面的截图所示为kube-dashboard的登录地址和密钥:

扩容与销毁Node|修复Master|卸载集群

Kube-install不仅可以很方便的安装单机和高可用的kubernetes集群,还可以支持k8s-node的扩容与销毁、k8s-master的销毁与修复、kubernetes集群的卸载等。

举例,现在需要给第[2]章节中安装好的kubernetets集群,增加2个k8s-node节点(192.168.1.15 and 192.168.1.16),相关信息如下:

IP地址 需要安装的组件 操作系统版本 root密码
192.168.1.11 k8s-master,k8s-node,kube-install CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer
192.168.1.12 k8s-master,k8s-node CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer
192.168.1.13 k8s-master,k8s-node CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer
192.168.1.14 k8s-node CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer
192.168.1.15 k8s-node CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer
192.168.1.16 k8s-node CentOS Linux release 7 or Red Hat Enterprise Linux(RHEL) 7 cloudnativer
在kube-install源主机上使用root用户执行如下命令:

 kube-install -exec addnode -node "192.168.1.15,192.168.1.16" -k8sver "1.22" -ostype "centos7" -label "192168001011"

注意:kube-install软件支持rhel7, rhel8, centos7, centos8, ubuntu20, suse15等版本的操作系统,在做安装部署操作的时候,请确保-ostype参数设置正确。
另外,如果你需要自定义制定Kubernetes集群安装在目标主机上的目录路径的话,可以带上-softdir参数来设置。

安装完毕之后的部署架构如下图所示:

kube-install-arch

除了使用kube-install -exec addnode命令进行k8s-node节点扩容外,你也同样可以使用kube-install的Web管理平台来对k8s-node节点进行扩容,点击“Add Node”按钮填写表单即可完成k8s-node的扩容。点击这里可以查看使用kube-install的Web管理平台来扩容k8s-node节点的方法。

kube-dashboard

你可以点击“Enable Terminal”和“Web Terminal”来使用web终端管理k8s-node服务器。

Kubernetes Dashboard 操作

点击web控制台
在这里插入图片描述
会跳转到以下登录链接
https://192.168.79.15:32767/#/login
在这里插入图片描述
认证通过后进入dashboard管理界面
在这里插入图片描述

token认证方式

在master节点上操作

#创建用户
$kubectl create serviceaccount dashboard-admin -n kube-system

# 用户授权
$kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

# 获取用户Token
$kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
[root@work2 kube-install]# kubectl create serviceaccount dashboard-admin -n kube-system
serviceaccount/dashboard-admin created
[root@work2 kube-install]# kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
clusterrolebinding.rbac.authorization.k8s.io/dashboard-admin created
[root@work2 kube-install]# kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
Name:         kubernetes-dashboard-admin
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: kubernetes-dashboard-admin
              kubernetes.io/service-account.uid: f8e07aac-cb21-4b05-a72a-2859df5ff725

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     2069 bytes
namespace:  11 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IlBrUVVNR3Q0dzJSalBhLUtpMXNyMkY4YU9qYllsVVVjaWIwbzZhanpyVzAifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC1hZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC1hZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImY4ZTA3YWFjLWNiMjEtNGIwNS1hNzJhLTI4NTlkZjVmZjcyNSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTprdWJlcm5ldGVzLWRhc2hib2FyZC1hZG1pbiJ9.nz2CBemRGF_olJUFLI6V-N9k20Drh3XQJ5AXPt5XdEkrBl187KBDhagmALBsHjglafxhVtoquXWt9yxXFOz_9MDqLeQOrZh9OJpIkm4YikkOVXx-hYqLNLslcJ71k4TSMn1BD3c-B44IGuy433wCAKNQUW3bX_dHiz8JY9Q_IVmwRhwl1S7uzVvt1IYGOLlaZhkhAo9HIOpkCa2KBd6mxBBlMeT5JHj73FJuZVyc6bGpg9C0laXet6O76OQWd0xAjuetIDvjUWkUudgSk2in6-ZNp9FgNknobcdCQ5EdtpfazH_E8D4TMM1pXCKXaAx-l8Mi8G_0Xg_IASaUFXv7Jw


Kubeconfig认证方式

# 创建用户
$kubectl create serviceaccount dashboard-admin -n kube-system

# 用户授权
$kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

# 获取用户Token
$kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

#获取token文件名dashboard-admin-token-dc7tz
$kubectl get secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
#将上一步获取到的token文件名替换到这里
$DASH_TOKEN=$(kubectl get secret -n kube-system dashboard-admin-token-dc7tz -o jsonpath={.data.token}|base64 -d)

# 生成dashboard-admin.kubeconfig配置文件
$kubectl config set-cluster kubernetes \
--certificate-authority=/opt/kubernetes/ssl/ca.pem \
--embed-certs=true \
--server=https://192.168.91.132:6443 \
--kubeconfig=dashboard-admin.kubeconfig

$kubectl config set-credentials dashboard-admin \
--token=$DASH_TOKEN \
--kubeconfig=dashboard-admin.kubeconfig

$kubectl config set-context dashboard-admin@kubernetes \
--cluster=kubernetes \
--user=dashboard-admin \
--kubeconfig=dashboard-admin.kubeconfig

$kubectl config use-context dashboard-admin@kubernetes --kubeconfig=dashboard-admin.kubeconfig

参考资料

https://docs.docker.com/engine/install/centos/
https://github.com/cloudnativer/kube-install
https://github.com/cloudnativer/kube-install/blob/master/docs/webinstall0.7-zh.md
https://github.com/cloudnativer/kube-install/blob/master/docs/parameters0.8.md
https://github.com/cloudnativer/kube-install/blob/master/docs/architecture0.8.md

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/79787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“特耐苏“牌传递窗——洁净区与洁净之间的辅助设备

传递窗安于高洁净要求的洁净区与洁净之间; 传递窗是一种洁净室的辅助设备&#xff0c;主要用于洁净区与洁净区之间、洁净区与非洁净区之间小件物品的传递&#xff0c;以减少洁净室的开门次数&#xff0c;把对洁净室的污染降低到zui低程度。传递窗采用不锈钢板制作&#xff0c;…

【期末过过过90+】【数据库系统概述】亲笔备考笔记+知识点整理+备考建议

文章目录&#xff1a;故事的开头总是极尽温柔&#xff0c;故事会一直温柔……&#x1f49c;一、前言二、考试题型三、必考重点四、知识点梳理及笔记第1章&#xff1a;绪论第2章&#xff1a;关系数据库第3章&#xff1a;关系数据库标准语言SQL第4章&#xff1a;数据库安全性第5章…

动物静态HTML网页作业作品 大学生野生动物保护网页设计制作成品 简单DIV CSS布局网站

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

网络基础------IP协议

文章目录IP协议的主要功能网段划分IP数量限制WAN口的IP 和 LAN口的IP路由IP协议的主要功能 网络层&#xff08;IP协议&#xff09;的主要功能&#xff1a; 地址转换和路由选择 传输层&#xff08;TCP协议&#xff09;的主要功能&#xff1a; 传输数据的控制。 有什么区别吗&am…

小程序不在以下request合法域名,http协议添加不了

每个微信小程序需要事先设置通讯域名&#xff0c;小程序只可以跟指定的域名进行网络通信 问题描述 出现http://xxx.不在以下request合法域名列表中&#xff0c;请参考文档 解决方法 在开发中可以勾上不校验合法域名 在发版中就需要把域名放在通讯域名中 [外链图片转存失败,…

ADI Blackfin DSP处理器-BF533的开发详解26:电子书的应用(含源代码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了读取 SD 卡中“/txt/test.txt”路径下的 TXT 文件&#xff0c;将 TXT 文件内容显示到液晶屏上&#xff0c;通过按键“Lift-&…

java计算机毕业设计ssm疫苗接种预约系统小程序24tfm(附源码、数据库)

java计算机毕业设计ssm疫苗接种预约系统小程序24tfm&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&…

【数据结构】TopK问题

TopK 在N个数中 找出最大或最小的前k个数&#xff0c;就是TopK算法。比如有一组数字&#xff0c;[1,2,3,4,5,6,7,8,9]&#xff0c;这组数中最大的前 3(k)个数是 9,8,7。最小的 前3个数是 1&#xff0c;2&#xff0c;3。而TopK算法就是找出最大或者最小的前K个数。我们就用堆来实…

【mmdetection系列】mmdetection之backbone讲解

如果是自己来写这部分代码的话&#xff0c;真的是很容易&#xff0c;如果这个框架中有自带的backbone结构的话&#xff0c;那可以从其他地方找到对应的pytorch版本实现&#xff0c;或者自己写。 配置部分在configs/_base_/models目录下&#xff0c;具体实现在mmdet/models/bac…

微信小程序——云音乐界面

文章目录第一章 开发前的准备一、项目展示二、项目分析三、项目初始化第二章 标签页切换一、任务分析二、常用组件介绍三、编写页面结构和样式第三章 音乐推荐一、任务分析二、组件介绍三、编写音乐推荐页面结构和样式第一章 开发前的准备 一、项目展示 音乐小程序项目效果展…

.net开发安卓入门 - Notification(通知)

.net开发安卓入门 - Notification&#xff08;通知&#xff09;通知的布局创建通知通道创建和发布通知我的样例效果图代码资源文件常见问题一切代码都准备就绪了&#xff0c;为什么就是不提示消息内容呢&#xff1f;为什么我的通知不是弹出式的同系列文章推荐通知的布局 创建通…

yolov7运行自己的VOC格式数据集

yolov7运行VOC格式数据集测试开发环境使用自己的VOC格式数据集训练修改配置文件yolov7.yaml修改配置文件voc.yamlVOC格式数据集转换COCO格式开始训练重头开始fine-trainBUG常见报错1常见报错2成功训练网络评价指标可视化测试开发环境 去官网下载yolov7的权重文件&#xff0c;放…

async/await

理解async函数就要先理解generator (生成器)函数,因为async是generator函数的语法糖。 Generator函数 Generator 函数是 ES6 提供的一种异步编程解决方案&#xff0c;可以先理解为一个状态机&#xff0c;封装了多个内部状态&#xff0c;执行Generator函数返回一个遍历器对象&…

【ChatGPT 中文版插件】无需注册体验 ChatGPT 的攻略

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…

假设检验介绍

数据科学是一个不断发展的领域&#xff0c;近年来越来越受欢迎。数据科学的一个重要组成部分是假设检验的使用&#xff0c;它可用于从数据中得出结论并做出明智的决策。 什么是假设检验&#xff1f; 假设检验是数据科学中常用的方法&#xff0c;用于评估关于总体参数的假设的有…

前端超级实用的Visual Studio Code插件

前端超级实用的Visual Studio Code插件1、Bracket Pair Colorizer&#xff1a;可以把不同嵌套层级的各种类型的括号&#xff0c;用不同的颜色标注出来2、Auto Close Tag:自动闭合HTML标签3、Auto Rename Tag:自动关闭标签&#xff0c;在开始标记的结束括号中键入后&#xff0c;…

2022年浙大城市学院新生程序设计竞赛(同步赛)D. Cutting with Lines Ⅰ(线段分割 离散化+并查集 补写法)

题目 二维平面&#xff0c;左下角(0,0)右上角(n,m)(1<n,m<1e6)的一块矩形&#xff0c; q(q<2e3)次线段切割操作&#xff0c;操作分四种&#xff1a; ai 1 x&#xff0c;表示切割(x,m)到(x,m-ai)这条竖直线段(0<x<n,1<ai<1e6) ai 2 x&#xff0c;表示切…

【车载开发系列】UDS诊断---诊断设备在线($0x3E)

【车载开发系列】UDS诊断—诊断设备在线&#xff08;$0x3E&#xff09; 一.概念定义 此服务用于向ECU指示诊断工具在线。当其他UDS服务不存在时&#xff0c;为防止ECU自动转入默认会话模式并停止通信&#xff0c;必须使用此服务。建议以功能寻址的方式发送该指令它唯一的功能…

解决编译 Visual Studio 工程时报 NuGet Package Restore Failed

背景 域渗透的过程中会用到很多 .Net 工具。但是官方仓库没有直接发布的二进制包&#xff0c;那么就需要我们自己手动编译。这些工具又有很多会选择做 NuGet 依赖。如果本地配置不对&#xff0c;就会导致编译失败。 接下来我们就讨论一下怎么解决这个问题。 现象 我们以 AD…

【Vue 快速入门系列】ref、props、mixin、插件使用、样式混合解决方案合集

文章目录前言一、ref属性的使用二、props配置三、mixin混合语法1.简介2.使用方法3.注意点4.结合实例使用①全局混入②局部混入四、插件的使用1.插件语法①定义插件②引入插件并使用2.上手插件五、样式混合问题前言 在前面介绍到了Vue的一些基本概念与如何使用Vue&#xff0c;并…