微服务探索之路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 FEEA9169307EA071key后面那一串就是截图里的那一串根据系统提示修改为对应的就行,执行完如下图

这时候再重新执行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-reloadsystemctl restart dockersystemctl 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 ...
随机推荐
- TPT Fusion平台升级,AUTOSAR及ViL测试功能重装上线
TPT简介 TPT是针对嵌入式系统基于模型的测试工具,特别是针对控制系统的软件功能测试.TPT支持众多业内主流的工具平台和测试环境,可以完成V模式要求所有阶段(MiL-SiL-PiL-HiL-ViL) ...
- LuoguP2378 因式分解II 题解
Content 输入一个多项式 \(x^2+ax+b\)(不保证 \(a,b\neq0\)),请对这个多项式进行因式分解(形式为 \((x-x_1)(x-x_2)\),其中 \(x_1>x_2\ ...
- CF581B Luxurious Houses 题解
Content 一条大街上有 \(n\) 个房子,第 \(i\) 个房子的楼层数量是 \(h_i\).如果一个房子的楼层数量大于位于其右侧的所有房屋,则房屋是豪华的.对于第 \(i\) 个房子,请求出 ...
- Amazing!!CSS 也能实现极光?
在上次写完这篇文章 -- 巧用渐变实现高级感拉满的背景光动画 之后,文章下面的评论有同学留言,使用 CSS 可以实现极光吗? 像是这样: emmm,这有点难为人了.不过,最近我也尝试着去试了下,虽然不 ...
- 在JSP页面里,时间控件的JS位置在下面然后就显示不出来
在JSP页面里,时间空间的JS位置在下面然后就显示不出来,放到前面然后就显示出来了, 情何以堪啊,开始还以为是什么错误.
- 【LeetCode】56. Merge Intervals 解题报告(Python & C++ & Java)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- 【LeetCode】659. Split Array into Consecutive Subsequences 解题报告(Python)
[LeetCode]659. Split Array into Consecutive Subsequences 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id ...
- Soldier and Traveling
B. Soldier and Traveling Time Limit: 1000ms Memory Limit: 262144KB 64-bit integer IO format: %I64d ...
- git安装与使用,未完待续... ...
目录 一.git概念 二.git简史 三.git的安装 四.git结构 五.代码托管中心-本地库和远程库的交互方式 六.初始化本地仓库 七.git常用命令 1.add和commit命令 2.sta ...
- Go语言核心36讲(新年彩蛋)--学习笔记
新年彩蛋 | 完整版思考题答案 基础概念篇 Go 语言在多个工作区中查找依赖包的时候是以怎样的顺序进行的? 答:你设置的环境变量GOPATH的值决定了这个顺序.如果你在GOPATH中设置了多个工作区, ...