`

ubuntu下部署kubernetes

阅读更多

          在国内的网络环境下,按照官方文档,在Ubuntu上安装kubernetes,打通ssh、设置环境变量、下载源码或者二进制包,部署,是根本就安装不成功的,最基本的连git上的源码都下不下来,就算下来了,后续安装依赖的flannel、etcd的时候还是下载不下来;于是干脆自己动手下载依赖包,修改kubernetes安装脚本。

        1、前提条件看官方文档,Ubuntu必须是14.0x,16.x版本是安装不了的;docker镜像加速,就用阿里云的

        2、下载kubernetes release包,下载的是v1.3.5,大小1.xG

        3、下载flannel,下载v0.5.5,太新版本没敢下

        4、下载ectd,v3.0.4

        5、解压kubernets、flannel、etcd后,软连接到kubernetes/cluster/ubuntu 目录下,是解压后的目录名,不能乱改目录名,否则后边用到了时候找不到

        6、编辑kubernetes/cluster/ubuntu目录下download-release.sh文件,把用来下载和解压flannel、etcd、kubernetes的三个curl和tar注释掉,由于上边我们已经下载并且软连接了相应的包目录,所以只用这个文件拷二进制文件就好了;实际上download-release.sh一大部分功能就是将kubernetes、flannel、etcd相关的二进制文件,拷到kubernetes/cluster/ubuntu/binaries目录下,后边会把这些文件以及一些配置文件拷到各个minion节点

        7、安装过程中会遇到

saltbase/salt/generate-cert/make-ca-cert.sh: No such file or directory
         /kubernetes/server/kubernetes下已经有salt包,解压后saltbase整个目录cp到kubernetes/cluster/下

        8、kubernetes/cluster/ubuntu/util.sh 这个文件在运行的时候会storage.googleapis.com下载easy-rsa.tar.gz文件,但是国内经常被墙,如果被墙卡在这一步,会拷贝binaries后长时间没反应,这个可以回复评论提供一个下载。

        9、kubernetes/cluster/ubuntu/util.sh 同时会向kubernetes的集群中其他机器上拷贝etcd、flannel、kubernetes二进制文件和配置,但是如果运行多次kube-up.sh,并且拷贝过相关文件到了个集群中其他文件,会出现不能覆盖的问题:

password to copy files and start node: 
cp: cannot create regular file ‘/opt/bin/etcd’: Text file busy 
cp: cannot create regular file ‘/opt/bin/kube-apiserver’: Text file busy cp: cannot create regular file ‘/opt/bin/kube-controller-manager’: Text file busy 
cp: cannot create regular file ‘/opt/bin/kube-scheduler’: Text file busy start: Job is already running: etcd

解决办法,修改util文件,把所有cp改为cp -f,强行覆盖:

cp ~/kube/default/* /etc/default/
改为
cp -f ~/kube/default/* /etc/default/

        10、kubernetes/cluster/ubuntu/util.sh 同时会启动集群其他机器的etcd、flannel、kubernetes组件,但是这里启动脚本用的是service xxx start,而不是restart,这个重复启动会报错退出

start: Job is already running: etcd

解决办法把util.sh中所有service xxx start改为service xxx restart

        做完以上步骤,按照这篇文档,找几台机器(如果没有,并且你电脑配置不错,可以装个虚拟机,然后拷贝几个出来启动),在master上打通ssh,注意自己的ip也要ssh-copy-id一下,否则后边部署会失败

$ ssh-keygen
$ ssh-copy-id user@172.16.30.136
$ ssh-copy-id user@172.16.30.137
$ ssh-copy-id user@172.16.30.138

        下载kubernetes源码或release包(release包见下边第2条),开始安装前先设置一些环境变量,前三个是三个依赖包的版本,自己按照实际版本设置,最后一个是运行kubernetes的操作系统:

export KUBE_VERSION=1.3.5
export FLANNEL_VERSION=0.5.5
export ETCD_VERSION=3.0.4
export KUBERNETES_PROVIDER=ubuntu

        然后配置cluster/ubuntu/config-default.sh,设置master和minion,SERVICE_CLUSTER_IP_RANGE表示集群内部service所对应的ip范围,flannel_net表示pod所分配的IP范围。这里我发现跟集群中节点ip在一个段中才能部署成功。

export nodes=${nodes:-"user@172.16.30.136 user@172.16.30.137 user@172.16.30.138"}
roles=${roles:-"ai i i"}
export roles_array=($roles)
export NUM_NODES=${NUM_NODES:-3}
export SERVICE_CLUSTER_IP_RANGE=${SERVICE_CLUSTER_IP_RANGE:-172.16.30.0/24}  # formerly PORTAL_NET
export FLANNEL_NET=${FLANNEL_NET:-172.16.0.0/16} 

        最后在kubernetes/cluster下运行kube-up.sh,就会调到以上修改的相关脚本,如果成功,会看到这个提示:

Cluster validation succeeded

        验证运行结果:

$kubectl get nodes
NAME            STATUS    AGE
172.16.30.136   Ready     14d
172.16.30.137   Ready     14d
172.16.30.138   Ready     14d
分享到:
评论

相关推荐

    Ubuntu 16.04搭建Kubernetes集群环境 · 语雀.pdf

    在Ubuntu 16.04上搭建Kubernetes(K8s)集群环境是开发者和运维人员构建可扩展、高可用的应用程序平台的重要步骤。Kubernetes作为一个容器编排系统,允许用户管理和部署容器化应用,提供了服务发现、负载均衡、容错...

    在ubuntu 16.04下用二进制部署kubernetes v1.6.2集群-文档

    ### 在Ubuntu 16.04下使用二进制方式部署Kubernetes v1.6.2集群 #### 组件版本与集群环境 1. **集群组件及版本:** - **Kubernetes:** v1.6.2 - **Docker:** 17.05.0-ce - **Etcd:** 3.1.6 - **Flannel:** ...

    Ubuntu 18 Kubernetes集群的安装和部署 以及Helm的安装.rar

    在本教程中,我们将深入探讨如何在Ubuntu 18.04操作系统上安装和部署Kubernetes(K8s)集群,以及如何进一步安装Helm,一个强大的Kubernetes应用包管理工具。Kubernetes是一个开源的容器编排系统,用于自动化容器化...

    和我一步步部署 kubernetes 集群.pdf

    标题《和我一步步部署 Kubernetes 集群》介绍了如何手动部署Kubernetes集群,强调了不使用自动化工具如kubeadm,而是通过详细的步骤和配置策略,使读者能够理解每个组件的工作原理和交互机制。文档特别适合那些已经...

    ubuntu18安装Kubernetes 1.20.5.rar

    在本教程中,我们将深入探讨如何在Ubuntu 18.04操作系统上安装Kubernetes(K8s)1.20.5版本。Kubernetes是一个开源的容器编排系统,用于自动化容器化应用的部署、扩展和管理。1.20.5是Kubernetes的一个稳定版本,...

    Go-和我一步步部署kubernetes集群

    在本教程中,我们将深入探讨如何使用Go语言和手动步骤部署Kubernetes集群,而不是依赖像kubeadm这样的工具。Kubernetes(简称K8s)是Google开源的容器编排系统,它允许开发者管理和调度微服务应用在分布式环境中运行...

    Kubernetes部署CNI网络插件

    部署CNI网络插件

    kubernetes-on-aws:使用CloudFormation和Ubuntu在AWS上部署Kubernetes

    kubernetes-on-aws:使用CloudFormation和Ubuntu在AWS上部署Kubernetes

    Kubernetes容器集群管理系统搭建指南:从零到集群的全面部署

    通过本手册,您将学习如何在实际生产环境中部署Kubernetes集群,以便对容器化的应用程序进行自动化管理、扩展和维护。 环境准备: 部署Kubernetes集群首先需要准备基础的硬件和软件环境,本文会详细列出系统要求,如...

    kube-ansible:Ansible部署Kubernetes二进制文件

    该项目将用于ansible部署kubernetes。 请参阅README.md和group_vars/template.yml文件以进行项目配置 云端支援 蔚蓝 Aws(Apiserver HA使用CLB) GCP(Apiserver HA使用TCP负载平衡) 操作系统支持 所有Node安装...

    ubuntu kubernetes中使用NFS创建pv_pvc.rar

    在Ubuntu操作系统上部署Kubernetes集群并利用NFS(Network File System)来创建持久卷(PV)和持久卷声明(PVC)是云原生应用存储管理的重要环节。NFS允许Kubernetes集群中的不同Pod共享同一份存储资源,适用于数据...

    ikubernetes:ansible部署kubernetes项目

    overview使用ansible部署kubernetes项目注: 1. 适用于开发环境 不建议直接上生产环境,如需使用 请自行修改文件 2. 本项目部署镜像均采用谷歌服务器镜像没有经过tag 方式 ,部署时请保证服务器可以访问google服务器 3...

    kube-init:部署Kubernetes集群以学习Kubernetes的最简单方法

    部署Kubernetes集群以学习Kubernetes的最简单方法 部署集群 从您最喜欢的云提供商创建Ubuntu 64 Server / VM 然后应用: wget -qO- https://git.io/veKlu | sudo sh wget -qO- https://git.io/veKlu | sudo sh ...

    Ubuntu下docker+k8s的安装

    基于Ubuntu14.04进行docker+k8s的安装,经测试也适用于Ubuntu的更高版本

    Kubernetes实战(二进制部署,项目,架构&源码分析)

    Kubernetes实战(二进制部署,项目,架构&源码分析)该教程记录安装及使用Kubernetes,主要偏向实战,基础知识请查看参考文档,文档共分为三个部分: Kubernetes 二进制部署 & 插件配置 官方实例、社区实例 & 自己开发...

    Kubernetes(K8S)集群管理Docker容器(部署篇)

    环境说明:操作系统:Ubuntu16.04orCentOS7Kubernetes版本:v1.8.3Docker版本:v17.09-ce均采用当前最新稳定版本。关闭selinux。打开下面网址,下载下面两个红色框框的包。...

    kubernetes-server-linux-amd64.tar.gz

    "kubernetes-server-linux-amd64.tar.gz"是一个针对Linux AMD64平台的Kubernetes服务器安装包,它包含了部署Kubernetes集群所需的所有核心组件。本文将详细介绍如何利用这个压缩包在Linux环境中搭建Kubernetes集群。...

    krd:Kubernetes参考部署

    该项目为部署Kubernetes集群提供了参考。 其有趣的剧本允许在Bare-metal或Virtual Machines上预配部署。 Linux发行版 名称 版 的Ubuntu 16.04 / 18.04 / 20.04 CentOS的 7/8 openSUSE 风滚草 组件 名称 描述 ...

    Kubernetes-HA-BareMetal:使用Kubespray和尽可能少的云组件进行Kubernetes的HA部署!

    在部署Kubernetes到裸金属环境时,确认硬件与Ubuntu及Kubernetes的兼容性是非常重要的。 8. **裸金属部署**:裸金属部署是指在没有虚拟化层的物理服务器上部署Kubernetes,这可以提高性能并降低云成本。在这种部署...

Global site tag (gtag.js) - Google Analytics