通过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 -X iptables -Z iptables -P INPUT ACCEPT iptables -F
*默认禁用,通过硬防来控制规则。
主节点安装
上传rpm文件
将所有涉及的rpm包上传到服务器的一个安装目录(e.g:/root/k8s/)
上传docker镜像
将前节提到的docker images上传到harbor仓库(harbor-ip-address)
运行初始化前脚本
生成并运行以下脚本,进行master初始化前安装。(k8s-master-setup_before.sh)
#!/bin/bash
HARBORPRE="1.2.3.4/kubernets/"
DOCKERS=(
${HARBORPRE}/gcr.io/google_containers/k8s-dns-sidecar-amd64:
${HARBORPRE}/gcr.io/google_containers/k8s-dns-kube-dns-amd64:
${HARBORPRE}/gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:
${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:
${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[@]}; do
docker pull ${DOCKER}
docker tag ${DOCKER} ${DOCKER/${HARBORPRE}/}
docker rmi ${DOCKER}
done
echo '====docker pull image and change tag====='
#安装rpm包
rpm -ivh ./*.rpm --nodeps --force
echo '====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.conf
echo '====change kubeadm file from systemd to cgroupfs====='
systemctl daemon-reload
echo '====daemon-reload====='
#启动kubelet服务
systemctl start kubelet.service
echo '====start kubelet====='
#以防万一,初始化kubeadm并清除以前安装可能留下的痕迹
kubeadm reset
ifconfig 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 -F
echo '====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/bash mkdir -p $HOME/.kube \cp -f /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config kubectl 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-namespaces kubectl get svc --all-namespaces
从节点安装
上传rpm文件
将所有涉及的rpm包上传到服务器的一个安装目录(e.g:/root/k8s/)
运行从节点前置脚本
生成并运行以下脚本,进行从节点加入前安装。(k8s-node-setup.sh)
#!/bin/bash
HARBORPRE="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[@]}; do
docker pull ${DOCKER}
docker tag ${DOCKER} ${DOCKER/${HARBORPRE}/}
docker rmi ${DOCKER}
done
echo '====docker pull image and change tag====='
#安装rpm包
rpm -ivh ./*.rpm --nodeps --force
echo '====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.conf
echo '====change kubeadm file from systemd to cgroupfs====='
systemctl daemon-reload
echo '====daemon-reload====='
#启动kubelet服务
systemctl start kubelet.service
echo '====start kubelet====='
#以防万一,初始化kubeadm并清除以前安装可能留下的痕迹
kubeadm reset
ifconfig 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 -F
echo '====kubeadm reset====='
echo '====kube master setup finished====='
从节点加入
kubeadm
*这个token可通过在主节点上运行kubeadm token list获得
从节点加入确认
在主节点上运行kubectl get nodes(从节点上也可以运行,但要先获取认证文件)
扩展功能安装
基于traefik的ingress功能安装
A, 下载traefik最新版本(略)
B, 写traefik-ds.yaml配置文件
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: traefik-ingress-lb
namespace: kube-system
labels:
k8s-app: traefik-ingress-lb
spec:
template:
metadata:
labels:
k8s-app: traefik-ingress-lb
name: traefik-ingress-lb
spec:
terminationGracePeriodSeconds: 60
hostNetwork: true
restartPolicy: Always
containers:
- image: traefik:latest
imagePullPolicy: IfNotPresent
name: traefik-ingress-lb
resources:
limits:
cpu: 200m
memory: 30Mi
requests:
cpu: 100m
memory: 20Mi
ports:
- name: http
containerPort: 80
hostPort: 80
- name: admin
containerPort: 8580
args:
- --web
- --web.address=:8580
- --kubernetes
C, 写traefik-ing.yaml配置文件
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: traefik-ingress
namespace: kube-system
spec:
rules:
- host: cb.exmaple.com
http:
paths:
- path: /
backend:
serviceName: tomcat-dm
servicePort: 8087
- host: cn.example.cn
http:
paths:
- path: /
backend:
serviceName: nginx-dm
servicePort: 8088
D, 应用这两个配置文件
Kubectl apply –f traefik-ds.yaml Kubectl apply –f traefik- ing.yaml
E, 测试,访问从节点8580端口。
附录
如何曲线获取google上的docker镜像
*见本blog以前的帖子
Kubernetes大版本与各个组件版本的对应关系

Not end
通过kubeadm安装kubernetes 1.7文档记录[docker容器方式]的更多相关文章
- Centos7 使用 kubeadm 安装Kubernetes 1.13.3
目录 目录 什么是Kubeadm? 什么是容器存储接口(CSI)? 什么是CoreDNS? 1.环境准备 1.1.网络配置 1.2.更改 hostname 1.3.配置 SSH 免密码登录登录 1.4 ...
- kubeadm安装kubernetes V1.11.1 集群
之前测试了离线环境下使用二进制方法安装配置Kubernetes集群的方法,安装的过程中听说 kubeadm 安装配置集群更加方便,因此试着折腾了一下.安装过程中,也有一些坑,相对来说操作上要比二进制方 ...
- Kubernetes(K8s) 安装(使用kubeadm安装Kubernetes集群)
背景: 由于工作发生了一些变动,很长时间没有写博客了. 概述: 这篇文章是为了介绍使用kubeadm安装Kubernetes集群(可以用于生产级别).使用了Centos 7系统. 一.Centos7 ...
- 使用kubeadm安装kubernetes高可用集群
kubeadm安装kubernetes高可用集群搭建 第一步:首先搭建etcd集群 yum install -y etcd 配置文件 /etc/etcd/etcd.confETCD_NAME=inf ...
- 使用kubeadm安装Kubernetes 1.12
使用kubeadm安装Kubernetes 1.12 https://blog.frognew.com/2018/10/kubeadm-install-kubernetes-1.12.html 测试环 ...
- 使用kubeadm安装kubernetes v1.14.1
使用kubeadm安装kubernetes v1.14.1 一.环境准备 操作系统:Centos 7.5 ⼀ 一台或多台运⾏行行着下列列系统的机器器: Ubuntu 16.04+ Debi ...
- 使用kubeadm 安装 kubernetes 1.15.1
简介: Kubernetes作为Google开源的容器运行平台,受到了大家的热捧.搭建一套完整的kubernetes平台,也成为试用这套平台必须迈过的坎儿.kubernetes1.5版本以及之前,安装 ...
- 使用 kubeadm 安装 kubernetes v1.16.0
近日通过kubeadm 安装 kubernetes v1.16.0,踩过不少坑,现记录下安装过程. 安装环境: 系 统:CentOS Linux release 7.6 Docke ...
- kubeadm 安装Kubernetes 1.16.3 (CentOS7+IPVS+Calico)
目录 · . 一.更新系统内核(全部节点) · . 二.基础环境设置(全部节点) · . 1.修改 Host · . 2.修改 Hostname · . 3.主机时间同步 · . 4.关闭 ...
随机推荐
- Apache 403 错误解决方法-让别人可以访问你的服务器(转)
有一次做好了一个效果放在自己电脑的服务器上,让同学查看(同处于校园网中),却不知apache一直显示403 错误,对方没有权限访问,我知道这应该是配置文件httpd.conf中的问题,网上搜了一下其他 ...
- 淘淘相关DTO
result 用于Controller层返回值或Controller于service层之间返回值 package com.taotao.common.pojo; import java.util.Li ...
- Spring 容器AOP的实现原理——动态代理
参考:http://wiki.jikexueyuan.com/project/ssh-noob-learning/dynamic-proxy.html(from极客学院) 一.介绍 Spring的动态 ...
- ubuntu server安装kvm
参考资料: 1. https://help.ubuntu.com/community/KVM 2.http://wiki.ubuntu.org.cn/Kvm%E6%95%99%E7%A8%8B 3.h ...
- 题解【luoguP4053 bzojP1029 [JSOI2007]建筑抢修】
洛谷题链 bzoj题链 PS: \(t_i\) : 在什么时候建筑 \(i\) 自爆 \(a_i\) : 修复 \(i\) 所花时间 题解 算法:贪心+堆维护 贪心策略: 直接按 \(t\) 贪心?显 ...
- [Luogu 1160] 队列安排
Luogu 1160 队列安排 链表H2O H2O H2O模板. 太久不写链表,忘干净了,竟调了半个晚上. 保留备用. #include <cstdio> #include <cst ...
- 【HNOI】 小A的树 tree-dp
[题目描述]给定一颗树,每个点有各自的权值,任意选取两个点,要求算出这两个点路径上所有点的and,or,xor的期望值. [数据范围]n<=10^5 首先期望可以转化为求树上所有点对的and,o ...
- solaris如何启动ssh服务
先查看一下ssh服务状态:# svcs或# svcs | grep sshonline Aug_07 svc:/network/ssh:default 如需要关闭ssh服务(关闭完可以 svcs | ...
- bASE--Risk
//参考base-4.0.2.jar public class Risk implements Serializable //规则名public String ruleName; //规则包名publ ...
- hdfs基本思想
1.hdfs的优缺点 (1)不适合大量小文件存储: (2)不适合并发写入,不支持文件随机修改:(只能append追加) (3)不支持随机读等低延时的访问方式 2.基本思想 主从结构 主节点, name ...