微服务探索之路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 ...
随机推荐
- 文本处理的命令,三剑客之sed
文本处理的命令 1.sort命令 "用于将文件内容加以排序" 参数: -n :按照数值的大小排序 -r :以相反的顺序来排序 -k :以某列进行排序 -t :指定分隔符,默认是以空 ...
- LuoguP7008 [CERC2013]What does the fox say? 题解
Content 森林里面有很多声响,你想知道有哪些声响是由狐狸发出来的. 已知你搜集到了 \(n\) 个声响,并且还知道某些其他动物能够发出的声响,已知如果没有哪一个声响是由其他任何一种动物发出来的话 ...
- CF1497A Meximization 题解
Content 给定 \(n\) 个数 \(a_1,a_2,\dots,a_n\),你需要将这些数重新排列,使得 \(\sum\limits_{i=1}^n\operatorname{mex}(a_1 ...
- Python3 shevel模块,更高级的json序列化数据类型模块(比pickle更高级)
直接将数据类型以字典的格式 存到文件中去. 直接.get读取出来,
- C++ 11新特性:std::future & std::shared_future) (转载)
上一讲<C++11 并发指南四(<future> 详解二 std::packaged_task 介绍)>主要介绍了 <future> 头文件中的 std::pack ...
- 基于GDI和D3D的抓屏技术
GDI32Api.Direct3D屏幕截图 最近因为工作需要,认真研究了一下屏幕截图的方法. 最主要的方法有两种,一.调用windows GDI32 API函数.二.使用DirectX9.0来实现. ...
- 使用Nginx配置资源目录展示下载
nginx配置文件 server { listen 8080; server_name localhost; charset utf-8; location /download { #下载的资源目录 ...
- Elasticsearch 和 solr 的区别
背景:它们都是基于Luence搜索服务器基础之上开发的一款优秀高性能的企业级搜索服务器.也都是基于分词技术构建的倒排索引的方式进行查询 开发语言:java 诞生时间: solr :2004年 es ...
- UDP&串口调试助手用法(3)
发送参数配置 下面以 UDP 通道为例介绍 发送数据配置 概览 选择数据源 文件: 选择发送的文件 源码: 自己手动键入发送数据,默认输入的为16进制数据, 定时器发送周期 单位为毫秒. 发送帧计数 ...
- git 命令之暂存相关指令。
git 命令之暂存相关指令. 1.git 代码暂存指令:git stash 2.git 代码暂存列表信息:git stash list 3.git 代码应用暂存代码:git stash apply s ...