参照了网上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容器方式]的更多相关文章

  1. Centos7 使用 kubeadm 安装Kubernetes 1.13.3

    目录 目录 什么是Kubeadm? 什么是容器存储接口(CSI)? 什么是CoreDNS? 1.环境准备 1.1.网络配置 1.2.更改 hostname 1.3.配置 SSH 免密码登录登录 1.4 ...

  2. kubeadm安装kubernetes V1.11.1 集群

    之前测试了离线环境下使用二进制方法安装配置Kubernetes集群的方法,安装的过程中听说 kubeadm 安装配置集群更加方便,因此试着折腾了一下.安装过程中,也有一些坑,相对来说操作上要比二进制方 ...

  3. Kubernetes(K8s) 安装(使用kubeadm安装Kubernetes集群)

    背景: 由于工作发生了一些变动,很长时间没有写博客了. 概述: 这篇文章是为了介绍使用kubeadm安装Kubernetes集群(可以用于生产级别).使用了Centos 7系统. 一.Centos7 ...

  4. 使用kubeadm安装kubernetes高可用集群

    kubeadm安装kubernetes高可用集群搭建  第一步:首先搭建etcd集群 yum install -y etcd 配置文件 /etc/etcd/etcd.confETCD_NAME=inf ...

  5. 使用kubeadm安装Kubernetes 1.12

    使用kubeadm安装Kubernetes 1.12 https://blog.frognew.com/2018/10/kubeadm-install-kubernetes-1.12.html 测试环 ...

  6. 使用kubeadm安装kubernetes v1.14.1

    使用kubeadm安装kubernetes v1.14.1 一.环境准备 操作系统:Centos 7.5 ​ ⼀ 一台或多台运⾏行行着下列列系统的机器器: ​ Ubuntu 16.04+ ​ Debi ...

  7. 使用kubeadm 安装 kubernetes 1.15.1

    简介: Kubernetes作为Google开源的容器运行平台,受到了大家的热捧.搭建一套完整的kubernetes平台,也成为试用这套平台必须迈过的坎儿.kubernetes1.5版本以及之前,安装 ...

  8. 使用 kubeadm 安装 kubernetes v1.16.0

    近日通过kubeadm 安装 kubernetes v1.16.0,踩过不少坑,现记录下安装过程. 安装环境: 系           统:CentOS Linux release 7.6 Docke ...

  9. kubeadm 安装Kubernetes 1.16.3 (CentOS7+IPVS+Calico)

    目录 ·  . 一.更新系统内核(全部节点) ·  . 二.基础环境设置(全部节点) ·  . 1.修改 Host ·  . 2.修改 Hostname ·  . 3.主机时间同步 ·  . 4.关闭 ...

随机推荐

  1. POJ 3254 状态压缩 DP

    B - Corn Fields Crawling in process... Crawling failed Time Limit:2000MS     Memory Limit:65536KB    ...

  2. JQuery源码实现

    技术提高篇--- 推荐--- 动脑学院--- http://www.toutiao.com/a6368703139592569089/

  3. wcf 服务创建,配置,测试

    一.WCF创建: 常规的创建WCF服务是通过SOAP传输的,很多网站开发人员想放弃使用XML而使用JSON,这个时候可以参照:http://www.cnblogs.com/zhili/p/WCFRes ...

  4. bzoj 1705: [Usaco2007 Nov]Telephone Wire 架设电话线——dp

    Description 最近,Farmer John的奶牛们越来越不满于牛棚里一塌糊涂的电话服务 于是,她们要求FJ把那些老旧的电话线换成性能更好的新电话线. 新的电话线架设在已有的N(2 <= ...

  5. 数据分析之CE找数据大法

    一.基本介绍 CE的全称为Cheat Engine,是一款内存修改编辑工具,其官网是http://www.cheatengine.org,可以在其官网下载到最新的CE工具,目前最新版本是Cheat E ...

  6. MSSQL 错误:在将 varchar 值 '1,2,3,5,6' 转换成数据类型 int 时失败。

    MSSQL  错误:在将 varchar 值 '1,2,3,5,6' 转换成数据类型 int 时失败.

  7. 《Linux内核原理与设计》第十一周作业 ShellShock攻击实验

    <Linux内核原理与设计>第十一周作业 ShellShock攻击实验 分组: 和20179215袁琳完成实验及博客攥写 实验内容:   Bash中发现了一个严重漏洞shellshock, ...

  8. LINUX中断学习笔记【转】

    转自:http://blog.chinaunix.net/uid-14825809-id-2381330.html 1.中断的注册与释放: 在 , 实现中断注册接口: int request_irq( ...

  9. ERROR: do not initialise statics to false

    Question about git commit rule I git commit a patch, The patch has a "static int xxxxxxxxxxxxxx ...

  10. python基础===flask使用整理(转)

    flask 使用的一些整理 资源 Flask 文档|英文| expore flask| 快速教材| flask-admin| Flask-DebugToolbar| Flask-Login| Flas ...