本篇将会讲解k8s是什么?本机k8s环境搭建,部署一个pod并演示几个kubectl命令,k8s dashboard安装。

k8s是什么

k8s是kubernetes的简写,它是一个全新的基于容器技术的分布式架构领先方案。它是谷歌内部使用的大规模集群管理系统Borg的一个开源版本。这个项目在谷歌内部使用多年,由于员工签署了保密协议,所以外界对这个项目一无所知。直到kubernetes的开源一鸣惊人,大家才得以了解。Kubernetes是一个开放的开发平台,并不限制特定的编程语言,任何语言编写的服务都可以被映射为Kubernetes的Service(服务),并通过标准的TCP通信协议进行交互。你在处理分布式系统所需要用到的能力,在kubernetes中都支持,比如服务发现、故障发现和自我修复、滚动升级、扩容等。总之,Kubernetes是一个分布式解决方案、是一个一站式的完备的分布式系统开发和支撑平台。k8s+docker使得小规模团队甚至是个人hold住大型项目成为可能。

本机k8s环境搭建

如果之前没有接触过k8s的话,也许听完上面的解释,并不是很清楚。而在软件技术的学习中,实操十分重要,搭建好环境,实际操作几次就不会觉得那么陌生了。在本机搭建k8s环境,我们有两种方式:

  1. k8s for docker desktop
  2. Minikube

本例将使用第一种方式,在mac电脑上搭建k8s环境。这种方式相对简单,可以快速的搭建起来实验看看效果。以Mac为例,当我们按照上一篇文章的步骤配置好了docker环境之后,点击docker小图标,打开菜单,找到“Preferences..”,在弹出的配窗口中,可以看到Kubernetes,界面如下:

当我们安装好docker desktop for mac/windows之后,默认情况下,“Enable kubernetes” 是没勾选的。我们需要先进行下面的操作,然后过来勾选这个以启动k8s。

给docker daemon配置阿里云镜像加速器

为了使得下载某些镜像更快,我们需要配置一下镜像加速器。为了使用阿里云的镜像加速器,你需要先注册一个阿里云账号(进入aliyun.com注册即可)。登录阿里云的控制台之后,进入“容器镜像服务”,在左侧的菜单中展开“镜像中心”,点击“镜像加速器”,可以看到你的专属镜像加速器地址,大概是这样子:

https://xxxxx.mirror.aliyuncs.com

如果你注册阿里云账号还真,找不到这个页面,可以直接从这个链接进入:

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

得到加速器地址之后,把他配置到docker里边去,docker->Preferences->Daemon->Registry Mirrods 点加号,贴入地址,重启之后就生效了。

在Docker Desktop开启k8s

这个过程完全参考阿里云的一个仓库:https://github.com/AliyunContainerService/k8s-for-docker-desktop

首先clone一下这个仓库:

git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop.git

clone好仓库之后,进入可以看到里边有一个文件:load_images.sh。我们先保持在这个目录,一回儿需要执行这个脚本

但是执行之前,需要在About Docker中查看kubernetes的版本,我的版本是:

Kubernetes: v1.14.8

可以看到是v1.14.8下面我们来切换一下上面所clone的代码的分支:

git checkout v1.14.8

OK,下面可以执行脚本了./load_images.sh这个脚本执行过程中,将会从阿里云下载Kubernetes 所需要的镜像,这个过程大概需要两三分钟。这个命令执行完了之后,我们就可以开启k8s了。Docker - > Preference -> kubernetes -> 勾选Enable kubernetes, apply and restart 。等待几分钟之后,我们点开docker小图标,可以看到:

docker is running
Kubernetes is runing

使用Kubectl连接k8s

上面我们已经配置好了k8s环境,下面我们来验证一下。kuberctl是一个命令行工具,在配置好k8s环境之后,这个命令就有了。我们输入:kubectl cluster-info

$ kubectl cluster-info
Kubernetes master is running at https://kubernetes.docker.internal:6443
KubeDNS is running at https://kubernetes.docker.internal:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

可以看到 kubernetes master is running, KubeDNS is running。说启动正常,再看一个命令:kubectl get nodes

$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
docker-desktop Ready master 32d v1.14.8

再看一个命令:kubectl get pods

$ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-first-demo 1/1 Running 2 6d1h

可以看到我部署了一个my-first-demo应用正在运行。下一篇将会讲解如何部署应用到k8s。

配置Kubernetes 控制台

如果我们想更直观的看kubernetes内的应用情况,我们可以部署Kubernetes控制台,即Kubernetes dashboard。还记得上面步骤中中clone的仓库吧(k8s-for-docker-desktop.git)。我们再次进入这个目录

cd your/path/to/k8s-for-docker-desktop

这个目录中有一个kubernetes-dashboard.yaml文件(注意看下分支,需要是你本机k8s的版本,例如v1.14.8)执行这个命令:

kubectl create -f kubernetes-dashboard.yaml

这个命令将会启动Kubernetes dashboard,使用这个命令查看启动状况:

$ kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
etcd-docker-desktop 1/1 Running 4 32d
kubernetes-dashboard-5d9599dc98-g6czk 1/1 Running 7 32d

可以看到下面有个kubernetes-dashboard-5d9599dc98-g6czk,说明k8s控制台的pod启动成功。下面执行如下命令:

$ kubectl proxy
Starting to serve on 127.0.0.1:8001

然后再浏览器访问:

http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login

打开之后,可以看到一个登陆界面:

我们选择“令牌”方式登陆,这里需要令牌,获得令牌需要在命令行输入如下命令:

TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}')
kubectl config set-credentials docker-for-desktop --token="${TOKEN}"
echo $TOKEN

这串命令比较长,复制完整,粘贴执行即可。会得到一长串的字符串,复制贴到面板的令牌输入框点击登陆。你将会看到一个这样的界面:

界面中,我们可以看到负载状态,容器组信息等。操作过阿里云k8s环境的同学肯定不陌生,阿里云的容器dashboard就是这个,只是颜色不一样而已。

总结

至此,本文简单介绍了一下k8s是什么,并我们配置好了本机的k8s环境,并演示了几个kubectl命令以查看k8s运行情况。至此,准备工作算是做完了。下一篇将讲如何部署应用到k8s。

Docker & k8s 系列一:快速上手docker

Docker & k8s 系列三:在k8s中部署单个服务实例

Docker & Kubenetes 系列四:集群,扩容,升级,回滚

Docker & k8s 系列二:本机k8s环境搭建的更多相关文章

  1. Redis学习系列二之.Net开发环境搭建及基础数据结构String字符串

    一.简介 Redis有5种基本数据结构,分别是string.list(列表).hash(字典).set(集合).zset(有序集合),这是必须掌握的5种基本数据结构.注意Redis作为一个键值对缓存系 ...

  2. 基于GTK+3 开发远程控制管理软件(C语言实现)系列二 Centos7下开发环境搭建

    一.安装gcc gcc-c++ make等编译工具 yum install gcc gcc-c++ kernel-devel 这一步,其实可以不用做,你在安装Centos7的时候,如果选择开发模式安装 ...

  3. Docker & k8s 系列三:在k8s中部署单个服务实例

    本章将会讲解: pod的概念,以及如何向k8s中部署一个单体应用实例. 在上面的篇幅中,我们了解了docker,并制作.运行了docker镜像,然后将镜像发布至中央仓库了.然后又搭建了本机的k8s环境 ...

  4. appium ios真机自动化环境搭建&运行(送源码)

    appium ios真机自动化环境搭建&运行(送源码) 原创: f i n  测试开发社区  6天前 Appium测试环境的搭建相对比较烦琐,不少初学者在此走过不少弯路 首先是熟悉Mac的使用 ...

  5. appium ios真机自动化环境搭建&运行(送源码)

    appium ios真机自动化环境搭建&运行(送源码) 原创: f i n  测试开发社区  6天前 Appium测试环境的搭建相对比较烦琐,不少初学者在此走过不少弯路 首先是熟悉Mac的使用 ...

  6. k8s v1.18.2 centos7 下环境搭建

    准备 服务器:3台机器--1台主.2台工作节点,可以使用virtualbox 搭建虚拟机 主机名 centos version ip docker version flannel version 主机 ...

  7. 寒武纪加速平台(MLU200系列) 摸鱼指南(二)--- 模型移植-环境搭建

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  8. Dubbo系列(二)dubbo的环境搭建

    dubbo是一个分布式服务框架,提供一个SOA的解决方案.简单的说,dubbo就像在生产者和消费者中间架起了一座桥梁,使之能透明交互.本文旨在搭建一个可供使用和测试的dubbo环境,使用了spring ...

  9. Docker学习之——Node.js+MongoDB+Nginx环境搭建(一)

    最近在学习Node.js相关知识,在环境搭建上耗费了不少功夫,故此把这个过程写下来同大家分享一下,今天我先来介绍一下Docker,有很多人都写过相关知识,还有一些教程,在此我只想写一下,我的学习过程中 ...

随机推荐

  1. Intellij IDEA 基础设置,个性化设置,好用的设置→_→

    Intellij IDEA 个性化设置 Appearance & Behavior 外观和行为 Keymap 快捷键 Editor 编辑器设置 Plugins 插件 Version Contr ...

  2. VUE前端项目配置代理解决跨域问题

    VUE前端项目配置代理解决跨域问题 问题如下,经常在本地调试接口出现这种问题 解决方式1:Chrome 的扩展插件 以前使用Chrome 的扩展插件,但是有时候还是会出现莫名其妙的问题. 需要梯子才行 ...

  3. 来自BAT大厂前端工程师的自白-怎么才能学好前端

    如果说理解学好web前端是先能找到一份工作,那么你应该这样做: 1.制定好一下系统的web前端学习规划,每天定量,学完什么知识点就掌握,能自己应用,而不是能看懂,写不出来东西. 2.不要自己一个人闷头 ...

  4. Jmeter:运行报:Error occurred starting thread group :线程组, error message:Invalid duration 0 set in Thread Group:线程组, see log file for more details

    最近在用jmeter做压测,上周五压测的脚本,今天早晨结束后. 点击同样的脚本,运行就报Error occurred starting thread group :线程组, error message ...

  5. Adobe Flash player 过期

    完美解决问题的办法,在百度中输入 "adobe flash player debugger",如图进入官网 选择对应操作系统的对应版本,下载安装,重启浏览器,一切ok IE内核浏览 ...

  6. 二、Vue基础语法

    六:Vue的v-bind指令作用:绑定标签上的所有属性其简写 ":" 6.1:    例如:<p v-bind:id="test">Hello wo ...

  7. App《最美诗词》开发 -- Java后端(整合框架)

    本人一直是致力于Android开发,由于我们三位Android开发者 @老蔡 @不肯过江东 打算一起开发Android App<最美诗词>,需要服务器端的接口支持,所以便兼职做起了后端的代 ...

  8. ACM思维题训练 Section A

    题目地址: 选题为入门的Codeforce div2/div1的C题和D题. 题解: A:CF思维联系–CodeForces -214C (拓扑排序+思维+贪心) B:CF–思维练习-- CodeFo ...

  9. RF(IF 判断)

    1.关键字 Run Keyword If,格式如下: ELSE   必须大写 ELSE   前面需要加 "..." 表示缩进 Run Keyword If a == b log T ...

  10. 涉及secureCRT中文显示的一些设置

    1.secureCRT中文显示乱码: 如果你的linux本身是显示着中文的,可进行如下设置: 选项->会话选项 外观->字符编码改为UTF-8,确定即可 2.secureCRT中文横向显示 ...