博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用kubeadm部署k8s1.8
阅读量:6757 次
发布时间:2019-06-26

本文共 3281 字,大约阅读时间需要 10 分钟。

编译

直接在linux上解压源码的tar,或git clone, 然后进入kubernetes目录下,执行make即可编译。

安装

1.8.4中apiserver端开启了较为严格的认证机制,并且https证书的生成和下发也做了统一的部署,所以建议使用kubeadm进行统一的安装。

kubeadm的步骤简单说只有三步

预备工作

  • 为了避免翻不了墙,我们先在master节点上运行起etcd,简单的运行方法可以直接将etcd的二进制文件放入/usr/local/bin中,执行
nohup /usr/local/bin/etcd >/dev/null 2>&1 &

; 即可后台启动etcd,默认监听127.0.0.1 的2379 和2380端口。

  • 编辑配置文件,配置文件主要要存一些初始化集群时要用的参数,比如如下的配置:
{        "apiVersion":"kubeadm.k8s.io/v1alpha1",        "kubernetesVersion":"v1.8.4",        "imageRepository": "hub.c.163.com/monsterhy",//修改成我们自己的镜像仓库,省去翻墙        "etcd":{                "endpoints":[                        "http://127.0.0.1:2379" //预先配置好etcd,否则kubeadm会从网上下载etcd镜像运行。                ]        },        "apiserverExtraArgs":{ //此处给apiserver配置额外的启动参数,方便在master上执行kubectl                "insecure-bind-address":"127.0.0.1",                "insecure-port": "8080"        }}址
  • 在master和node上均下载kubeadm.dev,kubectl.deb(它被kubeadm依赖),kubelet.deb 和kubernetes-cni.dev(它被kubelet依赖),将上述deb安装好,确认可以 service kubelet start 后,stop kubelet服务;

上述的deb可以从找到,该页面上列表中deb的filename,加上‘’前缀,即可下载。需要翻墙

配置master

  • 在master机器上,执行
kubeadm init --config=***

,就能看到开始初始化master,我们可以提前将apiserver、controller-manager、scheduler的docker镜像拉下来(也可以用自己编译的二进制文件打包docker镜像)只要确保镜像tag满足上文配置文件中的镜像仓库即可,比较省时。

  • master初始化完毕时,kubeadm的输出日志中会有如下的内容:

[bootstraptoken] Using token: c53f64.4165718ebe6533a9

这里的token是用于node上采用kubeadm注册用的。

  • 如果我们想要重新配置master,可以执行kubeadm reset 将已经配置好的master清空

配置node

  • node机器上,先为kubelet启动时需要的cni插件做预备工作,一般kubeadm初始化node时会自动将一些基础cni插件放到/opt/cni/bin/中,我们还需要在/opt/cni/net.d/中加入CNI配置文件,如:
{    "cniVersion":"0.3.1",    "type": "ptp",    "name": "hynet"}

上述是一个简易的cni插件配置,表示采用ptp插件。k8s创建pause容器时,kubelet会执行/opt/cni/bin/ptp 二进制文件。

  • 在node机器上,执行kubeadm join --token=$token $masterURL,就能看到node注册成功。
  • 如果我们要修改一些kubelet的启动参数,比如:我们看到kubectl get nodes 展示的node名是node的机器名,如果我们想改成node的IP,需要:先还原之前的kubeadm配置:kubeadm reset;master上将该node删除;再次配置cni插件; 修改node上的/etc/systemd/system/kubelet.service.d/10-kubeadm.conf文件,该文件是kubelet这个service的配置文件,其初始内容如下,我们改动一下其中的$KUBELET_EXTRA_ARGS,给kubelet加上hostname-override参数:
[Service]Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true"Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin"Environment="KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10 --cluster-domain=cluster.local"Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt"Environment="KUBELET_CADVISOR_ARGS=--cadvisor-port=0"Environment="KUBELET_CERTIFICATE_ARGS=--rotate-certificates=true --cert-dir=/var/lib/kubelet/pki"#给kubelet配置额外的启动参数:hostname-overrideEnvironment="KUBELET_EXTRA_ARGS=--hostname-override=10.173.32.21"ExecStart=ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CADVISOR_ARGS $KUBELET_CERTIFICATE_ARGS $KUBELET_EXTRA_ARGS

随后再次执行行kubeadm join --token=$token $masterURL,就能看到新的node注册成功。

  • 使用kubeadm初始化时,node上的kubelet必须以service的形式安装好,所以我们建议使用下载deb/rpm进行安装的方式,如果我们要使用自己改造的kubelet,在第一步安装完deb后,或者整体部署完毕后,再替换node上的kubelet二进制文件,然后service kubelet restart即可。

转载地址:http://ewzeo.baihongyu.com/

你可能感兴趣的文章
man page分類與說明
查看>>
站立会议3
查看>>
Libvirt 版本降级过程记录 4.5.0 to 3.9.0
查看>>
net core 的Generic Host 之Generic Host Builder
查看>>
SQL Server性能杀手
查看>>
1157: 零起点学算法64——回型矩阵
查看>>
Ubuntu系统清理瘦身
查看>>
How to Analyze Java Thread Dumps
查看>>
SQL-58 获取有奖金的员工相关信息。
查看>>
整数转为罗马数字
查看>>
ubuntu 本地和服务器scp文件传输
查看>>
bitmap
查看>>
image has dependent child images
查看>>
Vim常用的命令
查看>>
redis权限认证及登录
查看>>
判断表是否存在 存储
查看>>
rox + openbox + fbpanel + conky打造又快又稳的桌面
查看>>
“蚁族” 的生活方式画像
查看>>
数据结构概述
查看>>
python自学笔记(二)python基本数据类型之字符串处理
查看>>