通过kubeadm安装kubernetes 1.7文档记录[docker容器方式]

参照了网上N多文档,不一一列表,共享精神永存!!!!

==================================================

获取所有安装包

安装包分为两类,rpm安装包和docker镜像

rpm安装包

rpm为以下四个

kubeadm-1.7.0-0.x86_64.rpm
kubectl-1.7.0-0.x86_64.rpm
kubelet-1.7.0-0.x86_64.rpm
kubernetes-cni-0.5.1-0.x86_64.rpm

 

A, 从github上clone以下项目:

https://github.com/kubernetes/release

B,进入rpm目录,执行docker-build.sh脚本,会在output目录下生成那4个rpm安装包。

      *如果只生成amd-64的包,修改一下脚本,把其它几个构架的去掉。

      *这些安装包的生成,需要fedora:24镜像,最好提前准备。

核心docker镜像

A, 下载kubernetes 1.7.0 release软件包kubernetes-server-linux-amd64.tar.gz

https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG.md

B, 解压kubernetes-server-linux-amd64.tar.gz文件,在server/bin目录下,以下几个文件为kubernetes的核心docker镜像:

kube-apiserver.tar

kube-controller-manager.tar

kube-scheduler.tar

kube-proxy.tar

kube-aggregator.tar

将这些镜像导入harbor仓库便以后备用。

*因为k8s的官方镜像都放在google上,不FQ一般不能直接下载,附录会写一个如何结合github,dockerhub,daocloud来获取指定镜像的办法。

扩展docker镜像

扩展的docker镜像,涉及etcd,flannel,traefik,nginx,tomcat等,后面结合场景写清楚。

所有节点初始化

主要是确认服务器的各项系统指标满足安装kubernetes的要求。

*RedHat发行版本为: 7.3 (Maipo)

*Linux内核版本为:3.10.0-514.el7.x86_64

docker安装

这个安装我们没有涉及,原本已安装好,版本为17.05.0-ce, build 89658be

注意新增/etc/systemd/system/docker.service.d/docker.conf文件:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd  --graph=/dockerVolume  --storage-driver=overlay --insecure-registry habor-ip-address


它改写了docker的存储目录,且定义了harbor仓库地址。

禁用selinux

确认/usr/sbin/sestatus命令输出为:disabled

禁用ipv6

确认以下两条命令均无显示

lsmod | grep -i ipv6

ifconfig | grep -i inet6

开启路由转发

echo 1 > /proc/sys/net/ipv4/ip_forward

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

Iptables清空及禁用

iptables -Xiptables -Ziptables -P INPUT ACCEPTiptables -F

 

*默认禁用,通过硬防来控制规则。

主节点安装

上传rpm文件

将所有涉及的rpm包上传到服务器的一个安装目录(e.g:/root/k8s/)

上传docker镜像

将前节提到的docker images上传到harbor仓库(harbor-ip-address)

运行初始化前脚本

生成并运行以下脚本,进行master初始化前安装。(k8s-master-setup_before.sh)

 

#!/bin/bashHARBORPRE="1.2.3.4/kubernets/"
DOCKERS=(${HARBORPRE}/gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.4 ${HARBORPRE}/gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.4 ${HARBORPRE}/gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.4   ${HARBORPRE}/gcr.io/google_containers/pause-amd64:3.0  ${HARBORPRE}/quay.io/coreos/flannel-amd64:v0.8.0${HARBORPRE}/gcr.io/google_containers/etcd-amd64:3.0.17 ${HARBORPRE}/gcr.io/google_containers/kube-proxy-amd64:v1.7.0  ${HARBORPRE}/gcr.io/google_containers/kube-apiserver-amd64:v1.7.0 ${HARBORPRE}/gcr.io/google_containers/kube-controller-manager-amd64:v1.7.0  ${HARBORPRE}/gcr.io/google_containers/kube-scheduler-amd64:v1.7.0 ${HARBORPRE}/gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.1
)#登陆harbor,拉取镜像,更改名称
docker  login -u USER -p PASSWORD http://1.2.3.4
echo '====docker login====='for DOCKER in ${DOCKERS[@]}; dodocker pull ${DOCKER}docker tag ${DOCKER} ${DOCKER/${HARBORPRE}/}docker rmi ${DOCKER}
doneecho '====docker pull image and change tag====='
#安装rpm包
rpm -ivh ./*.rpm --nodeps --forceecho '====kubelet, kubeadm, kubectl install====='
# 有的脚本读取执行文件路径不一样
\cp -f  /usr/bin/kube* /usr/local/bin/echo '====cp exe file from /usr/bin to /usr/local/bin====='
#将docker文件驱动从systemd更改为cgroupfs,安装不对,会报错
sed -i 's/systemd/cgroupfs/g' /etc/systemd/system/kubelet.service.d/10-kubeadm.confecho '====change kubeadm file from systemd to cgroupfs====='systemctl daemon-reloadecho '====daemon-reload====='
#启动kubelet服务
systemctl start kubelet.serviceecho '====start kubelet====='
#以防万一,初始化kubeadm并清除以前安装可能留下的痕迹
kubeadm resetifconfig cni0 down
ip link delete cni0
ifconfig flannel.1 down
ip link delete flannel.1
rm -rf /var/lib/cni/iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -Fecho '====kubeadm reset====='
echo '====kube master setup finished====='

 

初始化kubernetes集群

kubeadm init --apiserver-advertise-address=k8s-master-ip-address  --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.7.0

 

*一定要指定version,k8s才不会去网上拉docker,指定pod的cidr,因为后面我们是用flannel作vxlan网络支撑.

*一般等待1分钟左右,初始化即可完成。如有问题,可及时查看/var/log/message进行排错。

运行初始化后脚本

生成并运行以下脚本,进行master初始化后安装。(k8s-master-setup_after.sh)

*以下几个文件都是github里的标准文件

 

#!/bin/bashmkdir -p $HOME/.kube
\cp -f /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/configkubectl apply -f ./kube-flannel-rbac.yaml
kubectl apply -f ./kube-flannel.yaml
kubectl apply -f ./kube-dashboard-rbac.yaml
kubectl apply -f ./kube-dashboard.yaml

 

确认安装

运行kubectl get命令,确认所有pod及svc状态正常.

kubectl get pods --all-namespaceskubectl get svc --all-namespaces

从节点安装

上传rpm文件

将所有涉及的rpm包上传到服务器的一个安装目录(e.g:/root/k8s/)

运行从节点前置脚本

生成并运行以下脚本,进行从节点加入前安装。(k8s-node-setup.sh)

#!/bin/bashHARBORPRE="1.2.3.4/kubernets/"
DOCKERS=(${HARBORPRE}/gcr.io/google_containers/pause-amd64:3.0  ${HARBORPRE}/quay.io/coreos/flannel-amd64:v0.8.0${HARBORPRE}/gcr.io/google_containers/kube-proxy-amd64:v1.7.0  )#登陆harbor,拉取镜像,更改名称
docker  login -u USER -p PASSWORD http://1.2.3.4
echo '====docker login====='for DOCKER in ${DOCKERS[@]}; dodocker pull ${DOCKER}docker tag ${DOCKER} ${DOCKER/${HARBORPRE}/}docker rmi ${DOCKER}
doneecho '====docker pull image and change tag====='
#安装rpm包
rpm -ivh ./*.rpm --nodeps --forceecho '====kubelet, kubeadm, kubectl install====='
# 有的脚本读取执行文件路径不一样
\cp -f  /usr/bin/kube* /usr/local/bin/echo '====cp exe file from /usr/bin to /usr/local/bin====='
#将docker文件驱动从systemd更改为cgroupfs,安装不对,会报错
sed -i 's/systemd/cgroupfs/g' /etc/systemd/system/kubelet.service.d/10-kubeadm.confecho '====change kubeadm file from systemd to cgroupfs====='systemctl daemon-reloadecho '====daemon-reload====='
#启动kubelet服务
systemctl start kubelet.serviceecho '====start kubelet====='
#以防万一,初始化kubeadm并清除以前安装可能留下的痕迹
kubeadm resetifconfig cni0 down
ip link delete cni0
ifconfig flannel.1 down
ip link delete flannel.1
rm -rf /var/lib/cni/iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -Fecho '====kubeadm reset====='
echo '====kube master setup finished====='

 

从节点加入

kubeadm join --token TOKEN MASTER-IP-ADDRESS:6443

 

*这个token可通过在主节点上运行kubeadm token list获得

从节点加入确认

在主节点上运行kubectl get nodes(从节点上也可以运行,但要先获取认证文件)

 

扩展功能安装

基于traefik的ingress功能安装

A, 下载traefik最新版本(略)

B, 写traefik-ds.yaml配置文件

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:name: traefik-ingress-lbnamespace: kube-systemlabels:k8s-app: traefik-ingress-lb
spec:template:metadata:labels:k8s-app: traefik-ingress-lbname: traefik-ingress-lbspec:terminationGracePeriodSeconds: 60hostNetwork: truerestartPolicy: Alwayscontainers:- image: traefik:latestimagePullPolicy: IfNotPresentname: traefik-ingress-lbresources:limits:cpu: 200mmemory: 30Mirequests:cpu: 100mmemory: 20Miports:- name: httpcontainerPort: 80hostPort: 80- name: admincontainerPort: 8580args:- --web- --web.address=:8580- --kubernetes

 

C, 写traefik-ing.yaml配置文件

apiVersion: extensions/v1beta1
kind: Ingress
metadata:name: traefik-ingressnamespace: kube-system
spec:rules:- host: cb.exmaple.comhttp:paths:- path: /backend:serviceName: tomcat-dmservicePort: 8087- host: cn.example.cnhttp:paths:- path: /backend:serviceName: nginx-dmservicePort: 8088

 

D, 应用这两个配置文件

Kubectl apply –f traefik-ds.yamlKubectl apply –f traefik- ing.yaml

 

E,  测试,访问从节点8580端口。

 

附录

如何曲线获取google上的docker镜像

*见本blog以前的帖子

Kubernetes大版本与各个组件版本的对应关系

 

Not end

转载于:https://www.cnblogs.com/aguncn/p/7228792.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

san框架计数的textarea

san框架计数的textarea<template><div style"height: 100%;width:100%;"><div style"border-bottom: 1px solid #e7e7e7"><div style"height:230px;overflow: hidden;"><t-textarea id"cxfssy" value"…

京东五星电器送扫地机器人_京东五星电器联手打造互联网小家电“孵化器”

出新迭代迅速、件均价较低的生活小家电复购率高&#xff0c;易“种草”&#xff0c;是最具活力的家电品类。11月24日&#xff0c;京东小家电事业部联合京东五星电器召开“小家电发展战略沟通会”&#xff0c;美的、苏泊尔、九阳、小熊、雀巢、德龙、戴森、飞利浦、科沃斯等众多…

异或运算性质

异或性质**异或运算的性质**

星痕 轻松实现大屏数据可视化_数据美的历程有多难?大屏可视化轻松帮你实现...

看到这个数据可视化大屏&#xff0c;我们如何实现美感呢&#xff1f;正确的姿势必不可少&#xff01;当我们满怀激动地开始数据可视化时&#xff0c;请不要马上钻入某个细节里&#xff0c;不要急着考虑用什么酷炫的图表来展现&#xff0c;也不要纠结于用什么颜色、什么字体。而…

卡方检验检验水准矫正_【2008.】趋势性卡方检验专题讨论

学员提问学员老师&#xff0c;在SPSS中怎样实现线性趋势卡方检验呢&#xff1f;很多学员都为这个问题疑惑&#xff0c;下面我来详细介绍一下。老师1、线性趋势卡方检验的常用方法&#xff1a;线性趋势检验最常用的方法是&#xff1a;Cochran-Armitage Test for Trend(也就是the…

前端布局的一些收获

前端布局的一些收获这段时间做前端样式的改造&#xff0c;有一些收获&#xff0c;来记录一下(吐槽一句IE垃圾) 1.calc()函数 定义与用法 calc() 函数用于动态计算长度值。 需要注意的是&#xff0c;运算符前后都需要保留一个空格&#xff0c;例如&#xff1a;width: calc(10…

lua菜鸟教程_Lua语言学习

根据百科描述&#xff1a;Lua是一个小巧的脚本语言&#xff0c;是巴西里约热内卢天主教大学里的一个研究小组&#xff0c;由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。 其设计目的是为了嵌入应用程序中&#xff0c;从而为应…

如何使用插件生成自定义Java 8代码

大多数程序员讨厌的一件事就是编写样板代码。 无休止的时间花费在设置实体类和配置数据库连接上。 为了避免这种情况&#xff0c;您可以让Speedment Open Source之类的程序为您生成所有这些代码。 这样可以很容易地以最少的人工就可以启动和运行数据库项目&#xff0c;但是当将…

下拉被下面列表遮住

下拉被下面列表遮住在上面布局添加 style"overflow: visible;z-index: 100"

jmeter之-用Firefox录制https协议证书问题

录制脚本的时候&#xff0c;比如录制https协议的百度网站 https://www.baidu.com &#xff0c;所有录制设置均正常&#xff0c;但是在jmeter录制控制器里面就是没有任何录制的请求。 这个时候提示说证书不对 1、打开火狐选项——高级——证书 也可以在浏览器输入about:preferen…

七点人脸姿态估计_Github开源库简单配置即可上线的3D人脸检测工具箱

【导读】人脸识别/检测是计算机视觉方向的一个基础的任务。小编在Github中找到了一个轻松配置即可上线使用的3D人脸检测工具箱&#xff0c;该工具箱包括多种特性&#xff1a;2D稀疏点、稠密点、3D、深度图、PNCC、UV纹理展开、姿态估计、序列化等等。对人脸识别/检测相关工作感…

SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)

二、完整的锁兼容性矩阵(见下图) 对上图的是代码说明&#xff1a;见下图。 三、下表列出了数据库引擎可以锁定的资源。 名称 资源 缩写 编码 呈现锁定时&#xff0c;描述该资源的方式 说明 数据行 RID RID 9 文件编号&#xff1a;分页编号&#xff1a;Slot编号 用于…

angularjs1访问子组件_Vue学习笔记之组件的应用

Vue组件的应用&#xff1a;1、基础使用&#xff1a;第一步创建组件&#xff0c;第二步注册组件&#xff0c;第三步使用组件。在注册组件是需要用到template的属性。全局组件和局部组件组件的嵌套(父子组件)&#xff1a;注意先后顺序&#xff0c;先声明&#xff0c;后面才能用2、…

Qt 程序打包发布总结

1. 概述 当我们用QT写好了一个软件&#xff0c;要把你的程序分享出去的时候&#xff0c;不可能把编译的目录拷贝给别人去运行。编译好的程序应该是一个主程序&#xff0c;加一些资源文件&#xff0c;再加一些动态链接库&#xff0c;高大上一些的还可以做一个安装文件。 QT开发…

FTP服务器原理

21.1 FTP服务器原理使用明码传输方式&#xff0c;且有相当多的安全危机历史。因此一般使用功能较少的vsftpd这个软件。21.1.1 FTP功能简介有以下功能文档传输与管理不同等级的用户身份&#xff1a;user&#xff0c;guest&#xff0c;anonymous命令记录与登录文件记录限制用户活…

java对两个表进行排序_Excel工作簿中多个worksheet工作表,如何对工作表进行排序?...

案例&#xff1a;如下图所示&#xff0c;一个Excel文件中&#xff0c;包含了多个工作表&#xff0c;有1-雷哥office&#xff0c;2-雷哥office......但是&#xff0c;我们发现工作表的顺序是比较混乱的&#xff0c;为了方便管理&#xff0c;如何对工作表进行排序呢&#xff1f;方…

华为手机打字声音怎么开启_华为手机这5个超实用小功能,记得要开启,谁用都说好...

华为手机这5个超实用小功能&#xff0c;记得要开启&#xff0c;谁用都说好用过华为手机的用户应该都知道&#xff0c;emui优化的很到位&#xff0c;同时也给用户非常好的体验感&#xff0c;随着系统的优化&#xff0c;功能也是越来越完善&#xff0c;不仅越来越好用&#xff0c…

qt 保存绘制图片时背景变黑_QGraphicsScene绘制背景图片引起的问题

项目是基于Qt的图形视图框架编写的&#xff0c;现有个需求是要在图形中加入自定义的背景图片。心想不就是个背景图片吗&#xff1f;只要重写drawBackground函数我想怎么画就怎么画啊。于是立马从QGraphicsScene类中派生了一个CScene类&#xff0c;并重写了虚函数drawBackground…

JavaScript | JSON基本格式

————————————————————————————————————————————————————————— JSON 语法 "use strict"; // 简单值 "hello,world" // 必须使用双引号// 对象 {"name": "hugh","age&…

jmeter 生成计数器_使用密码摘要生成器扩展JMeter

jmeter 生成计数器最近&#xff0c;我不得不处理一个具有50,000条用户记录的OpenLDAP实例&#xff0c;并进行一些压力测试。 JMeter是填充LDAP的最佳选择。 但是&#xff0c;在我的情况下&#xff0c;OpenLDAP配置为不接受任何明文密码。 因此&#xff0c;我无法使用通过JMet…