K8s系列(二)我与K8s的相遇(下)

在系列一中说明了一些最基本单元,那么我们就开始接触K8s吧。

如下图如果我要创建一个Pod那么K8s会如何创建呢?

 通过kubectl输入一个创建pod的命令,然后进过APIServer(master的大脑)通过Scheduler的策略,因为节点信息存储在ETCD中,通过ETCD发现可以创建的Worker节点,然后经过Controller(与我们的Controller层的功能相似,去完成具体的任务)去完成。Woker节点通过kube-proxy去接收Controller发出的请求,将我们的请求通过kubelet去创建对应的pod。上一节讲了,pod是一组(一个或多个) 容器,所以需要Docker的支持。当然其他容器也可以兼容,不过我们用的最多的肯定是Docker了。除了这些以外还有可能有DNS的解析,以及fluentd日志收集等等。我们可以定制化我们需要的一些组件。这就是整个一个创建流程,还有一个DashBoard没有讲,那个就是整个集群的一个监控,我们可以用它来监控整个集群的状态。

我们已经简单的认知了K8s下面就开始安装,试一试吧!

---------------------------------------------------------------------------------------------------------------------------------

安装K8s

第一种最难得方式,手动一步一步的安装K8s的各个组件

The hard way:https://github.com/kelseyhightower

第二种最简单的方式,在线的K8s让我们体验一下K8s的魅力

在线play-with-k8s网址:https://labs.play-with-k8s.com

第三种云上搭建

GitHub:https://github.com/kubernetes/kops

第四种企业级解决方案

CoreOScoreos:https://coreos.com/tectonic/

第五种Minikube[Y]

K8S单节点,适合在本地学习使用

官网:https://kubernetes.io/docs/setup/learning-environment/minikube/

GitHub:https://github.com/kubernetes/minikube

第六种kubeadm[Y]

本地多节点

GitHub:https://github.com/kubernetes/kubeadm

---------------------------------------------------------------------------------------------------------------------------------

Minikube安装方式

说明:云上搭建和企业级的搭建方式更加方便一些,也简单一些。毕竟是收费的会了Minikube另外几个也是手到擒来。

1、安装kubectl

第一步:下载 

最新版

curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl

指定版本

curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.16.2/bin/linux/amd64/kubectl

第二歩:增加权限

chmod +x kubectl

第三歩:移动目录

mv ./kubectl /usr/local/bin/kubectl

第四歩:查看版本

kubectl version

出现如下提示安装完成

Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.1", GitCommit:"632ed300f2c34f6d6d15ca4cef3d3c7073412212", GitTreeState:"clean", BuildDate:"2021-08-19T15:45:37Z", GoVersion:"go1.16.7", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.2", GitCommit:"092fbfbf53427de67cac1e9fa54aaa09a28371d7", GitTreeState:"clean", BuildDate:"2021-06-16T12:53:14Z", GoVersion:"go1.16.5", Compiler:"gc", Platform:"linux/amd64"}

2、安装Minikube

window和mac其实都一样很简单不过需要虚拟环境Hyper-V或者VirtualBox等都可以

下面的步骤都一样。

下面着重介绍一下linux环境,需要提示的是不建议用root账户去操作不然会报错。

官网链接:https://minikube.sigs.k8s.io/docs/start/

第一步:选择符合你linux的安装包

To install the latest minikube stable release on x86-64 Linux using RPM package:

上面是我选择的RPM包。

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpm
sudo rpm -Uvh minikube-latest.x86_64.rpm

第二歩:启动集群

minikube start

这边可能会遇到几个问题:

X Exiting due to DRV_AS_ROOT: The "docker" driver should not be used with root privileges.

 很简单就是不能用root账户去使用,那么我们就切换一个用户。

adduser lingg
passwd lingg

刚创建的用户可能没有权限,那么需要增加权限

1、/etc/sudoers文件默认是只读的,对root来说也是,因此需先添加sudoers文件的写权限,命令是:
即执行操作:chmod u+w /etc/sudoers

2、编辑sudoers文件

vi /etc/sudoers

然后拖到最下面找到root    ALL=(ALL)      ALL这一行

在他下面添加%xxx ALL=(ALL) NOPASSWD: ALL (这里的xxx是你的用户名)

意思就是允许用户组xxx里面的用户执行sudo命令,并且在执行的时候不输入密码

3、撤销sudoers文件写权限,命令:
chmod u-w /etc/sudoers

就此添加权限的任务已经完成。然后切换用户,执行启动集群的命令

[root@iZ8vb97d9gjrxn2dl3m822Z ~]# su lingg
[lingg@iZ8vb97d9gjrxn2dl3m822Z root]$ sudo groupadd docker
groupadd: group 'docker' already exists
[lingg@iZ8vb97d9gjrxn2dl3m822Z root]$ sudo usermod -aG docker $USER
[lingg@iZ8vb97d9gjrxn2dl3m822Z root]$ newgrp docker
[lingg@iZ8vb97d9gjrxn2dl3m822Z root]$ minikube start --driver=docker
* minikube v1.22.0 on Centos 8.1.1911 (amd64)
* Using the docker driver based on user configuration
* Starting control plane node minikube in cluster minikube
* Pulling base image ...
* Downloading Kubernetes v1.21.2 preload ...
    > preloaded-images-k8s-v11-v1...: 502.14 MiB / 502.14 MiB  100.00% 2.33 MiB
    > index.docker.io/kicbase/sta...: 361.09 MiB / 361.09 MiB  100.00% 1.32 MiB
! minikube was unable to download gcr.io/k8s-minikube/kicbase:v0.0.25, but successfully downloaded kicbase/stable:v0.0.25 as a fallback image
* Creating docker container (CPUs=2, Memory=3900MB) ...
! This container is having trouble accessing https://k8s.gcr.io
* To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/
* Preparing Kubernetes v1.21.2 on Docker 20.10.7 ...
  - Generating certificates and keys ...
  - Booting up control plane ...
  - Configuring RBAC rules ...
* Verifying Kubernetes components...
  - Using image gcr.io/k8s-minikube/storage-provisioner:v5
* Enabled addons: storage-provisioner, default-storageclass
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

  就此大功告成!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值