k8s简介以及linux环境下的详细安装步骤

k8s是Kubernetes的简称,Kubernetes中间有8个单词,所以叫k8s,就是这么简单粗暴。
我们可以看到docker的图标是鲨鱼,k8s的图标是舵盘,是个领航员,代表着一个k8s引领着一群鲨鱼。我们知道docker是容器,不知道的可以先学学docker再学习k8s,这里K8S的作用就是管理容器。当我们的应用中有很多容器的时候,是不需要去维护每一个容器的运行状态,K8S会去帮助我们维护的,比如有个容器的tomcat挂了,K8S会自动重启让它继续运行,所以它是一个运维宝宝们爱死的神器!

K8S是谷歌根据谷歌内部的borg系统用go语言编写的,borg系统相当于K8S的前身,是谷歌以前让人很眼馋的一个容器化管理系统,所以K8S一开源就受到各界大佬的推崇。
特点:
1.轻量级:go语言写的,资源消耗少
2.开源
3.弹性伸缩
4.负载均衡

K8S架构图

  • kubectl和webUI:客户端。
  • etcd:K-V结构的分布式数据库,保存了整个集群的状态和配置信息,是集群的持久化机制,遇到故障可以使集群快速恢复。该组件发生故障,整个K8S就会瘫痪。
  • apiserver:所有服务访问和资源操作的统一入口,并提供认证、授权、访问控制、API注册和发现等机制;
  • replication controller:它能够保证Pod持续运行,并且在任何时候都有指定数量的Pod副本,在此基础上提供一些高级特性,比如滚动升级和弹性伸缩
  • scheduler:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
  • kubelet:负责维护容器的生命周期,通俗理解就是对于容器的创建和销毁就是kubelet来控制的。
  • kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡;
  • pod:在K8S中,最小的管理元素不是一个个独立的容器,而是Pod,Pod是最小的,管理,创建,计划的最小单元。Pod的设计理念是支持多个容器在一个Pod中共享网络地址和文件系统。

集群安装

准备:三台linux机器,分别为master,node1,node2

  • 关闭CentOS7自带的防火墙服务
systemctl disable firewalld
systemctl stop firewalld
  • 修改主机名

[root@master ~]# hostnamectl set-hostname master
[root@node1 ~]# hostnamectl set-hostname node1
[root@node2 ~]# hostnamectl set-hostname node2

  • 配置IP,修改3台机器的hosts文件

[root@master ~]# vi /etc/hosts

  • 三台机器都做时间校对

[root@master ~]# ntpdate ntp1.aliyun.com
[root@master ~]# hwclock

  • 配置dockers镜像

[root@master ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  • 配置kubernetes仓库

[root@master ~]# vi /etc/yum.repos.d/kubernetes.repo

#加入以下配置内容
[kubernetes]
name=kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
enabled=1


执行以下命令

[root@master ~]# wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg rpm --import rpm-package-key.gpg yum repolist


如果没有开同步键入,发送文件到node1和node2

[root@master ~]# cd /etc/yum.repos.d/

[root@master yum.repos.d]# scp CentOS.repo docker-ce.repo kubernetes.repo root@node1:/etc/yum.repos.d/

[root@master yum.repos.d]# scp CentOS.repo docker-ce.repo kubernetes.repo root@node2:/etc/yum.repos.d/

  • 安装docker和kubelet
    这里指定kubeadm版本是1.14.0,可以默认最新,也可以指定其他版本

[root@master ~]# yum -y install docker-ce kubelet-1.14.0 kubeadm-1.14.0 kubectl-1.14.0

  • 添加环境变量

[root@master ~]# vim /usr/lib/systemd/system/docker.service

在其中添加变量
Environment=“HTTPS_PROXY=http://www.ik8s.io:10080”
Environment=“NO_PROXY=127.0.0.0/8,172.0.0.0/16”

  • 重新加载服务的配置文件

[root@master ~]# systemctl daemon-reload

  • 启动docker

[root@master ~]# systemctl start docker

  • 查看docker是否成功启动

[root@master ~]# docker --version

  • 设置docker开机自启动

[root@master ~]# systemctl enable docker

  • 查看docker信息

[root@master ~]# docker info

  • 设置iptables文件值

[root@master ~]# echo 1 >> /proc/sys/net/bridge/bridge-nf-call-ip6tables
[root@master ~]# echo 1 >> /proc/sys/net/bridge/bridge-nf-call-iptables

  • 查看都安装的文件

[root@master ~]# rpm -ql kubelet

  • 设置开机自启动

[root@master ~]# systemctl enable kubelet

  • 初始化(这里master执行,node1和node2不执行,上面的内容三台机器都执行)
    由于墙的存在,在初始化的时候会报错,所以我们要先将初始化需要的东西通过docker镜像拉取下来,注意这里版本要对用,我上面下载kubeadm的时候是指定的1.14.0版本。

docker pull mirrorgooglecontainers/kube-apiserver:v1.14.0
docker pull mirrorgooglecontainers/kube-controller-manager:v1.14.0
docker pull mirrorgooglecontainers/kube-scheduler:v1.14.0
docker pull mirrorgooglecontainers/kube-proxy:v1.14.0
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd:3.3.10
docker pull coredns/coredns:1.3.1
————————————————
在重新给下载的打个tag
docker tag docker.io/mirrorgooglecontainers/kube-apiserver:v1.14.0 k8s.gcr.io/kube-apiserver:v1.14.0
docker tag docker.io/mirrorgooglecontainers/kube-controller-manager:v1.14.0 k8s.gcr.io/kube-controller-manager:v1.14.0
docker tag docker.io/mirrorgooglecontainers/kube-scheduler:v1.14.0 k8s.gcr.io/kube-scheduler:v1.14.0
docker tag docker.io/mirrorgooglecontainers/kube-proxy:v1.14.0 k8s.gcr.io/kube-proxy:v1.14.0
docker tag docker.io/mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag docker.io/mirrorgooglecontainers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag docker.io/coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
————————————————

如果上面的不能执行显示拒绝

点开这个网址
然后进行注册,然后点击下图中标注的小火箭

往下拉,找到下图中的红框中的命令,然后拷贝到linux终端执行,就可以使用docker pull了。

这里是真正的初始化

[root@master ~]# kubeadm init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12

出现下图说明初始化成功

上图中的第二个红框内容要记住,这是让其他节点加入集群的命令

kubeadm join 172.31.35.3:6443 --token m79nwh.6lv1to84l62718xc
–discovery-token-ca-cert-hash sha256:41548092602581e0a3e1b374876ccd26003a3f774e8940fa0847a4130da5a1fb

  • 检测组件是否正常运行

[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# kubectl get cs

出现下图说明正常运行

  • 查看并验证节点信息是否成功

[root@master ~]# kubectl get nodes NAME

  • Flannel安装

Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址。但在默认的Docker配置中,每个Node的Docker服务会分别负责所在节点容器的IP分配。Node内部得容器之间可以相互访问,但是跨主机(Node)网络相互间是不能通信。Flannel设计目的就是为集群中所有节点重新规划IP地址的使用规则,从而使得不同节点上的容器能够获得"同属一个内网"且"不重复的"IP地址,并让属于不同节点上的容器能够直接通过内网IP通信。

[root@master ~]# kubectl apply -f
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
[root@master ~]# curl -sSL
“https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml?raw=true”
| kubectl create -f -

由于我这里网络的原因,出现拒绝连接,所以我这里先跳过。

  • 查看pod运行情况:
    这里由于我的网络问题,flannel镜像从docker拉取失败,一般是running状态是正确的

[root@master ~]# kubectl get pods -n kube-system

在node1和node2节点中执行kubeadm初始化成功后最下面的语句,前文红框标注过,让node1和node2加入集群

[root@node1 ~]# kubeadm join 172.31.35.3:6443 --token
m79nwh.6lv1to84l62718xc \ --discovery-token-ca-cert-hash
sha256:41548092602581e0a3e1b374876ccd26003a3f774e8940fa0847a4130da5a1fb

  • 查看节点

[root@master ~]# kubectl get nodes


我查询了节点的运行状态,应该是由于上面的flannel安装有问题,导致不是所有的pod都是running。

如果你们安装的时候也出现了NotReady的问题,那么执行以下命令

vi /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf


然后将上图中红框中的内容注释掉,保存退出,重新查看下节点的运行状态,会发现已经是ready状态,说明安装成功。

k8s简介以及linux环境下的详细安装步骤相关推荐

  1. hp ux安装mysql5.1.56_详细讲解Linux环境下MySQL5.1安装步骤

    1.下载MySQL免安装版/二进制版软件(不用编译) 文件格式:MYSQL-VERSION-OS.tar.gz 2.创建MySQL组,建立MySQL用户并加入到mysql组中 (不同版本的Unix中, ...

  2. PolarDB 阿里云国产化数据库:linux系统下的详细安装步骤手册

    Linux 下部署 PolarDB 数据库 第一章:环境准备 ① 检查 THP 的启用状态和配置 ② 修改配置文件 sysctl.conf ③ 新增配置文件 polardb_limits.conf ④ ...

  3. django配置环境linux,linux环境下Django的安装配置详解

    linux环境下Django的安装配置详解 1. 下载安装Django pip install Django==1.6.5 测试是否安装成功 >>> import django> ...

  4. linux校园网客户端,Ubuntu Linux环境下校园网客户端安装使用

    最近发现好多兄弟姐妹不用Linux原因是在我们学校大大环境下上校园网有点费劲,或者干脆就不会弄,亦或者根本就没想到上网^_^ 这里我写上这么一段简单的过程,为了大家能够顺利上网,大牛直接掠过,不要喷我 ...

  5. Linux环境下Python的安装过程

    Linux环境下Python的安装过程 前言 一般情况下,Linux都会预装 Python了,但是这个预装的Python版本一般都非常低,很多 Python的新特性都没有,必须重新安装新一点的版本,从 ...

  6. Linux环境下Protobuf完整安装和使用教程

    Linux环境下Protobuf完整安装和使用教程 目标 下载和安装 环境配置 一个例子 1.报文定义 2.报文生成 3.使用报文 4.编译程序 5.常见问题: 目标 本文将教会一个完全的新手如何搭建 ...

  7. linux环境下使用virtualbox安装ghost系统

    linux环境下使用virtualbox安装ghost系统 环境为Ubuntu 18.04LTS,这次难点在于使用virtualbox如何使用虚拟机外部的文件安装系统.后来看到加载iso很方便,就往这 ...

  8. linux下的python安装,linux环境下的python安装过程

    一.下载python源码包 打开ubuntu下的shell终端,通过wget命令下载python源码包,如下图所示: wget https://www.python.org/ftp/python/3. ...

  9. Linux环境下ANTs软件安装(基于源码)

    Linux环境下ANTs软件安装(基于源码) 1.下载Cmake 在命令行里运行: 2.下载ITK 在命令行里运行: 3.ANTs安装 (1)在命令行里运行: (2)编译完之后如果在 antsbin ...

最新文章

  1. .NET 4.0 Interop新特性ICustomQueryInterface (转载)
  2. php定时执行代码漏洞_【漏洞风险提示】Drupal任意PHP代码执行漏洞通告
  3. Android关于AndroidManifest.xml详细分析
  4. android 获取monkey日志_APP压力测试定位问题_monkey篇
  5. 前端学习 -- 内联框架iframe
  6. rs232读取智能电表_【技术文章】蜂窝物联网PoC为智能电表连接指引路向
  7. 多线程,死锁,DeadLock
  8. pythonserial函数_python3.5 中serial模块的问题
  9. 2019-11-20 c语言参考手册
  10. c语言80c51控制系统设计,89C51单片机的步进电动机控制系统设计
  11. 中兴新支点操作系统_中兴新支点操作系统的设计和功能怎样?
  12. Zabbix3.4监控Linux主机CPU温度
  13. 手机图片怎么压缩变小,值得收藏的几个在线工具
  14. 软电话HTML界面,软电话条(webRTC)对接
  15. 语音合成——闽南语合成(1)
  16. postgresql 计算时间差
  17. python,list元素倒置
  18. Java前端(CSS)关于margin和padding的区别
  19. 分享一个麻将听牌算法(带癞子)(Lua)
  20. 压缩[SCOI2007]

热门文章

  1. 2020年12月1日 misc wp
  2. Linux智能家居m0代码,看过来!智能家居4大模块详解
  3. 王喆:计算广告技术综述与思考
  4. 王喆:深度学习计算广告
  5. Linux查看系统资源信息
  6. 抖音直播短视频运营带货创业项目营销策划方案计划书
  7. PostgreSQL sixth class
  8. 透明木头问世!“木头大王”胡良兵再发顶刊,已成立公司加速落地
  9. mac桌面文件夹突然消失解决办法
  10. LE_SHP_DELIVERY_PROC 修改交货单 VL01N、VL02N创建修改交货单时触发