用kubeadm构建k8s集群部署
一、环境
三台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镜像,可以用前面介绍的方法。
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
在浏览器中输入
1.16为主节点,8001为代理开放的端口
显示界面

点跳过,出现界面

至此dashboard配置完成
同时我们的简单集群部署完成。
用kubeadm构建k8s集群部署的更多相关文章
- kubeadm进行K8S集群部署
环境说明: 节点类型 主机名 管理ip master master 192.168.2.10 nodes node1 192.168.2.1 ...
- 使用Kubeadm创建k8s集群之部署规划(三十)
前言 上一篇我们讲述了使用Kubectl管理k8s集群,那么接下来,我们将使用kubeadm来启动k8s集群. 部署k8s集群存在一定的挑战,尤其是部署高可用的k8s集群更是颇为复杂(后续会讲).因此 ...
- 使用Kubeadm创建k8s集群之节点部署(三十一)
前言 本篇部署教程将讲述k8s集群的节点(master和工作节点)部署,请先按照上一篇教程完成节点的准备.本篇教程中的操作全部使用脚本完成,并且对于某些情况(比如镜像拉取问题)还提供了多种解决方案.不 ...
- kubeadm搭建K8s集群及Pod初体验
基于Kubeadm 搭建K8s集群: 通过上一篇博客,我们已经基本了解了 k8s 的基本概念,也许你现在还是有些模糊,说真的我也是很模糊的.只有不断地操作去熟练,强化自己对他的认知,才能提升境界. 我 ...
- 二进制方法-部署k8s集群部署1.18版本
二进制方法-部署k8s集群部署1.18版本 1. 前置知识点 1.1 生产环境可部署kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式 kuberadm Kubea ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录
0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.服务器设置 1.把每一 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...
随机推荐
- 使用jQuery操作input的value值
表单控件是我们的重中之重,因为一旦牵扯到数据交互,离不开form表单的使用,比如用户的注册登录功能等 那么通过上节知识点我们了解到,我们在使用jquery方法操作表单控件的方法: $(selector ...
- 教你如何封装异步网络连接NSURLConnection实现带有百分比的下载
教你如何封装异步网络连接NSURLConnection实现带有百分比的下载 注:本教程需要你对block有着较为深刻的理解,且对如何封装对象有着一些经验. 也许你已经用惯了AFNetworking2. ...
- 远程计算机或设备将不接受连接,IE无法上网
遇到一个奇葩问题,IE浏览器突然不能上网了,但是其他浏览器可以,QQ什么的也都正常,只有IE是出现:远程计算机或设备将不接受连接 这个问题,网上找了很多答案都没用,什么设置WINS,允许远程访问,取消 ...
- 如何在SAP C4C里使用ABSL消费第三方Restful API
首先我们得有一个可以正常工作的Restful API: 然后在Cloud for Customer的Cloud Application Studio里创建Restful API的模型,把第一步可以正常 ...
- 如何在SAP里创建configurable material物料主数据
(1) 使用tcode CT04创建characteristic: assign 所有可能的color value: (2) 使用tcode CL02创建class. 类型选择300- variant ...
- 永中Office的ibus输入法问题
我在永中Office下无法调用ibus输入法,但是在其他窗口中都没有问题,如:gVIM,LeafPad,OpenOffice等等.我按照网上的方法在.bashrc文件中也添加了以下内容,可是还是不行. ...
- (转)对于ESP、EBP寄存器的理解
原文地址https://blog.csdn.net/yeruby/article/details/39780943 esp是栈指针,是cpu机制决定的,push.pop指令会自动调整esp的值: eb ...
- pexpect 初坑
通过一个很坑的任务,最近认识了一个新坑: pexpect .其实基本的用法并不难,不过,我还是跟以前一样,把几个基本函数的坑蹚了个遍.有感而发,记录一下. 首先简单的介绍一下这个坑,哦不对,这个库.这 ...
- CRUD是什么?数据结构、增查删改
http://blog.csdn.net/penginpha/article/details/6920444 CRUD是指在做计算处理时的增加(Create).查询(Retrieve)(重新得到数据) ...
- 汇编试验一:查看CPU和内存,用机器码指令和汇编指令编程
预备知识: r命令查看,改变CPU寄存器的内容 2.D命令查看内存 3.E命令改写内存 两种方式: 1: 2: 内存中写入机器码 用T命令执行机器码(先将CS:IP指向要执行的内存处) 用a命令写汇编 ...