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

二 为什么要使用k8s

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

三 什么时候用

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

四 在那用

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

五 怎么用

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

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

在这里插入图片描述
这个集群主要包括两个部分:

1 - 一个Master节点(主节点)

  • Master节点包括API Server、Scheduler、Controller manager、etcd。

    ​ API Server是整个系统的对外接口,供客户端和其它组件调用,相当于“营业厅”。
    Scheduler负责对集群内部的资源进行调度,相当于“调度室”。
    Controller manager负责管理控制器,相当于“大总管”。

2 - 一群Node节点(计算节点)

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

    Pod是Kubernetes最基本的操作单元。
    一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器,除了Pod之外,

      **Service**,一个Service可以看作一组提供相同服务的Pod的对外访问接口Docker,不用说了,创建容器的。
      Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。
      Kube-proxy,主要负责为Pod对象提供代理。
      Fluentd,主要负责日志收集、存储与查询。
    

二 安装与部署k8s服务

1 真机主机挂载yum源

[student@room9pc01]$
mount /linux-soft/04/openstack/RHEL7-extras.iso /var/ftp/extras/
mount: /dev/loop1 写保护,将以只读方式挂载


2 安装配置

1 )设置 ip 和主机名
vim /etc/hosts
192.168.1.10 master
192.168.1.11 node1
192.168.1.12 node2
192.168.1.13 node3
192.168.1.100 repo

2 ) 开启路由转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward=1

~ scp /etc/sysctl.conf root@node1:/etc/sysctl.conf
scp /etc/sysctl.conf root@node2:/etc/sysctl.conf
scp /etc/sysctl.conf root@node3:/etc/sysctl.conf
3)配置 yum 源

vim /etc/yum.repos.d/local.repo
[extras]
name=CentOS-$releasever - Extras
baseurl=“ftp://192.168.1.254/extras”
enabled=1
gpgcheck=0

  1. 配置私有仓库 -> 192.168.1.100
    主机192.168.1.100

yum install docker-distribution

主机192.168.1.10指定私有仓库
vim /etc/sysconfig/docker
13/24 指向192.168.1.100:5000
systemctl restart docker
[master主机] for i in node{1…3};do ssh $i "systemctl restart docker " done


3 导入镜像 docker load -i

docker load -i centos.tar
docker load -i kubernetes-dashboard.tar
docker load -i pod-infrastructure.tar

4 上传镜像使用 docker tag/push
Docker tag docker.io/centos:latest 192.168.1.100:5000/docker.io/centos:latest
docker tag kubernetes-dashboard-amd64:v1.8.3 192.168.1.100:5000/kubernetes-dashboard-amd64:v1.8.3
docker tag pod-infrastructure:latest 192.168.1.100:5000/pod-infrastructure:latest

上传镜像 ->docker push
docker push
centos.tar
kubernetes-dashboard.tar
pod-infrastructure.tar
docker push 192.168.1.100:5000/docker.io/centos
docker push 192.168.1.100:5000/kubernetes-dashboard-amd64
docker push 192.168.1.100:5000/pod-infrastructure

验证
curl http://192.168.1.100:5000/v2/_catalog
curl http://192.168.1.100:5000/v2/_catalog?prety

5 装包配置 kubernets - master
package:
1 etcd
2 kubernetes-master
3 kubernetes-client

重启服务service:
1 kube-apiserver-service
2 kube-controller-manager
3 kube-scheduler
4 Etcd

配置文件1:
Vim /etc/etcd/etcd.conf

   6: ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"

配置文件2
Vim /etc/kubernetes/config
22: KUBE_MASTER="–master=http://192.168.1.10:8080"

[root@master ~]# cd /etc/kubernetes/
[root@master kubernetes]# ls
apiserver config controller-manager scheduler

配置文件3 :
Vim apiserevr
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 参数 -不要令牌

验证查看
 kubectl get cs
          NAME                 STATUS    MESSAGE             ERROR
      controller-manager   Healthy   ok                  
      etcd-0               Healthy   {"health":"true"}   
      scheduler            Healthy   ok 
 kubectl get csr
 kubectl get node

6 node1 node2 node3
装包配置 kubernets - minion
package: ->kubernetes-node

重启服务service:
kubelet
kube-proxy
docker
配置文件conf:
Vim /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://127.0.0.0"->1.10:8080

 /etc/kubernetes/kubelet
    5: KUBELET_ADDRESS="--address=0.0.0.0"
   11: KUBELET_HOSTNAME="--hostname-override=本机名称"->node1
   14: 添加 --kubeconfig=/etc/kubernetes/kubelet.kubeconfig 
            --pod-infra-container-image=pod-infrastructure:latest

创建一个配置文件,写入YAML格式配置文件
Vim /etc/kubernetes/kubelet.kubeconfig
apiVersion: v1
kind: Config
clusters:

  • cluster:
    server: http://192.168.1.10:8080 ###Master的IP,即自身IP
    name: local
    contexts:
  • context:
    cluster: local
    name: local

开机自启
查看状态
systemctl enable kubelet.service kube-proxy.service
systemctl start kubelet.service kube-proxy.service
systemctl status kubelet.service kube-proxy.service

主机master 验证查看:
current-context: local
[root@master kubernetes]# kubectl get node
NAME STATUS ROLES AGE VERSION
node1 Ready 5m v1.10.3
node2 Ready 33s v1.10.3
node3 NotReady 5s v1.10.3

7 网络 master:
配置文件 /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"}}'

minion:
package: flannel
/etc/sysconfig/flanneld
FLANNEL_ETCD_ENDPOINTS=“http://192.168.1.10:2379”
rsync -av /etc/sysconfig/flanneld node:/etc/sysconfig/flanneld
rsync -av /etc/sysconfig/flanneld node1:/etc/sysconfig/flanneld
rsync -av /etc/sysconfig/flanneld node2:/etc/sysconfig/flanneld
rsync -av /etc/sysconfig/flanneld node3:/etc/sysconfig/flanneld
systemctl enable flanneld.service
systemctl stop docker
systemctl start flanneld.service
systemctl start docker
->systemctl restart flannel.service docker

 systemctl restart flanneld docker

8 创建容器,测试
kubectl create -f baseos.yaml
测试
kubectl get pod -o wide
kubectl exec -it test-os-3826630470-jc5j4 – /bin/bash

vim kube-dashboard.yaml

image: 192.168.1.100:5000/kubernetes-dashboard-amd64:v1.8.3##仓库地址

  • –apiserver-host=http://192.168.1.10:8080 ###修改为Master的
    IP

kubectl create -f kube-dashboard.yaml

deployment.apps “kubernetes-dashboard” created
service “kubernetes-dashboard” created

查看是否启动成功:
[root@master ~]# kubectl -n kube-system get pod
NAME READY STATUS RESTARTS AGE
kubernetes-dashboard-7f75c65855-8x7mz 1/1 Running 0 49s

网页验证查看->这里随便查看一个node节点都是可以的
192.168.1.11:30090
在这里插入图片描述
在这里插入图片描述


9 vim baseos.yaml
replicas: 2 #指当前创建的副本数量 默认不填 默认值就>为‘1’
image: centos #镜像 镜像的名字和版本

ku kubectl get pod
bectl create -f baseos.yaml

ssh node2
kubectl get pod -o wide
Kubectl exec -it test test-os-d55cc774d-qhh7f_default_2a15f519-c260-11e9-8241-525400f6beb0_0 – /bin/bash

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐