学习并总结一下使用三台虚拟机搭建一个kubernetes集群的过程。
目录
- Kubernetes 集群大致分为两类:一主多从和多主多从。
(1)一主多从(单 master ):一个 Master 节点,多台 Node 节点,搭建简单,但是有单机故障风险,适合用于测试环境。
(2)多主多从(高可用):多台 Master 节点和多台 Node 节点,搭建麻烦但安全性高,适合用于生产环境。- kubernetes有多种部署方式,目前主流的方式有kubeadm、minikube、二进制包三种。简介如下:
(1)minikube:一个用于快速搭建单节点的kubernetes工具。
(2)kubeadm:一个用于快速搭建kubernetes集群的工具。
(3)二进制包:从官网上下载每个组件的二进制包依次安装,此方式对于理解kubernetes组件更加有效。
1.集群类型:一主多从
2.安装方式:使用kubeadm工具快速搭建kubernetes集群。
3.主机规划:
| 角色 | IP地址 | 实验环境 |
|---|---|---|
| Master | 192.168.79.101 | Centos7.5 虚拟机 |
| Node1 | 192.168.79.102 | Centos7.5 虚拟机 |
| Node2 | 192.168.79.103 | Centos7.5 虚拟机 |
其实简单来说通过两条指令就能部署一个kubernetes集群:
1.创建一个master节点:kubeadm init
2.将node节点加入当前集群:kubeadm join <Master 节点的IP和端口>
在执行kubeadm init 指令后,kubeadm首先会做一系列检查工作,确保机器能够安装kubernetes:
- linux系统内核的版本是否必须3.10以上?
- linux cgroups模块是否可用?
- 机器的hostname是否标准?
- 安装的kubeadm和kubelet是否匹配?
- docker是否已经安装?
…因此建议把环境配置好再部署。
K8S集群服务器内核必须一致,建议在每个节点(三台机器)上都升级系统内核到最新版本。
1.检查操作系统的版本(操作系统的版本至少在7.5以上)
实验环境下机器的系统版本为7.9,内核版本为3.10.0。
#查看系统版本
cat /etc/redhat-release
#查看当前系统的内核:
uname -sr

2.默认的 3.10.0版本较低,建议安装最新主线内核版本:
#在 CentOS 7.x 上启用 ELRepo 仓库:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
#查看可用的系统内核相关包:
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
#安装最新主线内核版本:
yum -y --enablerepo=elrepo-kernel install kernel-ml

3.设置默认的内核版本:
vi /etc/default/grub
修改GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0 # 修改此处,原来是 saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
4.重新创建内核配置:
grub2-mkconfig -o /boot/grub2/grub.cfg
5.重启系统使配置生效。
reboot
这一步的作用是方便识别,如主节点所在的虚拟机命名为k8s-master,从节点所在的虚拟机命名为k8s-node1、k8s-node2。
#命令:hostnamectl set-hostname <hostname>
#示例:
# 192.168.79.101(在主节点执行)
hostnamectl set-hostname k8s-master
# 192.168.79.102(在node1节点执行)
hostnamectl set-hostname k8s-node1
# 192.168.79.103(在node2节点执行)
hostnamectl set-hostname k8s-node2
Linux 的 /etc/hosts 文件是配置ip地址及其对应主机名的文件,这里可以记录本机的或其他主机的ip及其对应主机名,方便后面集群节点间的直接调用,因此在每个节点(三台机器)上都配置一下主机名解析。
cat >> /etc/hosts << EOF
127.0.0.1 $(hostname)
192.168.79.101 k8s-master
192.168.79.102 k8s-node1
192.168.79.103 k8s-node2
EOF

Kubernetes 要求集群中的节点时间必须精确一致,因此在每个节点(三台机器)上都添加时间同步。
yum install ntpdate -y
ntpdate time.windows.com

在每个节点(三台机器)上都关闭防火墙,并设置开机禁用。
systemctl stop firewalld
systemctl disable firewalld
在RedHat linux操作系统中默认开启了防火墙,selinux也处于启动状态,一般状态为enforing。这致使很多服务端口默认是关闭的,一些linux系统上应用程序运行时,可以会被拒绝,导致无法正常运行的情况。因此建议初学者把selinux与防火墙这两项都关掉。因此在每个节点(三台机器)上都进行以下操作:
#查看 selinux 是否开启
getenforce
#实验环境下选择永久关闭。
#1.永久关闭 SELinux ,需要重启机器生效:
sed -i 's/enforcing/disabled/' /etc/selinux/config
#2.临时关闭当前会话的 SELinux ,机器重启之后无效:
setenforce 0
当内存不足时,linux会自动使用swap,将部分内存数据存放到磁盘中。swap会导致docker的运行不正常,性能下降,还可能产生其他问题,因此部署k8s集群时一定要关闭swap分区。在每个节点(三台机器)上都进行以下操作:
#永久关闭 swap ,需要重启机器生效:
sed -ri 's/.*swap.*/#&/' /etc/fstab
#拓展:临时关闭当前会话的 swap ,机器重启之后无效:
swapoff -a

- netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。
- 规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。
- 在每个节点(三台机器)上都将桥接的IPv4流量传递到iptables的链:
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
EOF
# 加载br_netfilter模块
modprobe br_netfilter
# 查看是否加载
lsmod | grep br_netfilter
# 使生效
sysctl --system
#拓展:持久化修改(保留配置包本地文件,重启系统或服务进程仍然有效)
sysctl -p

- ipvs (IP Virtual Server) 实现了传输层负载均衡,也就是4层LAN交换,作为Linux内核的一部分。ipvs运行在主机上,在真实服务器集群前充当负载均衡器。
- k8s 默认情况下有三种网络负载均衡模式:userspace 代理模式、iptables代理模式、ipvs代理模式。这三种代理模式的负载能力是依次递增的
- 在 Kubernetes 中 service 有两种代理模型,一种是基于 iptables ,另一种是基于 ipvs 。ipvs 的性能要高于 iptables 的,但是如果要使用它,需要手动载入 ipvs 模块。
1.在三台机器安装 ipset 和 ipvsadm :
yum -y install ipset ipvsadm
2.在三台机器执行如下脚本:
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
3.授权、运行、检查是否加载:
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

此时三台机器都基本上完成了安装前准备,因为有些配置是重启后生效,因此在每个节点(三台机器)上都重启一下机器。
reboot
- 因为安装kubernetes需要docker容器化环境,因此先安装docker,但是注意kubernetes版本和docker的版本对应问题。按本博客的版本即可,如果是安装其他版本,需参考官方文档。
- Kubernetes 和 Docker之间有版本的对应关系(如 Docker 版本v20.10对应 Kubernetes 的版本是 v1.21),版本对应不上可能会提示docker版本不兼容,可参考Kubernetes各版本对应支持的docker版本列表。
- 在每个节点(3台机器)上都安装docker
1.卸载旧版本docker(如有)
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
2.yum 安装 gcc 相关
yum -y install gcc
yum -y install gcc-c++
3.安装指定版本docker(v20.10)
#安装yum工具包
yum -y install yum-utils
#设置阿里云的stable 镜像仓库
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新 yum 软件包索引
yum makecache fast
#安装指定版本的 Docker(v20.10.8):
yum -y install docker-ce-3:20.10.8-3.el7.x86_64 docker-ce-cli-1:20.10.8-3.el7.x86_64 containerd.io
4.启动docker并设置开机自启
systemctl start docker
systemctl enable docker
5.验证 Docker 是否安装成功:
#查看docker状态:
systemctl status docker
docker version

为了下载各组件时从国内镜像源下载,在每个节点(3台机器)上都需要配置镜像加速器。
mkdir -p /etc/docker
配置阿里云镜像加速:
tee /etc/docker/daemon.json <<-'EOF'
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
"https://du3ia00u.mirror.aliyuncs.com",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://registry.docker-cn.com"
],
"live-restore": true,
"log-driver":"json-file",
"log-opts": {"max-size":"500m", "max-file":"3"},
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 5,
"storage-driver": "overlay2"
}
EOF
#使之生效
systemctl daemon-reload
#重启docker
systemctl restart docker

由于kubernetes的镜像源在国外,下载软件包较慢或者下载失败,这里在每个节点(3台机器)上都切换成国内的阿里云镜像源。
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

在每个节点(3台机器)上都需要安装kubeadm、kubelet和kubectl,安装时指定版本为1.21.10。
- kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。
- Kubelet:运行在cluster(集群)所有节点上,负责启动POD和容器。
- kubectl是Kubernetes集群的命令行工具,通过kubectl可以部署和管理应用,查看各种资源,创建,删除和更新组件。
1.安装三大组件:
yum install -y kubelet-1.21.10 kubeadm-1.21.10 kubectl-1.21.10
2.验证并查看安装版本:
kubelet --version
3.为了实现Docker使用的cgroup drvier和kubelet使用的cgroup drver一致,修改"/etc/sysconfig/kubelet"文件为以下内容:
vi /etc/sysconfig/kubelet
# 修改为
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"
4.设置为开机自启动即可,由于没有生成配置文件,集群初始化后自动启动:
systemctl enable kubelet

在每个节点(3台机器)上都安装好k8s集群所需的镜像。
1.查看 Kubernetes 安装所需镜像
kubeadm config images list
2.下载 Kubernetes 安装所需镜像
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.10
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.21.10
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.21.10
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.10
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.4.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.8.0
3.查看镜像下载情况
docker images

1.在 192.168.79.101 机器上部署 Kubernetes 的 Master 节点:
kubeadm init \
--apiserver-advertise-address=192.168.79.101 \
--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version=v1.21.10 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16
说明:
- apiserver-advertise-address =Master节点的 IP 地址。
- image-repository=docker镜像仓库地址。
- kubernetes-version= 安装的kubernetes版本
- service-cidr 和 apiserver-advertise-address 、pod-network-cidr 不能在同一个网络范围内。
- 不要使用 172.17.0.1/16 网段范围,因为这是 Docker 默认使用的。

2.拷贝kubectl使用的连接k8s认证文件到默认路径,根据日志提示,想要开始使用集群,需要在 master节点机器上(192.168.79.101 )执行如下命令:
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
# 如果是 root 用户,还可以执行如下命令
export KUBECONFIG=/etc/kubernetes/admin.conf

3.默认的 token 有效期为 2 小时,当过期之后,该 token 就不能用了,另外也可以生成一个永不过期的token,命令如下 :
#生成token,有效期2小时
kubeadm token create --print-join-command
# 生成一个永不过期的token
kubeadm token create --ttl 0 --print-join-command

此时系统自动生成一个kubeadm join命令:
kubeadm join 192.168.79.101:6443 --token y1aqpl.ktwweub0h338qh46 --discovery-token-ca-cert-hash sha256:dca999e4b0fdd14b7e92a6ed3cd1fbfedad273ba409e0bc5a76ebc947bd1f3b2
通过上面自动生成的kubeadm join命令,将两个node节点加入到kubernetes集群中
在 192.168.79.101 和 192.168.79.102 两台机器上都执行生成的命令加入到当前集群:
kubeadm join 192.168.79.101:6443 \
--token y1aqpl.ktwweub0h338qh46 \
--discovery-token-ca-cert-hash \
sha256:dca999e4b0fdd14b7e92a6ed3cd1fbfedad273ba409e0bc5a76ebc947bd1f3b2

Kubernetes本身并没有自己实现容器网络,而是借助CNI标准,通过插件化的方式来集成各种网络插件,实现集群内部网络相互通信。
Kubernetes集群设计了Cluster IP、Node IP、Pod IP三种类型的通信IP:
- (1)Cluster IP是Service对象的IP地址,实现Pod服务的负载均衡,外部网络无法ping通,只在集群内部可以访问使用,是一个虚拟的IP。
- (2)Node IP是集群节点Node的IP地址,可以是物理机的IP(也可能是虚拟机IP)。
- (3)Pod IP是容器组Pod的IP地址,是在容器组初始化过程由Pause容器申请的IP地址。其中Pod IP是容器网络接口CNI与具体的网络插件来实现IP的申请及数据包的转发。
1.Kubernetes 支持多种网络插件,比如 flannel、calico、canal 等,任选一种安装即可,这里选择 calico。在 master节点(192.168.79.101 )上执行:
kubectl apply -f https://projectcalico.docs.tigera.io/v3.19/manifests/calico.yaml

2.查看部署 CNI 网络插件进度:
kubectl get pods -n kube-system
#或者
watch kubectl get pods -n kube-system

3.在Master节点使用kubectl工具查看节点状态:
kubectl get nodes

由图可知一个一主两从的k8s集群已经搭建好了。
1.在 Master节点(192.168.65.101)上设置 kube-proxy 的 ipvs 模式:
kubectl edit cm kube-proxy -n kube-system
找到ipvs模块,将 mode: " " 双引号里面加上ipvs。

2.删除 kube-proxy ,让 Kubernetes 集群自动创建新的 kube-proxy :
kubectl delete pod -l k8s-app=kube-proxy -n kube-system

默认情况下,只有 Master 节点才有 kubectl 命令,但是有些时候我们也希望在 Node 节点上执行 kubectl 命令。
1.在两个node节点(192.168.79.102 和 192.168.79.103)上都创建config文件,执行命令:
mkdir -pv ~/.kube
touch ~/.kube/config

2.在node节点已经创建好了config文件,接下来将master节点的admin.conf文件远程拷贝复制到需要安装的机器(注意你配置的机器名是什么?如root@k8s-node1)。在master节点(192.168.79.101)上执行:
scp /etc/kubernetes/admin.conf root@k8s-node1:~/.kube/config
scp /etc/kubernetes/admin.conf root@k8s-node2:~/.kube/config

3.此时在两个node节点验证,已经可以使用kubectl命令了:

拓展:scp命令的应用
- 机器名一般为root@localhost,把localhost换成机器IP
- 复制的是目录的话就要加-r参数
- 复制过程输入yes同意,再输入对应机器密码即可
1.把远程的文件复制到本地
scp 远程机器名:要复制文件的地址 复制到本地的文件地址
例:scp root@192.168.79.100:/val/test/test.tar.gz /val/test/test.tar.gz
2.把本地的文件复制到远程主机上
scp 要复制文件的地址 远程机器名:复制到该机器的文件的地址
例:scp /val/test.tar.gz root@192.168.79.100:/val/test.tar.gz
3.把远程的目录复制到本地
例:scp -r root@192.168.79.100:/val/test/ /val/test/
4.把本地的目录复制到远程主机上
例:scp -r /val/ root@192.168.79.100:/val/
5.当同时有多个服务器的文件要复制到本地目录:
例:scp root@192.168.79.1:/var/cp1.tar.gz root@192.168.79.2:/var/cp2.tar.gz /var/tmp/
最后面的一个必需是目录,前面的必须是文件,才能成功批量复制,复制中会提示多次输入密码。
kubernetes集群已经部署完毕,接下来可以部署服务使用了。
在Kubernetes集群中部署nginx1.14,测试下集群是否正常工作。
1.部署Nginx:
kubectl create deployment nginx --image=nginx:1.14-alpine
2.暴露端口:
kubectl expose deployment nginx --port=80 --type=NodePort
3.查看服务状态:
kubectl get pods,svc

启动 kubectl 自动补全功能,参考kubernetes官网:Linux 系统中的 Bash 自动补全功能
# 安装bash
yum -y install bash-completion
# 自动补全
echo 'source <(kubectl completion bash)' >>~/.bashrc
kubectl completion bash >/etc/bash_completion.d/kubectl
# 全局
kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null
source /usr/share/bash-completion/bash_completion

Dashboard 是基于网页的 Kubernetes 用户界面。可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。我们可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源 (如 Deployment,Job,DaemonSet 等等)。常用的如对Deployment实现弹性伸缩、发起滚动升级、重启 Pod 或者使用向导创建新的应用,展示Kubernetes集群中的资源状态信息和所有报错信息等。
参考资料:安装Kubernetes Dashboard
1.使用 wget 命令将dashboard(这里版本为2.0.4)下载到Master 节点上:
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml

2.构建 Pod:
kubectl apply -f recommended.yaml
3.查看 Pod 状态,等待一段时间,已经处于running状态。
kubectl get pods --all-namespaces | grep dashboard

4.删除现有的 dashboard 服务
dashboard 服务的 namespace 是 kubernetes-dashboard,但是该服务的类型是ClusterIP,不便于我们通过浏览器访问,因此需要在后面配置 NodePort 类型的,使之在集群外部能否访问。
#查看所有命名空间namespace
kubectl get svc --all-namespaces
#删除现有dashboard服务
kubectl delete service kubernetes-dashboard --namespace=kubernetes-dashboard

- 配置文件放在:/etc/Kubernetes
- k8s所有证书的存放位置:/etc/kubernetes/pki
- 环境变量(env)存放的位置:/var/lib/kubelet/kubeadm-flags.env
- kubelet配置文件存放位置:/var/lib/kubelet/config.yaml
1.创建一个nodePort类型的kubernetes-dashboard。进入/etc/kubernetes 目录下创建配置文件dashboard-svc.yaml:
cd /etc/kubernetes
vi /etc/kubernetes/dashboard-svc.yaml
dashboard-svc.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
selector:
k8s-app: kubernetes-dashboard
2.创建kubernetes-dashboard的 Service服务:
kubectl apply -f dashboard-svc.yaml

此时再次查看namespace,已经有nodePort类型的kubernetes-dashboard:
kubectl get svc --all-namespaces

3.创建 kubernetes-dashboard 管理员角色,在/etc/kubernetes 目录下创建配置文件dashboard-svc-account.yaml,其内容如下:
apiVersion: v1
kind: ServiceAccount
metadata:
name: dashboard-admin
namespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: dashboard-admin
subjects:
- kind: ServiceAccount
name: dashboard-admin
namespace: kube-system
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
4.同样的执行创建,使该yaml文件生效:
kubectl apply -f dashboard-svc-account.yaml

5.获取 token,先查找token文件:
kubectl get secret -n kube-system |grep admin|awk '{print $1}'
#系统返回dashboard-admin-token-bvhwm,查看token
kubectl describe secret dashboard-admin-token-bvhwm -n kube-system|grep '^token'|awk '{print $2}'

此时我们得到了dashboard的token,先复制保存一份:
eyJhbGciOiJSUzI1NiIsImtpZCI6IkFEaEJBYkY1YXAzS3ZTVGZzdFY4aXJ5NWRmU1VIN2FzMDlVQ1U2WndvZGcifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tYnZod20iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VuzZXJ2aWNlLWFjY291bnQudWlkIjoiYzExNmZjMWUtYmI4My00MTM5LWI4Yz2hib2FyZC1hZG1pbiJ9.fkhA8aXAidNBIvytgfAIK3v5-8cibO0Ub4dsUTzF1BymraFOA-MZmnEn6yIUuhouh5jOcAzCOGlwrbxwjWM44azAm4YLk6E8WtgM4AoDbJDXY2UqrPP2xYdkLiPwqXSB6gVR5wxMMbkH3AIpmn5yilL7ocb0-N9m4Gdsu1ummIi7a5cdH4vtqCG_qO-qtlXwG_UGDbq6QOsVMJ4VxsmlOk3uPa746gG51BFZhaIm9b1Z9JhimJjPvbe_Gy7rgY9V1CieOJmDoev0IbjdDm58yDOSgsPVfJoBzRheo08N6bky0Kt0lMDOBSupw
6.查看外部访问端口,也就是之前我们创建的 Service:
kubectl get svc --all-namespaces | grep dashboard

7.在浏览器访问dashboard,网址输入【集群IP:端口号】如:https://192.168.79.102:32031/可以访问web管理界面。出现以下界面时继续访问地址即可。

输入之前生成的token登录dashboard:

此时已经成功进入,可以通过dashboard管理kubernetes集群资源了:

1.kubernetes官网
2.k8s集群环境的搭建
3.Kubernetes(v1.21)安装
#部署yaml文件:
kubectl apply -f xxx.yaml
#获取节点和服务版本信息,并查看附加信息
kubectl get nodes -o wide
#获取pod信息,默认是default名称空间
kubectl get pod
#获取pod信息,默认是default名称空间,并查看附加信息
#kubectl get pod -o wide
#获取指定名称空间的pod
kubectl get pod -n kube-system
#获取指定名称空间中的指定pod
kubectl get pod -n kube-system podName
#获取所有名称空间的pod
kubectl get pod -A
#查看所有名称空间的service信息
kubectl get svc -A
#查看componentstatuses信息
kubectl get cs
#查看所有deployments信息
kubectl get deploy -A
#查看所有replicasets信息
kubectl get rs -A
#查看所有statefulsets信息
kubectl get sts -A
#查看所有jobs信息
kubectl get jobs -A
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模
我是Ruby新手,并被要求在我们的新项目中使用它。我们还被要求使用Padrino(Sinatra)作为后端/框架。我们被要求使用Rspec进行测试。我一直在寻找可以指导在Padrino上使用RspecforRuby的教程。我得到的主要是引用RoR。但是,我需要RubyonPadrino。请在任何入门/指南/引用/讨论等方面指导我。如有不妥之处请指正。可能是我没有针对我的问题搜索正确的词/短语组合。我正在使用Ruby1.9.3和Padrinov.0.10.6。注意:我还提到了SOquestion,但它没有帮助。 最佳答案 我没用过Pa
文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:FlashMessagesinPartials(Rails3)我正在做MichaelHartl的Railstutorial和listing7.26将flash消息添加到应用程序布局:...">...这很好用。但是,我试图通过在我的部分文件夹中创建一个_flash.html.erb来清理这段代码...">-->...并且比使用......在我的应用程序布局中,我的所有Rspec测试开始失败,每个测试都显示以下消息:Failure/Error:before{visitsignup_path}ActionView:
我正在使用SublimeText2,同时遵循MichaelHartl的RubyonRails教程。可以在http://ruby.railstutorial.org/book/ruby-on-rails-tutorial找到我所指的教程的具体部分。(ctrl+F“list5.26”)。我能够创建规范/支持文件。但是,在尝试创建spec/support/utilities.rb文件时,我收到消息“无法保存~/rails_projects/sample_app/spec/support/utilities.rb”。有人知道为什么会这样吗?SublimeText论坛上有人似乎遇到了完全相同的问
目录一、安装包链接二、安装详细步骤1.安装Wireshark和WinPcap2.安装OracleVMVirtualBox3.安装ensp三、安装后注册四、启动路由器出现40错误怎么解决一、安装包链接二、安装详细步骤链接:https://pan.baidu.com/s/1QbUUYMOMIV2oeIKHWP1SpA?pwd=xftx提取码:xftx1.安装Wireshark和WinPcap找到Wireshark安装包所在文件夹,双击它,按照以下步骤安装。2.安装OracleVMVirtualBox找到OracleVMVirtualBox安装包所在文件夹,双击它,按照以下步骤安装。注:可自定义安装
开门见山|拉取镜像dockerpullelasticsearch:7.16.1|配置存放的目录#存放配置文件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/config#存放数据的文件夹mkdir-p/opt/docker/elasticsearch/node-1/data#存放运行日志的文件夹mkdir-p/opt/docker/elasticsearch/node-1/log#存放IK分词插件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/plugins若你使用了moba,直接右键新建即可如上图所示依次类推创建
【适用平台】私有云 说明:完成私有云部分是需要两台虚拟机的,分别为controller、compute两个节点,但我们只需配置一台,然后克隆就方便多啦!需要用到的映射文件:关于vm的安装我就不介绍的,毕竟挺简单的,下面让我们看看基于私有云模块中,虚拟机的搭建吧。1、创建新的虚拟机,这里一般我会选择自定义,毕竟后面的配置都要根据私有云相关来进行搭建,会比较复杂。(如果是基础的可以选择典型,典型的满足一般虚拟机的配置) 2、选择稍后安装操作系统会比较方便后续的选择,这里你也可以自己选择自己的映像文件(但不建议) 3、我们是基于Linux下操作的,所以选择Linux客户机操作系统,版本选择自己