当前位置: 首页 > article >正文

K8S简单部署,以及UI界面配置

准备两台服务器K8Smaster和K8Sminion

分别在两台服务器上执行以下代码

#添加hosts解析;
cat >/etc/hosts<<EOF
127.0.0.1 localhost localhost.localdomain
192.168.45.133 master1
192.168.45.135 node2
EOF
#临时关闭selinux和防火墙;
sed -i '/SELINUX/s/enforcing/disabled/g'  /etc/sysconfig/selinux
setenforce  0
systemctl   stop     firewalld.service
systemctl   disable   firewalld.service
#同步节点时间;
yum install ntpdate -y
ntpdate  pool.ntp.org
#修改对应节点主机名;
hostname `cat /etc/hosts|grep $(ifconfig|grep broadcast|awk '{print $2}')|awk '{print $2}'`;su
#关闭swapoff;
swapoff -a

执行完成后,主节点名称改为master1,monion节点名称变为node2

分别在两台服务器master1、node2节点进行如下配置:

cat > /etc/modules-load.d/ipvs.conf <<EOF
# Load IPVS at boot
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4
EOF
systemctl enable --now systemd-modules-load.service
#确认内核模块加载成功
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
#安装ipset、ipvsadm
yum install -y ipset ipvsadm
#配置内核参数;
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

在node1、node2节点进行如下配置:

# 安装依赖软件包
yum install -y device-mapper-persistent-data lvm2
yum install -y docker
#修改docker配置文件
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "registry-mirrors": ["https://uyah70su.mirror.aliyuncs.com"]
}
EOF
# 注意,由于国内拉取镜像较慢,配置文件最后增加了registry-mirrors
mkdir -p /etc/systemd/system/docker.service.d
# 重启docker服务
systemctl daemon-reload
systemctl enable docker.service
systemctl start docker.service
ps -ef|grep -aiE docker

看到进程就说明配置成功

在两台服务器Kubernetes上添加部署源

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
EOF

在两台你服务器上执行以下配置

#安装Kubeadm;
yum install -y kubeadm-1.20.4 kubelet-1.20.4 kubectl-1.20.4
#启动kubelet服务
systemctl enable kubelet.service
systemctl start kubelet.service
systemctl start docker.service

执行完检查是否安装完毕

在master1进行如下配置,执行kubeadm init初始化安装Master相关软件

kubeadm init   --control-plane-endpoint=192.168.45.133:6443 --image-repository registry.aliyuncs.com/google_containers   --kubernetes-version v1.20.4   --service-cidr=10.10.0.0/16   --pod-network-cidr=10.244.0.0/16   --upload-certs

看到这条语句说明初始化成功

在master1执行以下配置

在node执行以下命令,添加节点

在master上执行以下命令

删除节点命令如下

重置kube,重新执行添加节点命令

 因为网络没有连通,所以显示notready

在主节点上需要进行网络节点的配置,下载calico.yaml文件,下载网络插件wget https://docs.projectcalico.org/v3.10/manifests/calico.yaml

上传四个镜像文件

将主键加载到容器列表

将calico.yaml里面镜像修改为自己私有仓库的地址、修改镜像下载策略为使用本地;

在node上同时上传四个镜像文件,并加载到docker容器中

在主节点加calico.yaml配置文件

之后发现网络连通状态为ready

查看Flanneld网络组建是否部署成功;

部署Dashboard所有指令在master上执行即可,下载Dashboard配置文件;

备份下载的recommended.yaml文件,修改文件recommended.yaml的39行内容,#因为默认情况下,service的类型是cluster IP,需更改为NodePort的方式,便于访问,也可映射到指定的端口。

修改文件recommended.yaml的195行内容,#因为默认情况下Dashboard为英文显示,可以设置为中文。

删除默认image下载策略,添加新的策略使用本地镜像

在所有节点master和node1上导入dashboard镜像;

ls k8s-dashboard.tar k8s-metrics-scraper.tar

for i in $(ls *.tar);do docker load -i $i ;done

执行以下命令

#执行kubectl apply -f recommended.yaml;

kubectl apply -f recommended.yaml

查看Dashboard运行状态;

kubectl get pod -n kubernetes-dashboard

kubectl get svc -n kubernetes-dashboard

#创建Dashboard的管理用户;
kubectl create serviceaccount dashboard-admin -n kube-system
#将创建的dashboard用户绑定为管理用户;
kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

此时访问K8S前台页面显示如下

此时在Token中输入token值

成功登录前台页面

此时K8S前台UI界面显示成功,配置成功


http://www.kler.cn/a/380839.html

相关文章:

  • 跟李沐学AI:BERT
  • C++笔试题之实现一个定时器
  • vue2和vue3在html中引用组件component方式不一样
  • torchvision.io.write_video 报错替换
  • gradlew.cmd的使用
  • energy 发布 v2.4.5
  • Vue指令:v-else、v-else-if
  • 展示+分享|美创科技@2024年数据安全关键技术研究及产业应用成果大会
  • 【云备份】httplib库
  • 信息安全工程师(77)常见网络安全应急事件场景与处理流程
  • 拓展学习-golang的基础语法和常用开发工具
  • 【LeetCode】【算法】234.回文链表
  • Spring Data Redis的基本使用
  • Spring Boot 与 Vue 共铸卓越采购管理新平台
  • OpenID Connect 和 OAuth 2.0 有什么不同?
  • 揭秘rust中默认参数类型不为人知的秘密,你确定不来了解下吗?
  • Java 基于SpringBoot+Vue 的公交智能化系统,附源码、文档
  • Django Form 实现多层(嵌套)模型表单
  • 深度学习模块创作(缝合)教程|适合1-360月小宝宝食用,干货满满
  • 深度学习基础知识-损失函数
  • 【C/C++】memcpy函数的模拟实现
  • Mac OS 配置Docker+Mysql
  • C++中的继承——第一篇
  • ​CSS之三
  • 【OJ题解】C++实现字符串大数相乘:无BigInteger库的字符串乘积解决方案
  • vue中强制更新视图