一、环境

三台centos机器

二、软件及容器准备

1.安装docker环境

本例安装 docker-ce版本,repo源为docker-ce.repo文件,拷贝到 /etc/yum.repos.d下

yum install  -y  docker-ce

2.下载相关镜像

下载软件包

将所有软件下载至/data目录

# 链接:https://pan.baidu.com/s/13DlR1akNBCjib5VFaIjGTQ 密码:1l69
# 链接:https://pan.baidu.com/s/1V6Uuj6a08mEq-mRLaI1xgw 密码:6gap

也可:

为了集群创建时不用等候时间过长,我们用一下办法解决

K8S_VERSION=v1.11.2
ETCD_VERSION=3.2.18
PAUSE_VERSION=3.1
coredns_version=1.1.3

kube-apiserver-amd64:$K8S_VERSION
kube-controller-manager-amd64:$K8S_VERSION
kube-scheduler-amd64:$K8S_VERSION
kube-proxy-amd64:$K8S_VERSION
etcd-amd64:$ETCD_VERSION
pause:$PAUSE_VERSION
coredns:$coredns_version

由于不能上国外网站,我们先从registry.cn-hangzhou.aliyuncs.com/google_containers/    pull 下镜像,然后 docker  tag  为要求的k8s.gcr.io/

为此我写了一个脚本完成,pull_k8s_image.sh

配置镜像加速器

vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://lw9sjwma.mirror.aliyuncs.com"]
} systemctl daemon-reload
systemctl restart docker 获取kube软件包
cd kube-packages-1.10.1                 # 软件包在网盘中下载
tar -xvf kube-packages-1.10.1.tar
cd kube-packages-1.10.1
yum -y install local *.rpm
systemctl start kubelet && systemctl enable kubelet

统一k8s与docker的驱动

# 1.查看docker驱动
docker info | Cgroup Driver
Cgroup Driver: cgroupfs # 修改k8s配置文件与docker保持一致
sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

导入基础镜像

cd /data
docker load -i k8s-images-1.10.tar.gz

三、集群构建

在三台机器上做:

1.关闭swap和firewalld

在master和node节点上关闭swap和firewalld

swapoff -a ;  systemctl   stop  firewalld

2.安装kubeadm, kubelet, kubectl各个节点都要操作

可以在配置好yum源的情况下,先行下载yumdownloader kubelet kubectl kubernetes-cni kubeadm

然后yum  -y install local  *.rpm

在/etc/yum.repos.d/下设置kubernetes.repo 源文件  kubernetes的版本应与下载的镜像版本相同

yum  -y  install   kubectl  kubeadm  kubelet

修改kubelet的KUBELET_CGROUP_ARGS的为 --cgroup-driver=cgroupfs

vim  /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

修改为Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs"

启动kubelet

systemctl enable kubelet && systemctl start kubelet

3.初始化master集群在主节点上操作

使用kubeadm命令在master节点上初始化集群,由于之后安装pod网络插件的要求,在集群初始化时需要添加--pod-network-cidr=10.244.0.0/16参数

由于master节点无法访问google网络, 集群初始化时无法获得k8s版本号,这里需要手动设置k8s版本号为1.11.2

kubeadm init --kubernetes-version=1.11.2 --pod-network-cidr=10.244.0.0/16

这两个参数可以不加,根据情况而定,  --apiserver-advertise-address=主节点ip  --node-name=主节点名字

出现一下画面代表成功

到这里集群已经初始化完成,这里需要记录一下kubeadm join命令的后续参数,以便于其他两个node节点加入集群时使用。

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

4.其他节点加入集群

kubeadm  join  192.168.1.16:6443  --token 后边跟 初始集群时生成的token,192.168.1.16为本例的master 节点

5.验证集群的状态(各个节点都应下载好相应的镜像,否则节点不能ready)

kubectl get nodes

如果不能ready,可先用命令 kubectl  get   pod  --namespace=kube-system 查看pod 情况,如有未启动的,可用命令

kubectl  describe  pod   pod名字 查看pod详细信息后处理,一般为节点的镜像没有下载好相应的版本。

四、安装dashboard

每个节点:

1.dashboard需要下载k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3镜像,可以用前面介绍的方法。

2.下载dashboard部署文件上传到master节点,部署Dashboard。 部署文件下载地址: https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

3.kubectl  apply  -f  kubernetes-dashboadr.yaml

kubectl  get  deployment  --namespace=kube-system

已经有应用开始运行,

我们更改kubernetes-dashboadr.yaml,以便外网可以访问

kubectl   edit  service  kubernetes-dashboard --namespace=kube-system

修改service的type:NodePort

kubectl  get  service  --namespace=kube-system

看到监听的端口为30001,我们在浏览器中输入节点ip及端口,访问,出现安全认证的页面,不能访问,

查阅了很多资料,如下处理:

生成修改权限的配置文件

更改用户权限的文件kubernetes-dashboard-admin.yaml

kind: ClusterRoleBinding

apiVersion: rbac.authorization.k8s.io/v1beta1

metadata:

name: dashboard-admin

roleRef:

apiGroup: rbac.authorization.k8s.io

kind: ClusterRole

name: cluster-admin

subjects:

- kind: ServiceAccount

name: default

namespace: kube-system

kubectl  apply  -f  kubernetes-dashboard-admin.yaml

通过代理调度,在主节点上进行

kubectl proxy --address=192.168.1.16 --disable-filter=true

在浏览器中输入

http://192.168.1.16:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login

1.16为主节点,8001为代理开放的端口

显示界面

点跳过,出现界面

至此dashboard配置完成

同时我们的简单集群部署完成。

用kubeadm构建k8s集群部署的更多相关文章

  1. kubeadm进行K8S集群部署

    环境说明: 节点类型     主机名  管理ip master          master   192.168.2.10 nodes            node1    192.168.2.1 ...

  2. 使用Kubeadm创建k8s集群之部署规划(三十)

    前言 上一篇我们讲述了使用Kubectl管理k8s集群,那么接下来,我们将使用kubeadm来启动k8s集群. 部署k8s集群存在一定的挑战,尤其是部署高可用的k8s集群更是颇为复杂(后续会讲).因此 ...

  3. 使用Kubeadm创建k8s集群之节点部署(三十一)

    前言 本篇部署教程将讲述k8s集群的节点(master和工作节点)部署,请先按照上一篇教程完成节点的准备.本篇教程中的操作全部使用脚本完成,并且对于某些情况(比如镜像拉取问题)还提供了多种解决方案.不 ...

  4. kubeadm搭建K8s集群及Pod初体验

    基于Kubeadm 搭建K8s集群: 通过上一篇博客,我们已经基本了解了 k8s 的基本概念,也许你现在还是有些模糊,说真的我也是很模糊的.只有不断地操作去熟练,强化自己对他的认知,才能提升境界. 我 ...

  5. 二进制方法-部署k8s集群部署1.18版本

    二进制方法-部署k8s集群部署1.18版本 1. 前置知识点 1.1 生产环境可部署kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式 kuberadm Kubea ...

  6. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...

  7. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...

  8. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.服务器设置 1.把每一 ...

  9. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...

随机推荐

  1. Android笔记——Socket通信实现简单聊天室

    两部分,客户端和服务端 ---------------------------------------------------------------- 客户端  1.为防止ANR异常,互联网连接可用 ...

  2. Net编译原理简单

    转载:http://blog.csdn.net/sundacheng1989/article/details/20941893 首先简单说一下计算机软件运行.所谓软件运行,就是一步一步做一些事情.计算 ...

  3. gulp 前端构建工具入门

    gulp 前端构建工具入门 标签(空格分隔): gulp 1. 安装gulp npm i -g gulp 2. 创建gulp项目 2.1 Hello world 使用npm init初始化项目文件夹. ...

  4. Android Studio添加取消代码注释快捷键

    经常需要注释,取消注释代码 Ctrl + /       对每段代码前面添加或者取消 // Ctrl + Shift + /   对代码添加 或取消 /* */ Ctrl + B     查找定义 C ...

  5. S/4HANA业务角色概览之订单到收款篇

    大家好我叫Sean Zhang,中文名张正永.目前在S/4HANA产品研发部门任职产品经理,而这一阶段要从2017年算起,而在那之前接触更多还是技术类的,比如做过iOS.HANA.ABAP.UI5等等 ...

  6. 当当网-前端project师測试题

                                     前端project师測试题(笔试时间20分钟.面试时间20分钟)   一.笔试 1.基础问题 (1)前端页面有哪三层构成,各自是什么? ...

  7. 【[HNOI2005]狡猾的商人】

    加权并查集 由于给出信息的是一些一个区间的和为多少,我们显然并不好处理出每一个点应该为多少,这我们根本做不到 但是我们想一下,如果要求一个区间\([l,r]\)的和,那么我们是不是可以利用前缀和\(p ...

  8. 【luogu P2296 寻找道路】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2296 题意:给定起点终点,找一条从起点到终点的最短路径使路上的每个点都能有路径到达终点. 我们先反着建一遍图 ...

  9. STM32F103 ucLinux开发之二(内核启动汇编代码分析)

    start_kernel之前的汇编代码分析 Boot中执行下面两句话之后,进入uclinux内核. theKernel = (void (*)(int, int, unsigned int))((ui ...

  10. python多线程知识-实用实例

    python多线程使用场景:IO操作,不适合CPU密集操作型任务   1.多个线程内存共享 2.线程同时修改同一份数据需要加锁,mutex互斥锁 3.递归锁:多把锁,锁中有锁 4.python多线程, ...