Kubernetes(k8s)集群部署----->超详细

这篇具有很好参考价值的文章主要介绍了Kubernetes(k8s)集群部署----->超详细。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


💖The Begin💖点点关注,收藏不迷路💖

Kubernetes(简称k8s)是一个开源的容器编排平台,可以帮助开发人员和运维团队更轻松地管理容器化应用程序。本文将详细介绍如何进行k8s集群的部署,以帮助读者快速搭建一个高可用、可伸缩的k8s集群。

一、资源准备

1、操作系统:至少三台物理机或虚拟机,具有至少2核4GB内存的配置,操作系统为Linux。

主机名 IP
k8s-01 192.168.234.21
k8s-02 192.168.234.22
k8s-03 192.168.234.23

2、主机名设置:确保每台服务器都有唯一的主机名,并且主机名能够通过DNS解析进行互相访问。

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

3、网络设置:确保每台服务器之间可以互相通信,建议使用静态IP地址,并关闭防火墙或者开放必要的端口。
Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s
Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

4、安装Docker:在每台服务器上安装Docker引擎。

二、安装准备

2.1 主机环境设置

在每台服务器上执行设置。

2.1.1 关闭操作系统防火墙、selinux

1、修改/etc/selinux/config文件中的SELINUX值为disabled

[root@k8s-01 ~]# vi /etc/selinux/config

2、修改SELINUX的值为disabled

SELINUX=disabled
或者使用命令设置:

sudo sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s
3、检查防火墙是否关闭

[root@k8s-01 ~]# systemctl status firewalld

若防火墙状态显示为active (running),则表示防火墙未关闭
若防火墙状态显示为inactive (dead),则无需再关闭防火墙

4、关闭防火墙并禁止开机重启

[root@k8s-01 ~]# systemctl disable firewalld.service
[root@k8s-01 ~]# systemctl stop firewalld.service

2.1.2 关闭swap交换分区

关闭swap交换内存是为了保障数据库的访问性能,避免把数据库的缓冲区内存淘汰到磁盘上。 如果服务器内存比较小,内存过载时,可打开swap交换内存保障正常运行。

###永久关闭命令
[root@k8s-01 ~]# swapoff -a

sed -ri 's/.*swap.*/#&/' /etc/fstab
 
 ##目的是将swap那行注释,如下图所示:

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

###开启命令(不执行)
[root@k8s-01 ~]# swapon -a

2.1.3 允许iptables检测桥接流量(可选)

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF


# 加载所有配置
sudo sysctl --system

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

2.2 安装Docker环境

安装Docker:在每台服务器上安装Docker,Kubernetes依赖于Docker来运行容器。

docker 安装可参考前面的文章:Docker基础入门:Docker起源、组成、安装、及常用命令

[root@k8s-01 ~]# docker -v    #查看是否安装成功
Docker version 20.10.7, build f0df350
[root@k8s-01 ~]#

2.3 安装Kubeadm、Kubelet和Kubectl

在每台服务器上安装Kubeadm、Kubelet和Kubectl,这些工具将帮助我们部署和管理Kubernetes集群。

Kubeadm、Kubelet和Kubectl是Kubernetes中的三个核心组件。

1、Kubeadm:Kubeadm是用于初始化和设置Kubernetes集群的工具。它负责启动集群的控制平面组件(如API服务器、控制器管理器和调度器)以及节点上的网络插件(如Flannel、Calico等)。Kubeadm还处理证书和安全性设置,并提供了一种简化的方式来添加或删除节点。

2、Kubelet:Kubelet是每个节点上运行的主要代理程序,负责管理该节点上的容器和Pod。它与控制平面通信,接收Pod的调度信息并确保它们在节点上正确运行。Kubelet还监控容器的状态,并在需要时重启失败的容器。

3、Kubectl:Kubectl是Kubernetes的命令行工具,用于与Kubernetes集群进行交互。它允许用户创建、管理和监视Kubernetes对象,如Pod、Service、Deployment等。Kubectl可以通过命令行界面执行各种操作,例如创建和删除资源、查看集群状态、日志记录和调试。

这三个组件共同协作,使得用户能够轻松地部署、管理和监控Kubernetes集群,并与集群进行交互。

2.3.1 配置k8s的yum源(阿里云的源)

在每台服务器上执行:

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
        http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

2.3.2 安装及版本检查

执行以下命令开始安装。

## 指定版本安装
sudo yum install -y kubelet-1.24.1 kubeadm-1.24.1 kubectl-1.24.1 --disableexcludes=kubernetes
## 或 yum install 安装最新版
sudo yum install kubelet kubeadm kubectl

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

## 版本检查
kubeadm version

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

2.3.3 设置kubelet自启动

## 所有服务器执行
systemctl enable --now kubelet

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s
Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s
Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

##kubelet状态查看
systemctl status kubelet

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

## 获取有关kubeadm软件包的详细信息的命令
yum info kubeadm

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

2.3.4 卸载

sudo apt-get remove kubelet kubectl kubeadm

三、Kubernetes集群所需的镜像拉取

3.1 生成一个默认 kubeadm 初始化配置文件

kubeadm config print init-defaults >kubeadm-init.yaml

## 将k8s.gcr.io 修改为阿里云地址 :registry.aliyuncs.com/google_containers

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

3.2 列出当前Kubernetes集群所需的所有镜像列表及其版本信息

kubeadm config images list


[root@k8s-01 ~]#  kubeadm config images list
I1213 18:44:19.052543   11505 version.go:255] remote version is much newer: v1.28.4; falling back to: stable-1.24
k8s.gcr.io/kube-apiserver:v1.24.17
k8s.gcr.io/kube-controller-manager:v1.24.17
k8s.gcr.io/kube-scheduler:v1.24.17
k8s.gcr.io/kube-proxy:v1.24.17
k8s.gcr.io/pause:3.7
k8s.gcr.io/etcd:3.5.3-0
k8s.gcr.io/coredns/coredns:v1.8.6
[root@k8s-01 ~]#

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

3.3 拉取所k8s需要的容器镜像

## 单条批量执行
docker pull  registry.aliyuncs.com/google_containers/kube-apiserver:v1.24.17
docker pull  registry.aliyuncs.com/google_containers/kube-controller-manager:v1.24.17
docker pull  registry.aliyuncs.com/google_containers/kube-scheduler:v1.24.17
docker pull  registry.aliyuncs.com/google_containers/kube-proxy:v1.24.17
docker pull  registry.aliyuncs.com/google_containers/pause:3.7
docker pull  registry.aliyuncs.com/google_containers/etcd:3.5.3-0
docker pull  registry.aliyuncs.com/google_containers/coredns:v1.8.6
## 或者使用脚本执行批量拉取

sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.24.17
kube-controller-manager:v1.24.17
kube-scheduler:v1.24.17
kube-proxy:v1.24.17
pause:3.7
etcd:3.5.3-0
coredns:v1.8.6
)
for imageName in ${images[@]} ; do
    docker pull registry.aliyuncs.com/google_containers/$imageName
done
EOF

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

## Shell脚本命令,用于给当前目录下的images.sh文件添加执行权限,并执行该文件。
chmod +x ./images.sh && ./images.sh

3.4 镜像检查

docker images

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

四、初始化Master节点

初始化Master节点:使用Kubeadm初始化Master节点,该命令将自动完成Kubernetes的初始化配置。

kubeadm init \
  --apiserver-advertise-address=192.168.234.21 \
  --control-plane-endpoint=k8s-01 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.24.1 \
  --service-cidr=10.11.0.0/16 \
  --pod-network-cidr=172.30.0.0/16
具体的参数解释如下:

--apiserver-advertise-address=192.168.0.113:指定API服务器的广播地址,即集群内其他节点访问API服务器的地址。
--image-repository registry.aliyuncs.com/google_containers:指定所使用的镜像仓库地址,这里使用了阿里云的镜像仓库地址。
--kubernetes-version v1.22.1:指定初始化集群时使用的Kubernetes版本。
--service-cidr=10.11.0.0/16:指定Service的IP地址段,Service是Kubernetes中用于提供服务发现和负载均衡的组件。
--pod-network-cidr=172.30.0.0/16:指定Pod的IP地址段,Pod是Kubernetes中最小的调度单位。

4.1 初始化报错解决

报错1:

[root@k8s-01 ~]# kubeadm init \
>   --apiserver-advertise-address=192.168.234.21 \
>   --control-plane-endpoint=k8s-01 \
>   --image-repository registry.aliyuncs.com/google_containers \
>   --kubernetes-version v1.24.1 \
>   --service-cidr=10.11.0.0/16 \
>   --pod-network-cidr=172.30.0.0/16
[init] Using Kubernetes version: v1.24.1
[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:
        [ERROR CRI]: container runtime is not running: output: time="2023-12-13T20:40:14+08:00" level=fatal msg="validate service connection: CRI v1 runtime API is not implemented for endpoint \"unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService"
, error: exit status 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher
[root@k8s-01 ~]# 

解决:

注意:kubernetes 1.24+版本之后,docker必须要加装cir-docker。

cir-docker下载链接: https://pan.baidu.com/s/1ZCmY07McMdicB-bdQvnSeA
提取码: ivax

1、上传安装cir-docker
[root@k8s-01 ~]# ll
total 12952
-rw-------. 1 root root     1419 Dec 12 16:09 anaconda-ks.cfg
-rw-r--r--. 1 root root      886 May 26  2021 config.toml.bak
-rw-r--r--  1 root root 13242440 Dec 13 20:59 cri-dockerd-0.3.4.amd64.tgz
-rwxr-xr-x. 1 root root      269 Dec 13 19:28 images.sh
-rw-r--r--. 1 root root      859 Dec 13 19:55 kubeadm-init.yaml
[root@k8s-01 ~]# tar -xf cri-dockerd-0.3.4.amd64.tgz -C /usr/local/
[root@k8s-01 ~]# cd /usr/local/
[root@k8s-01 local]# mv cri-dockerd/cri-dockerd /usr/local/bin
[root@k8s-01 local]# cri-dockerd --version
cri-dockerd 0.3.4 (e88b1605)
[root@k8s-01 local]# 

2、配置开机自启
[root@k8s-01 local]# vi /etc/systemd/system/cri-dockerd.service
添加内容:

[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/local/bin/cri-dockerd --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9 --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock --cri-dockerd-root-directory=/var/lib/dockershim --docker-endpoint=unix:///var/run/docker.sock --cri-dockerd-root-directory=/var/lib/docker
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target


[root@k8s-01 local]#  vi /etc/systemd/system/cri-dockerd.socket
添加内容:
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service
[Socket]
ListenStream=/var/run/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target


3、设置开机自启
systemctl daemon-reload
systemctl start cri-dockerd.service
systemctl enable cri-dockerd.service

4.2 再次执行初始化报错解决

kubeadm init \
  --apiserver-advertise-address=192.168.234.21 \
  --control-plane-endpoint=k8s-01 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.24.1 \
  --service-cidr=10.11.0.0/16 \
  --pod-network-cidr=172.30.0.0/16

报错2:

[root@k8s-01 ~]# kubeadm init \
>   --apiserver-advertise-address=192.168.234.21 \
>   --control-plane-endpoint=k8s-01 \
>   --image-repository registry.aliyuncs.com/google_containers \
>   --kubernetes-version v1.24.1 \
>   --service-cidr=10.11.0.0/16 \
>   --pod-network-cidr=172.30.0.0/16
Found multiple CRI endpoints on the host. Please define which one do you wish to use by setting the 'criSocket' field in the kubeadm configuration file: unix:///var/run/containerd/containerd.sock, unix:///var/run/cri-dockerd.sock
To see the stack trace of this error execute with --v=5 or higher
[root@k8s-01 ~]#

解决:

报错原因:没有整合kubelet和cri-dockerd。



3、解决办法,在命令后面加上以下选项

--cri-socket unix:///var/run/cri-dockerd.sock


完整命令:

kubeadm init \
  --apiserver-advertise-address=192.168.234.21 \
  --control-plane-endpoint=k8s-01 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.24.1 \
  --service-cidr=10.11.0.0/16 \
  --pod-network-cidr=172.30.0.0/16 \
  --cri-socket unix:///var/run/cri-dockerd.sock

初始化正常:

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s
Your Kubernetes control-plane has initialized successfully!

这个消息表示Kubernetes控制平面已经成功初始化。

以下输出信息,复制保存。

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

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 k8s-01:6443 --token 5sevvb.yo465pjpjogd7j21 \
        --discovery-token-ca-cert-hash sha256:210b469de41249798071688b67f618e2f69d28a6694aeec412c89b281c391c1c \
        --control-plane

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join k8s-01:6443 --token 5sevvb.yo465pjpjogd7j21 \
        --discovery-token-ca-cert-hash sha256:210b469de41249798071688b67f618e2f69d28a6694aeec412c89b281c391c1c

翻译:

你的Kubernetes控制平面已经成功初始化!

要开始使用你的集群,你需要以普通用户身份运行以下命令:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

或者,如果你是root用户,可以运行以下命令:

export KUBECONFIG=/etc/kubernetes/admin.conf

现在,你应该在集群中部署一个pod网络。
运行 “kubectl apply -f [podnetwork].yaml” 命令,选择其中一个选项,参考链接:
https://kubernetes.io/docs/concepts/cluster-administration/addons/

你现在可以通过在每个节点上复制证书机构和服务帐户密钥,然后以root身份运行以下命令来加入任意数量的控制平面节点:

kubeadm join k8s-01:6443 –token 5sevvb.yo465pjpjogd7j21
–discovery-token-ca-cert-hash sha256:210b469de41249798071688b67f618e2f69d28a6694aeec412c89b281c391c1c
–control-plane

然后,你可以通过在每个工作节点上以root身份运行以下命令来加入任意数量的工作节点:

kubeadm join k8s-01:6443 –token 5sevvb.yo465pjpjogd7j21
–discovery-token-ca-cert-hash sha256:210b469de41249798071688b67f618e2f69d28a6694aeec412c89b281c391c1c

4.3 初始化完成,root用户执行命令

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

五、安装网络插件Calico

安装网络插件:选择一种网络插件,如Flannel、Calico等,并在Master节点上安装和配置该插件。

 1、使用wget工具下载指定URL的文件calico.yaml,并且禁用SSL证书验证
 
wget https://docs.projectcalico.org/v3.25/manifests/calico.yaml --no-check-certificate


2、将清单文件(calico.yaml)应用到Kubernetes集群中,apply是一个kubectl的子命令,用于创建或更新Kubernetes资源

kubectl apply -f calico.yaml

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

六、Worker节点部署

加入集群:在每个Worker节点上使用Kubeadm加入到Kubernetes集群中。
在每个从节点执行:

kubeadm join k8s-01:6443 --token 5sevvb.yo465pjpjogd7j21 \
        --discovery-token-ca-cert-hash sha256:210b469de41249798071688b67f618e2f69d28a6694aeec412c89b281c391c1c \
        --cri-socket unix:///var/run/cri-dockerd.sock

需要在末尾添加 --cri-socket unix:///var/run/cri-dockerd.sock:要不会报错:

Found multiple CRI endpoints on the host. Please define which one do you wish to use by setting the 'criSocket' field in the kubeadm configuration file: unix:///var/run/containerd/containerd.sock, unix:///var/run/cri-dockerd.sock
To see the stack trace of this error execute with --v=5 or higher

k8s-02:

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s
k8s-03:

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

七、集群检查

1、获取所有命名空间中的所有Pod的信息。

kubectl get pod -A 


##所有都为runing状态

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s
2、获取集群中的所有节点列表。

kubectl get nodes 

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

NAME:节点的名称。
STATUS:节点的状态,包括 Ready(准备就绪)和 NotReady(未准备就绪)。
ROLES:节点的角色,如 master(主节点)和 worker(工作节点)。
AGE:节点的运行时间。
VERSION:节点上运行的 Kubernetes 版本。

八、集群测试–集群自我修复

三台设备reboot重启。三台设备重新启动后,集群应该能够自动检测到它们的重新加入,并将它们纳入集群的运行中。
Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

重启后集群运行正常。
Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

部署示例应用:在Kubernetes集群中部署一个简单的示例应用,如一个Nginx服务。
验证应用状态:通过Kubectl命令或者Dashboard界面,验证示例应用的状态是否正常运行。
水平扩展应用:通过增加Pod的数量,测试集群的水平扩展能力。
高可用测试:模拟Master节点故障,测试集群的高可用性。

九、 部署Dashboard

可选步骤,如果需要可视化的管理界面,可以在Master节点上部署Dashboard。


1、Kubernetes Dashboard项目在Github上的源代码文件kubernetes-dashboard.yaml。保存为kubernetes-dashboard.yaml文件。

curl -o kubernetes-dashboard.yaml  https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.1/aio/deploy/recommended.yaml

2、根据提供的kubernetes-dashboard.yaml文件中的配置信息,创建或更新Kubernetes Dashboard资源。

kubectl apply -f kubernetes-dashboard.yaml --validate=false

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s
Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

3、获取kube-system命名空间中的所有pods的详细信息

kubectl get pods -n kube-system -o wide

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

4、修改访问端口

kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

5、通过grep命令筛选出带有”kubernetes-dashboard”关键字的服务

 kubectl get svc -A | grep kubernetes-dashboard

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s
30187 即为对外暴露的端口。

6、浏览器访问测试:https://192.168.234.21:30187/#/login

ip 可以是集群任意IP

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

7、创建管理员角色, dashboard-adminuser.yaml

cat >>dashboard-adminuser.yaml<<'EOF'
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard
---
apiVersion: v1
kind: Secret
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
  annotations:
    kubernetes.io/service-account.name: "admin-user"   
type: kubernetes.io/service-account-token    
EOF

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

8、kubectl apply -f dashboard-adminuser.yaml
kubectl get secret admin-user -n kubernetes-dashboard -o jsonpath={".data.token"} | base64 -d

#复制上面命令返回的token到web页面即可登录。

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

十、集群的加入令牌过期–处理

当Kubernetes集群的加入令牌过期时,可以采取以下步骤进行处理:

1、首先,检查是否有其他有效的加入令牌可用。可以通过运行以下命令获取可用的加入令牌列表:

kubeadm token list

2、如果有其他有效的加入令牌可用,可以使用该令牌重新加入集群。运行以下命令以使用新的令牌加入集群:

 kubeadm token create --print-join-command

Kubernetes(k8s)集群部署----->超详细,容器化与编排技术深度解析,kubernetes,容器,云原生,docker,k8s

结语:

本文详细介绍了Kubernetes分布式部署的实用步骤,希望能够帮助读者顺利部署和管理自己的Kubernetes集群。

Kubernetes作为一款强大的容器编排工具,能够帮助我们更高效地管理和运行容器化应用,提高应用的可靠性和可伸缩性。祝您在Kubernetes的世界里探索出更多的可能性!文章来源地址https://www.toymoban.com/news/detail-752831.html


💖The End💖点点关注,收藏不迷路💖

到了这里,关于Kubernetes(k8s)集群部署----->超详细的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kubernetes (K8s) 解读:微服务与容器编排的未来

    🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack : 📚 MERN/MEAN/MEVN Stack | 🌐 Jamstack | 🌍 GraphQL | 🔁 RESTful API | ⚡ WebSockets | 🔄 CI/CD | 🌐 Git Version Control | 🔧 DevOps 🌐 前端技术 Frontend : 🖋️ HTML CSS |

    2024年02月09日
    浏览(30)
  • kubernetes(k8s)集群超级详细超全安装部署手册

    针对机器已安装过k8s的情况,如未安装过,请忽略。 k8s重置命令(如果初始化的过程出现了错误就使用重置命令): kubeadm reset 1.1 准备工作(所有的节点都执行) 编辑4台服务器的  /etc/hosts  文件 ,添加下面内容(每个节点都执行一遍): 设置hostname(以node1为例): 或者修

    2024年03月22日
    浏览(36)
  • 云原生之容器编排实践-在K8S集群中使用Registry2搭建私有镜像仓库

    基于前面搭建的3节点 Kubernetes 集群,今天我们使用 Registry2 搭建私有镜像仓库,这在镜像安全性以及离线环境下运维等方面具有重要意义。 Note: 由于是测试环境,以下创建了一个 local-storage 的 StorageClass ,并使用本地磁盘的方式创建使用 PV ,实际建议使用 NFS 。 共用到了三台

    2024年02月19日
    浏览(33)
  • Kubernetes(K8S)集群部署

    目录 一、创建3台虚拟机 二、为每台虚拟机安装Docker 三、安装kubelet 3.1 安装要求 3.2 为每台服务器完成前置设置 3.3 为每台服务器安装kubelet、kubeadm、kubectl 四、使用kubeadm引导集群 4.1 master服务器 4.2 node1、node2服务器 4.3 初始化主节点 4.4 work节点加入集群 五、token过期怎么办?

    2024年02月07日
    浏览(59)
  • Kubernetes(k8s)集群安装部署

    名称 IP 系统 配置 主控节点 192.168.202.101 CentOS 7.9.2009 2核4G 工作节点1 192.168.202.102 CentOS 7.9.2009 2核4G 工作节点2 192.168.202.103 CentOS 7.9.2009 2核4G 2.1 升级操作系统内核 导入elrepo gpg key 安装elrepo YUM源仓库 安装kernel-ml版本,ml为长期稳定版本,lt为长期维护版本 设置grub2默认引导为0 重

    2024年02月10日
    浏览(56)
  • yum部署kubernetes(k8s)集群、k8s常用资源管理

    目录 一、环境搭建 1、准备环境 1)计算机说明,建议系统版本7.4或者7.6 2)修改所有主机的计算机名设置host文件  2、安装master节点 1)安装etcd配置etcd 2)安装k8s-master节点 3)配置apiserver 4)配置controller和scheduler 5)启动k8s服务 3、安装k8s-master上的node 1)安装node 2)配置kube

    2024年02月13日
    浏览(47)
  • 基于Docker的K8s(Kubernetes)集群部署

    开始搭建k8s集群 三台服务器修改主机名称 关闭对话窗口,重新连接 三台主机名称呢就修改成功了。 接下来修改每台节点的 hosts 文件 所有节点关闭 setLinux 查看是否关闭成功 为每个节点添加 k8s 数据源 如果安装docker数据源找不到yum-config 所有节点安装kubelet kubelet安装中… k

    2024年02月08日
    浏览(76)
  • kubernetes集群(k8s)之安装部署Calico 网络

    目录 安装部署Calico 网络 (一)环境准备 (二)部署docker环境 (三)部署kubernetes集群 (四)部署Calico网络插件 IP地址 主机名 组件 192.168.100.131 k8s-master kubeadm、kubelet、kubectl、docker-ce 192.168.100.132 k8s-node01 kubeadm、kubelet、kubectl、docker-ce 192.168.100.133 k8s-node02 kubeadm、kubelet、kube

    2024年02月12日
    浏览(38)
  • 【k8s】基于Prometheus监控Kubernetes集群安装部署

    目录 基于Prometheus监控Kubernetes集群安装部署 一、环境准备 二、部署kubernetes集群 三、部署Prometheus监控平台 四、部署Grafana服务 五、grafana  web操作 IP地址 主机名 组件 192.168.100.131 k8s-master kubeadm、kubelet、kubectl、docker-ce 192.168.100.132 k8s-node01 kubeadm、kubelet、kubectl、docker-ce 192.168

    2024年02月12日
    浏览(36)
  • 云原生|kubernetes|kubernetes集群部署神器kubekey安装部署高可用k8s集群(半离线形式)

    前面利用kubekey部署了一个简单的非高可用,etcd单实例的kubernetes集群,经过研究,发现部署过程可以简化,省去了一部分下载过程(主要是下载kubernetes组件的过程)只是kubernetes版本会固定在1.22.16版本,etcd集群可以部署成生产用的外部集群,并且apiserver等等组件也是高可用,

    2024年02月15日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包