博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过kubeadm安装kubernetes 1.7文档记录[docker容器方式]
阅读量:6307 次
发布时间:2019-06-22

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

参照了网上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以下项目:

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

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

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

核心docker镜像

A, 下载kubernetes 1.7.0 release软件包

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

B, 解压文件,在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.4echo '====docker login====='for DOCKER in ${DOCKERS[@]}; do    docker 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 downip link delete cni0ifconfig flannel.1 downip link delete flannel.1rm -rf /var/lib/cni/iptables -Xiptables -Ziptables -P INPUT ACCEPTiptables -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/configchown $(id -u):$(id -g) $HOME/.kube/configkubectl apply -f ./kube-flannel-rbac.yamlkubectl apply -f ./kube-flannel.yamlkubectl apply -f ./kube-dashboard-rbac.yamlkubectl 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.4echo '====docker login====='for DOCKER in ${DOCKERS[@]}; do    docker 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 downip link delete cni0ifconfig flannel.1 downip link delete flannel.1rm -rf /var/lib/cni/iptables -Xiptables -Ziptables -P INPUT ACCEPTiptables -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/v1beta1kind: DaemonSetmetadata:  name: traefik-ingress-lb  namespace: kube-system  labels:    k8s-app: traefik-ingress-lbspec:  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/v1beta1kind: Ingressmetadata:  name: traefik-ingress  namespace: kube-systemspec:  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.yamlKubectl apply –f traefik- ing.yaml

 

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

 

附录

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

*见本blog以前的帖子

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

 

Not end

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

你可能感兴趣的文章
Office365 Exchange Hybrid 番外篇 ADFS后端SQL群集(一)
查看>>
9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路...
查看>>
lvs fullnat部署手册(三)rs内核加载toa篇
查看>>
C++策略模式
查看>>
我的友情链接
查看>>
oracle表分区详解
查看>>
网络编程中常见结构体
查看>>
SSL/TLS原理详解
查看>>
Docker 自定义SSH服务镜像
查看>>
JavaScript强化教程 —— Cocos2d-JS自动JSB绑定规则修改
查看>>
configure: error: in `/root/httpd-2.2.11/srclib/apr': c
查看>>
CentOS7搭建Kubernetes-dashboard管理服务
查看>>
buildroot下查找外部编译器通过ext-toolchain-wrapper调用的参数
查看>>
MySQL Replication 主主配置详细说明
查看>>
Linux的任务调度
查看>>
在Android studio中添加jar包方法如下
查看>>
iframe 在ie下面总是弹出新窗口解决方法
查看>>
分享10款漂亮实用的CSS3按钮
查看>>
安装nginx 常见错误及 解决方法
查看>>
Gorun8电子商城
查看>>