天天看点

docker容器管理平台k8部署与应用什么是k8s为什么要使用k8s什么时候用在那用怎么用

什么是k8s

  • Kubernetes的名字来自希腊语,意思是“舵手” 或 “领航员”。K8s是将8个字母“ubernete”替换为“8”的缩写。
  • K8S的创造者,是众人皆知的行业巨头——Google。
  • 然而K8S并不是一件全新的发明。它的前身,是Google自己捣鼓了十多年的Borg系统。
  • K8S是2014年6月由Google公司正式公布出来并宣布开源的。

为什么要使用k8s

  • 就在Docker容器技术被炒得热火朝天之时,大家发现,如果想要将Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理,就在这个时候,K8S出现了
  • Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。
  • K8s 是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能

什么时候用

  • 快速部署应用
  • 快速扩展应用
  • 无缝对接新的应用功能
  • 节省资源,优化硬件资源的使用

在那用

  • 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
  • 可扩展: 模块化, 插件化, 可挂载, 可组合
  • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

怎么用

  • Build, Ship and Run (创建,发送和运行)
  • Build once,Run anywhere(搭建一次,到处能用)
  • Docker技术的三大核心概念,分别是:
  1. 镜像(Image)
  2. 容器(Container)
  3. 仓库(Repository)

k8s 架构

一个K8S系统,通常称为一个K8S集群(Cluster)

这个集群主要包括两个部分:

  • 一个Master节点(主节点)
  • Master节点包括API Server、Scheduler、Controller manager、etcd。

    ​ API Server是整个系统的对外接口,供客户端和其它组件调用,相当于“营业厅”。

    ​ Scheduler负责对集群内部的资源进行调度,相当于“调度室”。

    ​ Controller manager负责管理控制器,相当于“大总管”。

  • 一群Node节点(计算节点)
  • Node节点包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可选),还有就是Pod。

    ​ Pod是Kubernetes最基本的操作单元。

    ​ 一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。

    ​ 除了Pod之外,K8S还有一个Service,一个Service可以看作一组提供相同服务的Pod的对外访问接口

    ​ Docker,不用说了,创建容器的。

    ​ Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。

    ​ Kube-proxy,主要负责为Pod对象提供代理。

    ​ Fluentd,主要负责日志收集、存储与查询。

安装配置

1. 服务器资源/IP规划

registry 192.168.1.100 #镜像私有仓库

master 192.168.1.10 #主节点

node1 192.168.1.11 #docker子节点,性能尽量优选

node2 192.168.1.12

node3 192.168.1.13

2. 先决条件

开启路由转发 #每个节点都需要

echo “net.ipv4.ip_forward=1” >> /etc/sysctl.conf

关闭防火墙、selinux

3. 配置 yum 源

可以选择配置在线yum源;或者私有yum源,私有镜像资源可在此处下:k8s-yum

4. 在registry上安装并启动服务

yum install docker-distribution

systemctl start docker-distribution && systemctl enable docker-distribution

5. 在三台node节点上安装 docker配置文件并启动服务

yum install docker

sed -i ‘/^# INSECURE/s/^# //’ /etc/sysconfig/docker

sed -i ‘/^INSE/s/-registry/-registry 192.168.1.100:5000/’ /etc/sysconfig/docker

sed -i ‘/ADD_REGISTRY/s/registry.access.redhat.com/192.168.1.100:5000/’ /etc/sysconfig/docker

上传镜像至其中一个node,然后load并push至registry仓库 #以下3个镜像可在此处下载:转至下载页

centos.tar

kubernetes-dashboard.tar

pod-infrastructure.tar

上传过程详见:上传至私有仓库

验证

curl http://192.168.1.100:5000/v2/_catalog

6. 配置 kubernets - master主机

需安装的 package:

etcd

kubernetes-master

kubernetes-client

需启动的 service: #在修改完配置文件后启动并设置开机自启

kube-apiserver

kube-controller-manager

kube-scheduler

etcd

conf:

/etc/etcd/etcd.conf

6: ETCD_LISTEN_CLIENT_URLS=“http://192.168.1.10:2379”

/etc/kubernetes/config

22: KUBE_MASTER="–master=http://192.168.1.10:8080"

/etc/kubernetes/apiserver

8: KUBE_API_ADDRESS="–insecure-bind-address=0.0.0.0"

17: KUBE_ETCD_SERVERS="–etcd-servers=http://192.168.1.10:2379"

23: 删除 ServiceAccount 参数

/etc/kubernetes/controller-manager #无需改动

/etc/kubernetes/scheduler #无需改动

验证

kubectl get cs

kubectl get csr

kubectl get node

7. 配置 kubernets #三台node上都需要

需安装 package:

kubernetes-node

需启动 service: #在修改完配置文件后启动

kubelet

kube-proxy

docker

需配置 conf:

/etc/sysconfig/docker

4: 添加参数 --insecure-registry=192.168.1.100:5000 --add-registry 192.168.1.100:5000

/etc/kubernetes/config

22: KUBE_MASTER="–master=http://192.168.1.10:8080"

/etc/kubernetes/kubelet

5: KUBELET_ADDRESS="–address=0.0.0.0"

11: KUBELET_HOSTNAME="–hostname-override=本机名称"

14: 添加 --kubeconfig=/etc/kubernetes/kubelet.kubeconfig --pod-infra-container-image=pod-infrastructure:latest

手动创建:

vim /etc/kubernetes/kubelet.kubeconfig ##在node节点上创建此文件

apiVersion: v1

kind: Config

clusters:

- cluster:

server: http://192.168.1.10:8080 ###Master的IP,即自身IP

name: local

contexts:

- context:

cluster: local

name: local

current-context: local

8. 网络

master:

vim /etc/etcd/etcd.conf #修改文件参数

ETCD_LISTEN_CLIENT_URLS=“http://0.0.0.0:2379”

执行以下命令:

etcdctl mk /atomic.io/network/config ‘{“Network”: “10.254.0.0/16”, “Backend”: {“Type”: “vxlan”}}’

重启etcd服务

#所有node节点及masetr节点上执行

安装 package: flannel

vim /etc/sysconfig/flanneld

FLANNEL_ETCD_ENDPOINTS=“http://192.168.1.10:2379”

重启服务:

systemctl restart flanneld docker

9. 创建容器,测试

baseos.yaml kube-dashboard.yaml 文件可自己写,也可以在步骤3中下载

kubectl create -f baseos.yaml

测试

kubectl get pod -o wide

kubectl exec -it 容器ID – /bin/bash

kubectl create -f kube-dashboard.yaml

浏览器访问http://192.168.1.11:30090

docker容器管理平台k8部署与应用什么是k8s为什么要使用k8s什么时候用在那用怎么用

继续阅读