docker K8s搭建文档

Kubernetes介绍:

kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。

kubernetes组件:

  • Kubernetes 组件:
    Kubernetes Master控制组件,调度管理整个系统(集群),包含如下组件:
    1.Kubernetes API Server
    作为Kubernetes系统的入口,其封装了核心对象的增删改查操作,以RESTful API接口方式提供给外部客户和内部组件调用。维护的REST对象持久化到Etcd中存储。
    2.Kubernetes Scheduler
    为新建立的Pod进行节点(node)选择(即分配机器),负责集群的资源调度。组件抽离,可以方便替换成其他调度器。
    3.Kubernetes Controller
    负责执行各种控制器,目前已经提供了很多控制器来保证Kubernetes的正常运行。
    4. Replication Controller
    管理维护Replication Controller,关联Replication Controller和Pod,保证Replication Controller定义的副本数量与实际运行Pod数量一致。
    5. Node Controller
    管理维护Node,定期检查Node的健康状态,标识出(失效|未失效)的Node节点。
    6. Namespace Controller
    管理维护Namespace,定期清理无效的Namespace,包括Namesapce下的API对象,比如Pod、Service等。
    7. Service Controller
    管理维护Service,提供负载以及服务代理。
    8.EndPoints Controller
    管理维护Endpoints,关联Service和Pod,创建Endpoints为Service的后端,当Pod发生变化时,实时更新Endpoints。
    9. Service Account Controller
    管理维护Service Account,为每个Namespace创建默认的Service Account,同时为Service Account创建Service Account Secret。
    10. Persistent Volume Controller
    管理维护Persistent Volume和Persistent Volume Claim,为新的Persistent Volume Claim分配Persistent Volume进行绑定,为释放的Persistent Volume执行清理回收。
    11. Daemon Set Controller
    管理维护Daemon Set,负责创建Daemon Pod,保证指定的Node上正常的运行Daemon Pod。
    12. Deployment Controller
    管理维护Deployment,关联Deployment和Replication Controller,保证运行指定数量的Pod。当Deployment更新时,控制实现Replication Controller和 Pod的更新。
    13.Job Controller
    管理维护Job,为Jod创建一次性任务Pod,保证完成Job指定完成的任务数目
    14. Pod Autoscaler Controller
    实现Pod的自动伸缩,定时获取监控数据,进行策略匹配,当满足条件时执行Pod的伸缩动作。
  • Kubernetes Node运行节点,运行管理业务容器,包含如下组件:
    1.Kubelet
    负责管控容器,Kubelet会从Kubernetes API Server接收Pod的创建请求,启动和停止容器,监控容器运行状态并汇报给Kubernetes API Server。
    2.Kubernetes Proxy
    负责为Pod创建代理服务,Kubernetes Proxy会从Kubernetes API Server获取所有的Service信息,并根据Service的信息创建代理服务,实现Service到Pod的请求路由和转发,从而实现Kubernetes层级的虚拟转发网络。
    3.Docker
    Node上需要运行容器服务

kubernetes安装:

IP地址主机名节点
192.168.20.101masterK8Smaster节点
192.168.20.102nodeK8Snode节点

首先保证机器的时间同步Docker 容器编排应用这里面有写怎么做时间同步:

  • 所有节点关闭swap分区:
swapoff -a
  • 修改/etc/fstab 下面的文件:

master和noder两个节点配置路由转发,修改并配置/etc/sysctl.d/K8S.conf 里面文件内容:

net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
  • 加载模块:
modprobe br_netfilter
sysctl -p /etc/sysctl.d/K8S.conf
  • master和noder两节点配置IPVS,编辑并配置/etc/sysconfig/modules/ipvs.modules 文件内容如下:
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
  • 给文件加入权限:
chmod 755 /etc/sysconfig/modules/ipvs.modules
bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

  • master和noder两节点安装 ipset 软件包:
yum install ipset ipvsadm -y
  • master和noder两节点创建本地 YUM 源:
wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo
  • master和noder两节点修改并编辑/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
  • 运行:
wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
rpm -import rpm-package-key.gpg
  • 清理yum缓存并下载key插件:
yum clean all
yum makecache fast
  • master和noder两节点安装 K8S 工具并启动 Kubelet,安装版本 kubeadm、kubectl、kubelet,版本号选用 v1:
yum -y install kubectl-1.14.2 kubeadm-1.14.2 kubelet-1.14.2 kubernetes-cni-0.7.5
systemctl enable kubelet;systemctl start kubelet

 初始化 K8S 集群:

  • 配置集群,master 节点上编写脚本,下载建立集群时所需镜像:
vim dockerimages.sh
  • 代码如下:
imgaes=(kube-apiserver:v1.14.2
 kube-controller-manager:v1.14.2
 kube-scheduler:v1.14.2
 kube-proxy:v1.14.2
 pause:3.1
 etcd:3.3.10)
for imageName in ${images[@]} ; do
 docker pull mirrorgooglecontainers/$imageName
 docker tag mirrorgooglecontainers/$imageName K8s.gcr.io/$imageName
 docker rmi mirrorgooglecontainers/$imageName
done
docker pull coredns/coredns:1.3.1
docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
docker rmi coredns/coredns:1.3.1
  • 配置集群,node 节点上编写脚本,下载建立集群时所需镜像:
vim dockerimages.sh
  • 代码如下:
imgaes=(kube-apiserver:v1.14.2
 kube-controller-manager:v1.14.2
 kube-scheduler:v1.14.2
 kube-proxy:v1.14.2
 pause:3.1
 etcd:3.3.10)
for imageName in ${images[@]} ; do
 docker pull mirrorgooglecontainers/$imageName
 docker tag mirrorgooglecontainers/$imageName K8s.gcr.io/$imageName
 docker rmi mirrorgooglecontainers/$imageName
done
docker pull coredns/coredns:1.3.1
docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
docker rmi coredns/coredns:1.3.1
  • 初始化集群,此操作仅需在 master 节点执行:
kubeadm init \
--apiserver-advertise-address=192.168.20.101 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.14.10 \
--pod-network-cidr=10.244.0.0/16
  • 配置环境变量,此操作仅需在 master 节点上执行,可以看到集群状态为未就绪(NotReady),其原因是因为网络还未进行配置:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 上传文件flanneld-v0.12.0-amd64 文件:
wget https://github.com/coreos/flannel/releases/tag/v0.12.0     这个文件已经上传班群
docker load -i flanneld-v0.12.0-amd64.docker
wget https://github.com/mrlxxx/kube-flannel.yml     这个文件拉取不了可以去网上找
kubectl apply -f  kube-flannel.yml
kubectl get cs

版权声明:
作者:小李
链接:https://xianshengli.cc/docker-k8s%e6%90%ad%e5%bb%ba%e6%96%87%e6%a1%a3/
来源:先生不吃香菜
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
docker K8s搭建文档
Kubernetes介绍: kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标……
文章目录
关闭
目 录