kubernetes--技术文档-真--集群搭建-三台服务器一主二从(非高可用)-三服务器位于同交换机中

在使用k8s之前如果不太熟悉k8s的可以先看这个文章: 

kubernetes--技术文档--基本概念--《10分钟快速了解》_一单成的博客-CSDN博客

三节点相同安装操作:

        1、设置hosts解析

根据角色在三个服务器中运行,设置自己的hostname。

  1. 标识:hostname是用于标识Linux系统的名称。通过修改hostname,你可以更改系统在局域网或互联网中的标识,使其更符合你的需求。
  2. 可读性:有些长而复杂的Linux系统名称可能难以记忆和读取。通过修改hostname,你可以使其更简短、易于记忆和读取。
  3. 管理:在多用户环境中,为了方便管理和区分不同的Linux系统,修改hostname可以帮助你更容易地识别和管理各个系统。

master节点:

hostnamectl set-hostname k8s-master #设置master节点的hostname

slave-1节点

hostnamectl set-hostname k8s-slave1 #设置slave1节点的hostname

slave-2节点

hostnamectl set-hostname k8s-slave2 #设置slave2节点的hostname

在修改了名字后

刷新可看到

 

这个时候已经有自己的名字了。 

在三个服务器上添加hosts解析--配置本地域名

cat >>/etc/hosts<<EOF
masterip k8s-master
slave1ip k8s-slave1
slave2ip k8s-slave2
EOF

        2、 调整系统配置

1、设置安全组开放端口

        注意:如果节点间无安全组限制(内网机器间可以任意访问),可以忽略,否则,至少保证如下端口可通: k8s-master节点:TCP:6443,2379,2380,60080,60081UDP协议端口全部打开 k8s-slave节点:UDP协议端口全部打开

2、设置iptables

注意:首先!iptables不是网卡,而是Linux内核的一个模块,用于管理对网络设备(网卡)的访问。iptables可以配置操作系统的路由表,实现路由过滤、端口转发、NAT等,主要用于管理IPv4数据包的过滤和地址转换。在IPv6中,相应的工具是ip6tables,用于管理IPv6数据包的过滤和地址转换。

在搭建 Kubernetes 集群时,设置iptables主要有两个原因:实现集群内部服务发现和外部访问网络代理。

  1. 实现集群内部服务发现:Kubernetes 使用iptables来设置网络转发规则,将请求转发到后端的 Pod。当一个请求进入 Kubernetes 集群时,iptables 会根据请求的目标 IP 和端口,将请求转发到对应的服务 Pod。这使得集群内部的服务的请求能够被正确地路由和处理。
  2. 外部访问网络代理:Kubernetes 使用iptables来设置外部流量进入集群的代理规则。当一个请求从外部进入 Kubernetes 集群时,iptables 会将请求转发到合适的网关或负载均衡器,从而实现外部对内部服务的访问。

需要注意的是,Kubernetes 还提供了另一个流量转发工具 IPVS (IP Virtual Server)可以用于实现高性能的负载均衡。你可以根据实际场景和需求选择使用 iptables 还是 IPVS。

iptables -P FORWARD ACCEPT

代码说明:

iptables -P FORWARD ACCEPT 是一个iptables命令,用于设置Linux系统中的iptables防火墙的转发规则。

具体来说,-P 选项指定了默认策略,而 FORWARD 是iptables规则链的名字,用于处理经过的流量。在这个例子中,ACCEPT 是默认策略,表示所有经过 FORWARD 链的流量都将被接受(即允许通过)。

换句话说,这个命令设置了所有经过iptables防火墙的流量在 FORWARD 链中的默认行为是允许通过,除非有特定的规则对特定流量进行了阻止。

3、关闭swap

在搭建Kubernetes集群时,建议关闭swap,原因如下:

  1. 性能下降:当内存不足时,Linux会将一部分内存存储到磁盘交换文件中,从而导致性能下降并可能导致应用程序崩溃。而在运行Kubernetes时,内存压力可能很高,因此关闭swap可以避免这种情况。
  2. 容器无法正常工作:在执行大型容器操作时,如果系统启用了swap,可能会导致一些容器被停止或无法正常工作。为避免这种情况,建议在Kubernetes节点上禁用swap。

总之,为了提高Kubernetes集群的整体性能和稳定性,建议在搭建集群时关闭swap

swapoff -a
# 防止开机自动挂载 swap 分区
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

  代码解释:

这段代码是用于关闭 Linux 系统中的 swap 分区的命令。

让我们逐行解释一下:

  1. swapoff -a:该命令会关闭所有已经挂载的 swap 分区。
  2. sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab:这行命令使用了 sed 工具来修改 /etc/fstab 文件。-i 选项表示直接修改输入文件,而不是输出到标准输出。/ swap / 是 sed 的匹配模式,表示只匹配包含 " swap " 的行。s/^\(.*\)$/#\1/g 是 sed 的替换操作,表示将每行的内容替换为在原来的内容前面加上 "#"。换句话说,这行命令将所有包含 " swap " 的行在每行的开头加上 "#",也就是注释掉这些行。

总的来说,这段代码的目的是关闭 swap 分区并防止其在系统重新启动时自动挂载。

4、关闭selinux和防火墙

在搭建 Kubernetes 集群时,建议关闭 SELinux 和防火墙,原因如下:

  1. 防火墙可能会阻止 Kubernetes 节点的网络通信:Kubernetes 需要节点之间的网络通信来正常工作。如果防火墙阻止了这些通信,可能会导致部署失败或集群节点之间无法通信的问题。
  2. SELinux 可能会与 Kubernetes 某些组件的访问控制策略冲突:SELinux 是一个用于提供更高级别的访问控制和安全保护的 Linux 内核模块。然而,在某些情况下,为了方便和实用,需要关闭 SELinux 以放松对系统资源的限制,从而提高系统的灵活性和可用性。

总之,为了确保 Kubernetes 集群的正常运行和简化部署过程,建议在搭建集群时关闭 SELinux 和防火墙。但请注意,这只适用于某些情况下,具体应根据实际情况进行决策。

sed -ri 's#(SELINUX=).*#\1disabled#' /etc/selinux/config
setenforce 0
systemctl disable firewalld && systemctl stop firewalld

这段代码是用于关闭 SELinux 和防火墙的命令,具体解释如下:

  1. sed -ri 's#(SELINUX=).*#\1disabled#' /etc/selinux/config:该命令使用 sed 工具对 /etc/selinux/config 文件进行修改。-ri 选项表示在读取文件的同时进行修改。's#(SELINUX=).*#\1disabled#' 是 sed 的替换命令,它将文件中以 SELINUX= 开头的行替换为 SELINUX=disabled。这样修改后,SELinux 在下次重启后将被禁用。
  2. setenforce 0:该命令会立即将 SELinux 设置为禁用状态,而不需要重启系统。
  3. systemctl disable firewalld && systemctl stop firewalld:这两个命令是使用 systemctl 工具来禁用和停止 firewalld 服务。&& 表示前后两个命令之间是逻辑关系,只有前一个命令成功执行后,后一个命令才会执行。

综上所述,这段代码的目的是立即禁用 SELinux,禁用并停止防火墙服务,从而确保 Kubernetes 集群的正常运行。

 5、修改内核参数

在搭建Kubernetes集群时,修改内核参数可以优化集群的性能和稳定性。以下是一些常见的内核参数调整的原因:

  1. 调整网络性能:面对高并发场景,修改内核参数可以优化网络性能。例如,开启TCP拥塞控制算法,可以提高网络的吞吐量和稳定性。
  2. 避免TIME_WAIT连接过多:在短连接并发量较高的场景中,可能导致TIME_WAIT状态的连接数量累积到超过一定量,从而导致无法新建连接。开启TIME_WAIT复用可以解决这个问题。
  3. 提高文件系统的性能:修改文件系统参数可以优化存储性能,例如增加缓冲区缓存大小、调整延迟分配机制等。
  4. 调整进程调度:修改进程调度的参数可以优化集群中不同任务的调度和资源分配,从而提高整体的性能和稳定性。
  5. 避免内存泄露和死锁问题:调整内核参数可以避免内存泄露和死锁问题,提高系统的稳定性和可靠性。

总之,修改内核参数是为了优化Kubernetes集群的性能和稳定性。具体的参数调整应该根据实际情况进行,建议在搭建集群前进行充分的测试和验证。

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
vm.max_map_count=262144
EOF
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf

 代码说明:

这段代码执行了以下操作:

  1. 使用了 cat 命令创建一个名为 k8s.conf 的新文件,该文件位于 /etc/sysctl.d/ 目录下。
  2. <<EOF 是一个 Here 文档 的标记,它告诉 cat 命令从该标记开始读取输入,直到遇到另一个标记 EOF 为止。
  3. 在 Here 文档 中,定义了一些内核参数及其值。这些参数用于配置网络、防火墙、最大映射计数等方面的系统行为。
  4. 输出结束后,再次出现了 EOF 标记,表示 Here 文档 的结束。
  5. 最后,使用 echo 命令将这些参数写入到 /etc/sysctl.d/k8s.conf 文件中。

这些参数的修改和写入文件的目的是为了在系统运行时启用特定的内核行为,以适应 Kubernetes 集群的需求。例如,net.bridge.bridge-nf-call-ip6tables = 1 和 net.bridge.bridge-nf-call-iptables = 1 参数允许通过 br_netfilter 模块启用 IPv4 和 IPv6 的网络过滤。而 net.ipv4.ip_forward=1 则启用了 IP 数据包转发。最后,vm.max_map_count=262144 参数增加了最大映射计数,这对于 Kubernetes 中的大对象(例如大型镜像)有所帮助。

最后,使用 modprobe 命令加载了 br_netfilter 模块,并使用 sysctl 命令将 /etc/sysctl.d/k8s.conf 文件中的参数应用到系统中。这样,修改后的内核参数就会生效,以满足 Kubernetes 集群的需求。

6、设置yum源

在搭建Kubernetes集群时,需要设置yum源是为了确保可以从指定的源获取所需的软件包和组件。Kubernetes依赖于许多软件包和组件,包括Docker、Kubernetes组件、网络插件等。通过设置yum源,你可以指定从可靠的源获取这些软件包和组件,以确保它们的完整性和一致性。

此外,设置yum源还可以提高安装和管理的效率。通过使用yum源,你可以一次性安装多个相关的软件包,而无需单独下载和安装每个软件包。这可以减少安装时间和操作步骤,提高搭建集群的效率。

总之,设置yum源是为了确保Kubernetes集群的稳定性和效率,提供可靠的软件包和组件来源,并简化安装和管理过程。

设置centOS版本源:

curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo

代码解释:

这个命令使用了 curl 工具来下载一个文件,并将其保存到 /etc/yum.repos.d/ 目录下。具体来说,这个命令的含义如下:

  • -o 参数指定了输出文件的名字,这里将其命名为 Centos-7.repo
  • http://mirrors.aliyun.com/repo/Centos-7.repo 是要下载的文件的URL地址。

因此,这个命令将从指定的URL下载一个名为 Centos-7.repo 的文件,并将其保存到 /etc/yum.repos.d/ 目录下。这个文件通常是一个yum源的配置文件,用于指定从哪个源获取CentOS 7的软件包。

注意:!!!

不少同志使用的时候是直接在运行商哪里进行购买的自带了CentOS比如我。

1、可以忽略这个代码不需要进行运行

2、切换到自己的版本源即可

如果你的系统不是CentOS 7,而是其他版本的Linux,你需要找到适合你的系统的yum源配置文件。

通常情况下,不同版本的Linux系统使用的yum源配置文件是不同的。因此,你需要找到适合你系统版本的yum源配置文件。

你可以通过以下几种方式来找到适合你系统的yum源配置文件:

  1. 搜索互联网:在搜索引擎中输入你的系统版本和"yum源配置文件"的关键词,可以尝试找到适合你系统的yum源配置文件。
  2. 从官方网站下载:一些Linux发行版的官方网站会提供适合其系统的yum源配置文件。你可以从官方网站下载相应的文件。
  3. 从镜像站点下载:有些Linux发行版提供了镜像站点,你可以从镜像站点下载适合你系统的yum源配置文件。

下载到适合你系统的yum源配置文件后,你可以使用类似于上述示例中的命令将其保存到 /etc/yum.repos.d/ 目录下。然后,你可以使用yum命令从指定的源安装和更新软件包。

请注意,不同的系统可能需要不同的配置。因此,在替换yum源配置文件之前,请确保你理解该文件的内容,并按照你的系统要求进行正确的配置。

安装Docker CE

curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

这个命令同样使用了 curl 工具,它的作用是从指定的URL下载一个文件,并将其保存到 /etc/yum.repos.d/ 目录下。具体来说,这个命令的含义如下:

  • -o 参数指定了输出文件的名字,这里将其命名为 docker-ce.repo
  • http://mirrors.aliyuncom.net/docker-ce/linux/centos/docker-ce.repo 是要下载的文件的URL地址。

因此,这个命令将从指定的URL下载一个名为 docker-ce.repo 的文件,并将其保存到 /etc/yum.repos.d/ 目录下。这个文件是Docker CE(Docker Community Edition)的yum源配置文件,用于指定从哪个源获取Docker CE的软件包。

请注意,这个命令是针对CentOS系统的特定操作,用于安装Docker CE。如果你使用的是其他Linux发行版,可能需要下载对应的Docker CE的yum源配置文件,并使用类似的方式进行安装。

配置Kubernetes的yum源

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

这段代码是在Linux系统上配置Kubernetes的yum源。具体来说,它的作用是:

  1. 打开一个新的文件 /etc/yum.repos.d/kubernetes.repo,这个文件是用来存储yum源的配置信息。
  2. 在该文件中,定义了一个名为[kubernetes]的yum源,其中包含了以下信息:
    • name: 这个yum源的名字是"Kubernetes"。
    • baseurl: 这个yum源的URL地址是http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    • enabled: 这个yum源是启用的,值为1。
    • gpgcheck: 这个yum源会检查软件包的GPG签名,值为0表示不检查。
    • repo_gpgcheck: 这个yum源会检查源的GPG签名,值为0表示不检查。
    • gpgkey: 指定GPG密钥的URL地址,这里提供了两个地址,用于获取公钥和软件包公钥。
  3. 最后,EOF是一个结束标记,表示上述配置信息已经结束。

通过这段代码,我们就可以配置好Kubernetes的yum源,从而使用yum命令从该源安装和更新Kubernetes相关的软件包。

清理yum缓存

 yum clean all && yum makecache

yum clean all 命令是用于清理yum缓存的。它会删除缓存目录中的所有文件,以便yum可以重新获取这些文件。

yum makecache 命令则是用于生成yum缓存的。它会从yum源中下载软件包列表和元数据,并将其存储在缓存目录中,以便在后续的软件包安装和查询操作中可以更快地访问这些数据。

因此,yum clean all && yum makecache 这条命令的作用是先清理yum缓存,然后再重新生成缓存,以获取最新的软件包列表和元数据。这样可以加快软件包安装和查询的速度,并减少对网络连接的访问。

 3、安装docker

查看所有可用的版本

yum list docker-ce --showduplicates | sort -r

 容器运行时环境还是使用大家熟知的Docker,只是在k8s v1.24以后需要额外安装cri-dockerd, k8s才能够正常识别到Docker。这里也可以使用其它容器运行时工具,比如containerd, CRI-O等可以根据个人喜好使用,只是截至目前Docker在国内占的比重依然可以说是一枝独秀。

安装最新的docker 

yum install docker-ce

配置docker加速

创建docker文件夹

mkdir -p /etc/docker

编辑docker配置文件

vi /etc/docker/daemon.json

配置文件中内容

{"insecure-registries": [    "masterip!!!:5000" ],                          "registry-mirrors" : ["https://8xpk5wnt.mirror.aliyuncs.com"]
}

启动docker

systemctl enable docker && systemctl start docker

4、部署kubernetes

文章链接

 1、安装 kubeadm, kubelet 和 kubectl

yum install -y kubelet-1.16.2 kubeadm-1.16.2 kubectl-1.16.2 --disableexcludes=kubernetes

版本更换1.20.9 -使用公网搭建集群


sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes

查看kubeadm 版本

kubeadm version

设置kubelet开机启动

systemctl enable kubelet 

2、初始化配置文件(只在master节点中执行,初始化配置文件)

kubeadm config print init-defaults > kubeadm.yaml

kubeadm config print init-defaults > kubeadm.yaml 这个代码是用来生成一个默认的 kubeadm.yaml 配置文件的命令。

让我们来详细解释一下这个命令的含义:

  • kubeadm: 这是 Kubernetes 的一个命令行工具,用于管理 Kubernetes 集群的初始化和维护。
  • config: 这是 kubeadm 工具的一个子命令,用于管理 Kubernetes 集群的配置。
  • print init-defaults: 这是 config 子命令的一个选项,用于打印出 Kubernetes 集群初始化的默认配置。
  • > kubeadm.yaml: 这是一个重定向操作,它将 kubeadm config print init-defaults 命令的输出写入到一个名为 kubeadm.yaml 的文件中。

因此,这个命令的含义是:使用 kubeadm 工具的 config 子命令的 print init-defaults 选项来获取 Kubernetes 集群初始化的默认配置,并将这个配置写入到一个名为 kubeadm.yaml 的文件中。这个文件可以用于后续的 Kubernetes 集群初始化操作。

更改配置文件

vim kubeadm.yaml

需要修改的配置行

请修改为图中的信息

1、配置id地址

advertiseAddress: master的ip!!  # apiserver地址,因为单master,所以配置master的节点内网IP

 2、修改为阿里云的镜像

imageRepository: registry.aliyuncs.com/google_containers  # 修改成阿里镜像源

 3、配置网卡网络,需要注意这个本来在文件中是没有的需要新添加 

 内网使用下面这个网段

podSubnet: 10.244.0.0/16

只在master执行 

1、下载镜像

首先查看使用的镜像列表

kubeadm config images list --config kubeadm.yaml

 得到如下列表

registry.aliyuncs.com/google_containers/kube-apiserver:v1.16.0
registry.aliyuncs.com/google_containers/kube-controller-manager:v1.16.0
registry.aliyuncs.com/google_containers/kube-scheduler:v1.16.0
registry.aliyuncs.com/google_containers/kube-proxy:v1.16.0
registry.aliyuncs.com/google_containers/pause:3.1
registry.aliyuncs.com/google_containers/etcd:3.3.15-0
registry.aliyuncs.com/google_containers/coredns:1.6.2

下载镜像到本地

kubeadm config images pull --config kubeadm.yaml

 注意:

如果出现不可用的情况,请使用如下方式来代替

1、还原kubeadm.yaml的imageRepository

...
imageRepository: k8s.gcr.io
...## 查看使用的镜像源
kubeadm config images list --config kubeadm.yaml
k8s.gcr.io/kube-apiserver:v1.16.0
k8s.gcr.io/kube-controller-manager:v1.16.0
k8s.gcr.io/kube-scheduler:v1.16.0
k8s.gcr.io/kube-proxy:v1.16.0
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.15-0
k8s.gcr.io/coredns:1.6.2

 2、使用docker hub中的镜像源来下载,注意上述列表中要加上处理器架构,通常我们使用的虚拟机都是amd64

$ docker pull mirrorgooglecontainers/kube-scheduler-amd64:v1.16.0
$ docker pull mirrorgooglecontainers/etcd-amd64:3.3.15-0
...
$ docker tag mirrorgooglecontainers/etcd-amd64:3.3.15-0 k8s.gcr.io/etcd:3.3.15-0

 2、初始化master节点

kubeadm init --config kubeadm.yaml

kubernetes--技术文档--安装kubernetes集群报错[kubelet-check] Initial timeout of 40s passed.(已经解决)_一单成的博客-CSDN博客

注意:

        可能出现报错为有一个组件无法正常启动。

 如果成功会出现如下信息:

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/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configYou 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/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 内网ip:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:e277fcb92e605f89b24ee3a0f904519c6ffae56a5c5f0a4768737ae3de83eb79 

保存数据 下面有用

kubeadm join 内网ip:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:e277fcb92e605f89b24ee3a0f904519c6ffae56a5c5f0a4768737ae3de83eb79 

接下来按照上述提示信息操作,配置 kubectl客户端认证

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

这个时候使用  

kubectl get nodes

这个代码查看节点还是处于notReady状态,因为还没有配置网络插件。

在slave中部署

1、添加slave节点到集群中(在slave节点中部署)

使用上面保存的指令在进行添加slave节点

kubeadm join ip:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:e277fcb92e605f89b24ee3a0f904519c6ffae56a5c5f0a4768737ae3de83eb79

在master中执行

安装flannel插件

wget https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml

修改配置指定网卡名称,大概在文件的和170行,190行,添加一行配置:

$ vi kube-flannel.yml
...      containers:- name: kube-flannelimage: quay.io/coreos/flannel:v0.11.0-amd64command:- /opt/bin/flanneldargs:- --ip-masq- --kube-subnet-mgr- --iface=eth0  # 如果机器存在多网卡的话,指定内网网卡的名称,默认不指定的话会找第一块网resources:requests:cpu: "100m"
...

安装flannel网络插件 

# 先拉取镜像,此过程国内速度比较慢
$ docker pull quay.io/coreos/flannel:v0.11.0-amd64
# 执行flannel安装
$ kubectl create -f kube-flannel.yml

 设置master节点是否可调度(可选)

默认部署成功后,master节点无法调度业务pod,如需设置master节点也可以参与pod的调度,需执行:

kubectl taint node k8s-master node-role.kubernetes.io/master:NoSchedule-

 验收!!!

操作节点: 在master节点(k8s-master)执行

kubectl get nodes  #观察集群节点是否全部Ready

 创建测试nginx服务

kubectl run  test-nginx --image=nginx:alpine

 查看pod是否创建成功,并访问pod ip测试是否可用

kubectl get po -o wide

 访问子节点看是否能返回页面代码!

curl 内网ip

部署可视化页面 

下载!

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta5/aio/deploy/recommended.yaml

 修改配置文件

vi recommended.yaml
修改Service为NodePort类型
......
kind: Service
apiVersion: v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard
spec:ports:- port: 443targetPort: 8443selector:k8s-app: kubernetes-dashboardtype: NodePort  # 加上type=NodePort变成NodePort类型的服务

 访问地址,本例为30133端口

kubectl create -f recommended.yaml
结果:
kubectl -n kubernetes-dashboard get svc
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.105.62.124   <none>        8000/TCP        31m
kubernetes-dashboard        NodePort    10.103.74.46    <none>        443:30133/TCP   31m

 浏览器访问 https://62.234.133.177:30133,其中62.234.133.177为master节点的外网ip地址,chrome目前由于安全限制,测试访问不了,使用firefox可以进行访问。

建ServiceAccount进行访问

vi admin.conf

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:name: adminannotations:rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:kind: ClusterRolename: cluster-adminapiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccountname: adminnamespace: kubernetes-dashboard---
apiVersion: v1
kind: ServiceAccount
metadata:name: adminnamespace: kubernetes-dashboard$ kubectl create -f admin.conf
$ kubectl -n kubernetes-dashboard get secret |grep admin-token
admin-token-fqdpf                  kubernetes.io/service-account-token   3      7m17s
# 使用该命令拿到token,然后粘贴到
$ kubectl -n kubernetes-dashboard get secret admin-token-fqdpf -o jsonpath={.data.token}|base64 -d
eyJhbGciOiJSUzI1NiIsImtpZCI6Ik1rb2xHWHMwbWFPMjJaRzhleGRqaExnVi1BLVNRc2txaEhETmVpRzlDeDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi10b2tlbi1mcWRwZiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJhZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjYyNWMxNjJlLTQ1ZG...

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux:编写编译脚本Makefile文件

一、生成可执行文件 1、一个源文件编译 本例子主要区别.c及.cpp文件及编译该文件时使用的编译链。 1).c文件 // testadd.c #include <stdio.h> int main() {int a 1;int b 2;int sum a b;printf("sum %d\n", sum);return 0; }// Makefie GXX g CC gcc…

无涯教程-PHP - XML GET

XML Get已用于从xml文件获取节点值。以下示例显示了如何从xml获取数据。 Note.xml 是xml文件&#xff0c;可以通过php文件访问。 <SUBJECT><COURSE>Android</COURSE><COUNTRY>India</COUNTRY><COMPANY>LearnFk</COMPANY><PRICE…

Android开发之性能优化:过渡绘制解决方案

1. 过渡绘制 屏幕上某一像素点在一帧中被重复绘制多次&#xff0c;就是过渡绘制。 下图中多个卡片跌在一起&#xff0c;但是只有第一个卡片是完全可见的。背后的卡片只有部分可见。但是Android系统在绘制时会将下层的卡片进行绘制&#xff0c;接着再将上层的卡片进行绘制。但其…

线上问诊:业务数据采集

系列文章目录 线上问诊&#xff1a;业务数据采集 文章目录 系列文章目录前言一、环境准备1.Hadoop2.Zookeeper3.Kafka4.Flume5.Mysql6.Maxwell 二、业务数据采集1.数据模拟2.采集通道 总结 前言 暑假躺了两个月&#xff0c;也没咋写博客&#xff0c;准备在开学前再做个项目找…

byte-budddy: Unexpected type reference on method: 19

使用byte-buddy版本为1.10.1 在使用agent时&#xff0c;启动应用&#xff0c;报错如下 造成报错的相关代码 Data public class CloudAccountUpdateReq implements Serializable {private List<Valid CloudAccountDiscountDTO> discountList;}已修复 issue: https://gi…

Arduino程序设计(四)按键消抖+按键计数

按键消抖按键计数 前言一、按键消抖二、按键计数1、示例代码2、按键计数实验 参考资料 前言 本文主要介绍两种按键控制LED实验&#xff1a;第一种是采用软件消抖的方法检测按键按下的效果&#xff1b;第二种是根据按键按下次数&#xff0c;四个LED灯呈现不同的流水灯效果。 一…

面试题(二)

目录 一.集合 (1) LinkedHashMap(JDK 1.8) (2) ArrayList (3) HashMap (4) ConcurrentHashMap 二. IO流 (1) 分类 (2) 应用 三.多线程 (1) 线程状态 (2) 死锁 (3) 应用 (4) 要点 (5) 线程池 返回 ThreadPoolExecutor 类分析 线程池原理分析 四. 数据库 (1) …

0基础学习VR全景平台篇 第89篇:智慧眼-安放热点

一、功能说明 安放热点&#xff0c;是智慧眼成员们正式进入城市化管理的第一步&#xff0c;即发现问题后以安放热点的形式进行标记&#xff0c;再由其他的角色成员对该热点内容作出如核实、处理、确认完结等操作&#xff08;具体流程根据项目实际情况而定&#xff09;。 二、…

geacon_pro配合catcs4.5上线Mac、Linux

我的个人博客: xzajyjs.cn 一些链接 Try师傅的catcs4.5项目: https://github.com/TryGOTry/CobaltStrike_Cat_4.5&#xff0c;最新版解压密码见&#xff1a;https://www.nctry.com/2708.html geacon_pro: https://github.com/testxxxzzz/geacon_pro BeaconTool.jar: https:/…

BERT、ERNIE、Grover、XLNet、GPT、MASS、UniLM、ELECTRA、RoBERTa、T5、C4

BERT、ERNIE、Grover、XLNet、GPT、MASS、UniLM、ELECTRA、RoBERTa、T5、C4 ELMOBERTERNIE![在这里插入图片描述](https://img-blog.csdnimg.cn/274e31d0f8274c748d05abe2ec65fc73.png)GroverXLNetGPTMASSUniLMELECTRARoBERTaT5C4ELMO BERT

干货分享:可证明安全的隐私计算

“隐语”是开源的可信隐私计算框架&#xff0c;内置 MPC、TEE、同态等多种密态计算虚拟设备供灵活选择&#xff0c;提供丰富的联邦学习算法和差分隐私机制 开源项目&#xff1a;github.com/secretflowgitee.com/secretflow 以下文章来源于DataFunTalk &#xff0c;作者洪澄 D…

Typecho博客搭建 实现公网访问内网站点

文章目录 前言1. 环境安装2.安装Typecho3.安装cpolar内网穿透4. 固定公网地址5.配置Typecho 前言 Typecho是一款PHP语言编写的开源博客程序&#xff0c;它是一个轻量级的内容管理系统&#xff0c;专注于博客领域。支持多用户、多站点、多语言等功能&#xff0c;可以满足不同用…