微服务探索之路02篇liunx ubuntu服务器部署k8s(kubernetes)-kubernetes/dashboard
本章介绍所需环境:ubuntu18.04,建立在上一篇微服务探索之路01篇已经安装了docker的基础上。
1 替换k8s镜像源为国内镜像
- 进入目录
cd /etc/apt/sources.list.d
- 编辑文件
vim kubernetes.list
执行之后打开一个编辑界面按字母i进入编辑状态复制deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
放进去,按esc再:wq保存
- 执行
apt-get update
如果出现如上图提示,需要先执行
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FEEA9169307EA071
key后面那一串就是截图里的那一串根据系统提示修改为对应的就行,执行完如下图
这时候再重新执行apt-get update
就成功了
- 执行
apt upgrade
遇到选择看不懂就选择y,看的懂就按照自己想要的选择遇到选择直接默认ok下一步,最后执行完成表示镜像已经替换为国内镜像,并且所有源都更新为新版本
2 安装k8s
执行
apt-get install -y kubelet kubeadm kubectl --allow-unauthenticated
执行
kubeadm version
查看版本号
3 安装镜像包
- 需要安装多个镜像所有写一个脚本来完成
1.先退到最外层目录下或者去自己知道的目录(这边直接退到最外层目录执行cd
回车)
2.创建k8spull.sh
内容为(文件创建和编辑方法可以百度vim用法)
for i in `kubeadm config images list`; do
imageName=${i#k8s.gcr.io/}
docker pull registry.aliyuncs.com/google_containers/$imageName
docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.aliyuncs.com/google_containers/$imageName
done;
3.执行chmod +x k8spull.sh
给脚本文件赋予权限
4.执行脚本sh k8spull.sh
5.执行docker images
,再执行kubeadm config images list
对比镜像是否全都加载成功
这边发现少了一个coredns,可以手动拉取试试(执行docker pull registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.6
)
尝试后如上图发现阿里云镜像里面没有这个版本号也不知道去哪查看最新的版本,所以这边选择使用dockerhub里的最新版本1.8.3执行
docker pull rancher/coredns-coredns:1.8.3
,然后更改镜像名执行
docker tag rancher/coredns-coredns:1.8.3 k8s.gcr.io/coredns/coredns:v1.8.6
,最后删除原始镜像执行
docker rmi rancher/coredns-coredns:1.8.3
重新执行docker images
检查镜像是否已经成功,如下图表示成功
4 初始化kubeadm
- 执行
kubeadm init --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=NumCPU
5 设置网络插件
1.设置环境变量执行export KUBECONFIG=/etc/kubernetes/admin.conf
,执行完这里顺便把环境变量加到系统配置里防止下次重启服务器的时候没有变量,具体操作如下
vim /etc/profile
打开之后在底部添加export KUBECONFIG=/etc/kubernetes/admin.conf
,添加之后保存退出文件,然后执行source /etc/profile
使其生效。
2.编写yml进行资源配置,这里可以直接使用网络上别人写好的yml文件直接用以下命令和地址即可
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
需特别注意:
如果执行上一行命令报错,内容包含did you specify the right host or port,这时候是因为kubelet没有正常启动,可以执行journalctl -xefu kubelet
查看具体的错误日志,本次配置遇到的错误是docker和kubelet的驱动程序不同具体如图
解决方法:
(1).查看文件/var/lib/kubelet/config.yaml里的驱动
(2).把docker的改为跟这个一样的方式
编辑文件/etc/docker/daemon.json
,如果文件本身有内容那就在对象内添加一行"exec-opts": ["native.cgroupdriver=systemd"]
,如果空文件那就要用大括号包起来{"exec-opts": ["native.cgroupdriver=systemd"]}
,然后保存退出文件。
(3)重启服务,执行以下三个命令
systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet
运行成功,出现下类似图
3.执行kubectl get nodes
查看如果出现如下图内容表示已经成功部署可以进行增加和移除Node(节点)
6 安装面板
1.下载yaml文件wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
版本号可以去github上选择tag查看最新的或者选择合适自己的
2.打开yaml文件查看镜像然后用docker拉取镜像,搜索文件中image关键字可以找到以下两个相关的镜像,版本不一样版本号也会对应改变
镜像1命令:docker pull kubernetesui/dashboard:v2.4.0
镜像2命令:docker pull kubernetesui/metrics-scraper:v1.0.7
3.修改yaml文件将访问方式改为NodePort,如下图
改完保存退出,然后执行kubectl apply -f recommended.yaml
以上执行完之后执行这个看一下是否有绑定好端口号kubectl get svc --namespace=kubernetes-dashboard
,结果如下图表示成功
7 配置Token
1.打开https://ip:端口号,会出现如下界面这时不要继续操作界面,需要先配置Token
2.创建文件vim dashboard-admin.yaml
,文件内容为
apiVersion: v1
kind: ServiceAccount
metadata:
name: kubernetes-dashboard-admin
namespace: kubernetes-dashboard
labels:
k8s-app: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kubernetes-dashboard-admin
namespace: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kubernetes-dashboard-admin
namespace: kubernetes-dashboard
3.运行刚才创建的yaml文件直接为 Dashboard 赋予 Admin 的权限kubectl create -f dashboard-admin.yaml
4.查找创建好的token,先执行kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}'
,出现如下图
然后根据结果里返回的名称执行下面的命令kubectl -n kubernetes-dashboard describe secret kubernetes-dashboard-admin-token-g7vxn
这命令里的kubernetes-dashboard-admin-token-g7vxn是上一个命令返回的要根据自己得到的替换
5.复制token然后登陆
登陆之后可以切换命名空间查看相关的内容
本章结束,下一章详解如何将自己的项目部署至k8s
以下为遇到错误的记录和解决方案如下:
1.遇到kube-flannel无限自动重启,先删除它,等会重新安装执行删除命令
kubectl delete -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
删除残留文件rm -rf /var/lib/cni/
,rm -f /etc/cni/net.d/*
2.遇到一直循环创建k8s-pod,这里不知道怎么回事直接重置所有配置,执行命令kubeadm reset
之后重新从第4步初始化环境开始,先给docker设置一下国内镜像这一步之前没操作过;打开文件vim /etc/docker/daemon.json
,添加"registry-mirrors":[ "https://阿里云加速的id.mirror.aliyuncs.com" ]
,这个加速id参考第一篇有说怎么拿到。
下面开始重新运行:
(1)重新初始化kubeadm,直接照着上面的第4步
(2)重新安装kube-flannel网络环境,为了防止一直自动重启,我们这边先下载yml做完修改再执行
下载,找个路径然后执行wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
然后打开vim kube-flannel.yml
修改内存50mi为200mi
改完保存之后给文件添加可执行权限chmod +x filename
,最后执行kubectl apply -f kube-flannel.yml
最后查看是否运行成功如下图
图上用到的命令kubectl get pods -o wide --all-namespaces
,kubectl get nodes
微服务探索之路02篇liunx ubuntu服务器部署k8s(kubernetes)-kubernetes/dashboard的更多相关文章
- 微服务探索之路03篇-docker私有仓库Harbor搭建+Kubernetes(k8s)部署私有仓库的镜像
❝ 目录: 微服务探索之路01篇.net6.0项目本地win10系统docker到服务器liunx系统docker的贯通 微服务探索之路02篇liunx ubuntu服务器部署k8s(kubernet ...
- 微服务探索之路01篇.net6.0项目本地win10系统docker到服务器liunx系统docker的贯通
本文介绍从创建 net6.0 项目运行在 windows 开发环境的 docker 然后正式部署至 liunx 服务器. 1 windows10 安装 docker 下载docker-desktop ...
- 微服务探索之路04篇k8s增加子节点,metrics资源监控,ingress-nginx域名配置及https配置
1 k8s增加子节点 1.1 子节点服务器安装docker,使用脚本自动安装 curl -fsSL https://get.docker.com | bash -s docker --mirror A ...
- 基于容器微服务的PaaS云平台设计(二)通过kubernetes实现微服务容器管理
版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://www.cnblogs.com/SuperXJ/ 上一章描述了基于spring cloud的微服务实例(实 ...
- 庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群
庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群 一.简介 前面的两篇文章,我们已经介绍了Net Core项目基于Docker容器部署在Linux服 ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:3、微服务应用程序版本升级:全站升级和局部模块升级。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:4、微服务应用程序发布到Docker部署(上)。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:5、微服务应用程序发布到Docker部署(下)。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:6、微服务应用程序Docker部署实现多开。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...
随机推荐
- 11 - Vue3 UI Framework - Card 组件
卡片是非常常用也是非常重要的组件,特别是在移动端的众多应用场景中,随便打开一个手机 App ,您会发现充斥着各种各样的卡片. 所以,我们也来制作一个简易的 Card 组件 返回阅读列表点击 这里 需求 ...
- 获取登录验证码失败及前后端不同域导致session丢失问题分析记录
前言 前两周在把兄弟公司的几个服务部署到我们公司测试环境服务器的时候又遇到了不少问题,因为是前后端分离的项目,所以这次也同样遇到了跨域问题,解决方式也跟上一回的不一样,这里就再来分析记录一下. 登录验 ...
- CF125A Measuring Lengths in Baden 题解
Content 在 Baden,一英寸等于 \(3\) 厘米,一英尺等于 \(12\) 英寸. 现在有一个 \(n\) 厘米的物体,求在 Baden,它是几英尺又几英寸. 数据范围:\(1\leqsl ...
- CF1579A Casimir's String Solitaire 题解
Content 给定一个仅包含 A.B.C 三种字符的字符串 \(s\),有如下两种操作: 删除字符串中的恰好一个 A 和恰好一个 B. 删除字符串中的恰好一个 B 和恰好一个 C. 求是否能够把字符 ...
- CF1437A Marketing Scheme 题解
Content 有 \(t\) 组询问,每组询问给定两个整数 \(l,r\),问是否存在一个 \(a\),使得 \(\forall x\in[l,r]\),都有 \(x\mod a\geqslant\ ...
- MyBatis学习(四)MyBatis一对一关联查询
一对一关联查询即.两张表通过外键进行关联.从而达到查询外键直接获得两张表的信息.本文基于业务拓展类的方式实现. 项目骨架 配置文件conf.xml和db.properties前几节讲过.这里就不细说了 ...
- c++ 设计模式概述之策略
代码写的不规范,目的是为了缩短文章篇幅,实际中请不要这样做. 1.概述 类比现实生活中的场景,比如,我需要一块8G内存条,我可以选择:A.去线下实体店买,B.线上购买,C.其他渠道. 再比如,吃饭餐具 ...
- 【LeetCode】963. Minimum Area Rectangle II 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 线段长+线段中心+字典 日期 题目地址:https: ...
- 【LeetCode】61. Rotate List 解题报告(Python)
[LeetCode]61. Rotate List 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fux ...
- 图的存储:邻接矩阵(C++)
1. 演示 无向图: 有向网: 2. 代码 1 #include <iostream> 2 #include <unordered_map> 3 #include <ve ...