k8s的部署

本文详述了k8s集群的部署过程,包括解决Docker间跨节点通讯、资源调度、组件管理等问题。介绍了master和node节点的角色及组件,如kube-apiserver、etcd、kubelet和kube-proxy。此外,还涉及命名空间、resource quotas、service、volume和网络通信场景。部署过程中,详细阐述了如何在CentOS7.3上安装docker 1.12、kubectl、kubelet和kubeadm,以及k8s依赖镜像的下载和节点加入。最后,通过kubectl命令验证了安装成功。
摘要由CSDN通过智能技术生成

k8s集群解决的问题

  1. Docker之间跨节点的通讯
  2. 动态管理集群负载,使集群工作在期望的状态
  3. 集群之间资源的调度
  4. 集群的运行方式

k8s的节点类型

  1. master节点负责整个集群的控制和管理
  2. node节点是负载节点,运行pod。

master节点所用到的组件

  1. kube-apiserver提供整个集群资源的操作入口(增删改查),也是集群的控制入口,提供http rest接口。
  2. etcd保存整个集群的状态,也即是资源信息。KEY/VALUE模式的存储系统
  3. kube-schedule负载pod(资源)的调度,根据设置策略调度pod到指定的node上运行。
  4. kube-controller-manager维护集群,所有资源的自动化控制中心。当整个集群的状态与期望不符合的时候,组件会努力让集群恢复期望状态,比如:当一个pod死亡,组件新建一个pod恢复对应replicas set期望的状态。

node节点所用到的组件

  1. kubelet负责pod的生命周期管理,同时与master密切协作,实现集群管理的基本功能
  2. kube-proxy实现service的内部服务发现与负载均衡机制的重要组件,主要通过设置iptables规则实现
  3. docker engin负责docker的生命周期管理
    k8s集群详细结构

命名空间

k8s的namespace是在将系统内部的对象“分配”到不同的空间下,形成逻辑上的分组,便于不同的分组在共享使用整个集群的资源同时还能被分别管理。
POD RC Service Deployment等资源都会运行在特定的namespace中,默认的namerspace是default。

resource quotas

空白

lable

通过lable进行弱关联,灵活的分类或者选择不同服务或者业务,可以采用松耦合方式进行服务部署。label是一对key/value(想到etcd也是一对KEY/VALUE模式的存储系统
),对k8s没有什么意义,但是对于用户意义很大

replication controller(RC)

RC是K8S另一种核心概念,应用托管到K8s后,他会确保任何时间K8S都有指定数量的Pod

Deployment

deployment同样是为了确保pod的数量和健康,90%与RC一样。

service

kubernetes中service是一种抽象的概念,它定义了一个pod的逻辑集合以及访问他们的策略,service同pod的关联是居于label完成。service的目标是提供一种桥梁,它会为访问者提供一个固定的ip,用于在访问时重定向到相应的后端,使得非K8s原生应用程序,在无需为kubemces编写特定代码的前提下,轻松访问。

volume

容器内数据随着容器的生命周期而存在,如果需要持久化的保存数据,则需要挂载数据卷

  1. emptyDir
  2. hostPath(local)
  3. NFS
  4. glusterFS
  5. cephFS

网络通信场景

  1. 容器到容器之间的直接通信
  2. POD到POD之间的通信(同一节点/不同节点)
  3. POD到service之间的通信
  4. 集群外部与内部组件之间的通信
    安装

安装准备
•操作系统:CentOS7.3
[root@centos7-base-ok]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
•安装机器:k8s-1为master节点,k8s-2、k8s-3为slave节点
[root@centos7-base-ok]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

k8s-1 192.168.80.28
k8s-2 192.168.80.35
k8s-3 192.168.80.14

安装步骤

安装docker 1.12(所有节点)

注意:现在docker已经更新到CE版本,但是kubernetes官方文档说在1.12上测试通过,最近版本的兼容性未测试,为了避免后面出现大坑,我们还是乖乖安装1.12版本的docker。

1.新建docker.repo文件,将文件移动到/etc/yum.repos.d/目录下
[root@centos7-base-ok]# cat /etc/yum.repos.d/docker.repo
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg

2.运行yum命令,找到需要安装的docker版本
10:21 [root@centos7-base-ok]# yum list|grep docker | sort -r
python2-avocado-plugins-runner-docker.noarch
python-dockerpty.noarch 0.4.1-6.el7 epel
python-dockerfile-parse.noarch 0.0.5-1.el7 epel
python-docker-scripts.noarch 0.4.4-1.el7 epel
python-docker-pycreds.noarch 1.10.6-1.el7 extras
python-docker-py.noarch 1.10.6-1.el7 extras
kdocker.x86_64 4.9-1.el7 epel
golang-github-fsouza-go-dockerclient-devel.x86_64
docker.x86_64 2:1.12.6-32.git88a4867.el7.centos
docker-v1.10-migrator.x86_64 2:1.12.6-32.git88a4867.el7.centos
docker-unit-test.x86_64 2:1.12.6-32.git88a4867.el7.centos
docker-registry.x86_64 0.9.1-7.el7 extras
docker-registry.noarch 0.6.8-8.el7 extras
docker-python.x86_64 1.4.0-115.el7 extras
docker-novolume-plugin.x86_64 2:1.12.6-32.git88a4867.el7.centos
docker-lvm-plugin.x86_64 2:1.12.6-32.git88a4867.el7.centos
docker-logrotate.x86_64 2:1.12.6-32.git88a4867.el7.centos
docker-latest.x86_64 1.13.1-13.gitb303bf6.el7.centos
docker-latest-v1.10-migrator.x86_64 1.13.1-13.gitb303bf6.el7.centos
docker-latest-logrotate.x86_64 1.13.1-13.gitb303bf6.el7.centos
docker-forward-journald.x86_64 1.10.3-44.el7.centos extras
docker-engine.x86_64 17.05.0.ce-1.el7.centos dockerrepo
docker-engine.x86_64 1.12.6-1.el7.centos @dockerrepo
docker-engine-selinux.noarch 17.05.0.ce-1.el7.centos @dockerrepo
docker-engine-debuginfo.x86_64 17.05.0.ce-1.el7.centos dockerrepo
docker-distribution.x86_64 2.6.1-1.el7 extras
docker-devel.x86_64 1.3.2-4.el7.centos extras
docker-compose.noarch 1.9.0-5.el7 epel
docker-common.x86_64 2:1.12.6-32.git88a4867.el7.centos
docker-client.x86_64 2:1.12.6-32.git88a4867.el7.centos
docker-client-latest.x86_64 1.13.1-13.gitb303bf6.el7.centos
cockpit-docker.x86_64 141-3.el7.centos extras

3.找到对应版本后,执行yum install -y 包名+版本号,安装1.12版本的docker-engine
[root@centos7-base-ok]# yum install -y docker-engine.x86_64-1.12.6-1.el7.centos

4.执行docker version命令,验证docker安装版本,执行docker run命令,验证docker是否安装成功
[root@centos7-base-ok]# docker version
Client:
Version: 1.12.6
API version: 1.24
Go version: go1.6.4
Git commit: 78d1802
Built: Tue Jan 10 20:20:01 2017
OS/Arch: linux/amd64

Server:
Version: 1.12.6
API version: 1.24
Go version: go1.6.4
Git commit: 78d1802
Built: Tue Jan 10 20:20:01 2017
OS/Arch: linux/amd64

5.设置开机启动,启动容器,docker安装完成
[root@centos7-base-ok]# systemctl enbale docker && systemctl start docker

安装kubectl、kubelet、kubeadm(根据需求在不同节点安装)

注意:此步骤是填坑的开始,因为官方文档的yum源在国内无法使用,安装完成后注意观察你的/var/log/message日志,会疯狂报错,别着急,跟着我一步一步来填坑。

1.新建kubernetes.repo文件,将文件移动到/etc/yum.repos.d/目录下(所有节点)
[root@centos7-base-ok]# cat /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0

2.通过yum安装kubectl、kubelet、kubeadm(所有节点)
[root@centos7-base-ok]# cat /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0

3.修改kubelet配置,启动kubelet(所有节点)

注意:时刻查看/var/log/message的日志输出,会看到kubelet一直启动失败。

编辑10-kubeadm.conf的文件,修改cgroup-driver配置:
[root@centos7-base-ok]# cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
[Service]
Environment=”KUBELET_KUBECONFIG_ARGS=–kubeconfig=/etc/kubernetes/kubelet.conf –require-kubeconfig=true”
Environment=”KUBELET_SYSTEM_PODS_ARGS=–pod-manifest-path=/etc/kubernetes/manifests –allow-privileged=true”
Environment=”KUBELET_NETWORK_ARGS=–network-plugin=cni –cni-conf-dir=/etc/cni/net.d –cni-bin-dir=/opt/cni/bin”
Environment=”KUBELET_DNS_ARGS=–cluster-dns=10.96.0.10 –cluster-domain=cluster.local”
Environment=”KUBELET_AUTHZ_ARGS=–authorization-mode=Webhook –client-ca-file=/etc/kubernetes/pki/ca.crt”
Environment=”KUBELET_CADVISOR_ARGS=–cadvisor-port=0”
Environment=”KUBELET_CGROUP_ARGS=–cgroup-driver=cgroupfs”
ExecStart=
ExecStart=/usr/bin/kubelet KUBELETKUBE

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值