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

文章目录

  • 测试环境
  • 操作系统环境配置
    • 升级操作系统内核
    • 基础配置
  • 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
在弹出的安装表单窗口中填写好安装所需的参数信息:
k8s-使用kube-install一键部署(亲测超详细)_第1张图片
k8s-使用kube-install一键部署(亲测超详细)_第2张图片

请选择好你需要安装的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的功能,你可以选择使用此功能,也可能自己手工优化操作系统内核。

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

k8s-使用kube-install一键部署(亲测超详细)_第3张图片

通过命令行快速安装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控制台
k8s-使用kube-install一键部署(亲测超详细)_第4张图片
会跳转到以下登录链接
https://192.168.79.15:32767/#/login
k8s-使用kube-install一键部署(亲测超详细)_第5张图片
认证通过后进入dashboard管理界面
k8s-使用kube-install一键部署(亲测超详细)_第6张图片

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

你可能感兴趣的:(运维,kubernetes,docker,linux,云原生,k8s安装部署)