在国内的网络环境下,按照官方文档,在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(K8s)集群环境是开发者和运维人员构建可扩展、高可用的应用程序平台的重要步骤。Kubernetes作为一个容器编排系统,允许用户管理和部署容器化应用,提供了服务发现、负载均衡、容错...
### 在Ubuntu 16.04下使用二进制方式部署Kubernetes v1.6.2集群 #### 组件版本与集群环境 1. **集群组件及版本:** - **Kubernetes:** v1.6.2 - **Docker:** 17.05.0-ce - **Etcd:** 3.1.6 - **Flannel:** ...
在本教程中,我们将深入探讨如何在Ubuntu 18.04操作系统上安装和部署Kubernetes(K8s)集群,以及如何进一步安装Helm,一个强大的Kubernetes应用包管理工具。Kubernetes是一个开源的容器编排系统,用于自动化容器化...
标题《和我一步步部署 Kubernetes 集群》介绍了如何手动部署Kubernetes集群,强调了不使用自动化工具如kubeadm,而是通过详细的步骤和配置策略,使读者能够理解每个组件的工作原理和交互机制。文档特别适合那些已经...
在本教程中,我们将深入探讨如何在Ubuntu 18.04操作系统上安装Kubernetes(K8s)1.20.5版本。Kubernetes是一个开源的容器编排系统,用于自动化容器化应用的部署、扩展和管理。1.20.5是Kubernetes的一个稳定版本,...
在本教程中,我们将深入探讨如何使用Go语言和手动步骤部署Kubernetes集群,而不是依赖像kubeadm这样的工具。Kubernetes(简称K8s)是Google开源的容器编排系统,它允许开发者管理和调度微服务应用在分布式环境中运行...
部署CNI网络插件
kubernetes-on-aws:使用CloudFormation和Ubuntu在AWS上部署Kubernetes
通过本手册,您将学习如何在实际生产环境中部署Kubernetes集群,以便对容器化的应用程序进行自动化管理、扩展和维护。 环境准备: 部署Kubernetes集群首先需要准备基础的硬件和软件环境,本文会详细列出系统要求,如...
该项目将用于ansible部署kubernetes。 请参阅README.md和group_vars/template.yml文件以进行项目配置 云端支援 蔚蓝 Aws(Apiserver HA使用CLB) GCP(Apiserver HA使用TCP负载平衡) 操作系统支持 所有Node安装...
在Ubuntu操作系统上部署Kubernetes集群并利用NFS(Network File System)来创建持久卷(PV)和持久卷声明(PVC)是云原生应用存储管理的重要环节。NFS允许Kubernetes集群中的不同Pod共享同一份存储资源,适用于数据...
overview使用ansible部署kubernetes项目注: 1. 适用于开发环境 不建议直接上生产环境,如需使用 请自行修改文件 2. 本项目部署镜像均采用谷歌服务器镜像没有经过tag 方式 ,部署时请保证服务器可以访问google服务器 3...
部署Kubernetes集群以学习Kubernetes的最简单方法 部署集群 从您最喜欢的云提供商创建Ubuntu 64 Server / VM 然后应用: wget -qO- https://git.io/veKlu | sudo sh wget -qO- https://git.io/veKlu | sudo sh ...
基于Ubuntu14.04进行docker+k8s的安装,经测试也适用于Ubuntu的更高版本
Kubernetes实战(二进制部署,项目,架构&源码分析)该教程记录安装及使用Kubernetes,主要偏向实战,基础知识请查看参考文档,文档共分为三个部分: Kubernetes 二进制部署 & 插件配置 官方实例、社区实例 & 自己开发...
环境说明:操作系统:Ubuntu16.04orCentOS7Kubernetes版本:v1.8.3Docker版本:v17.09-ce均采用当前最新稳定版本。关闭selinux。打开下面网址,下载下面两个红色框框的包。...
"kubernetes-server-linux-amd64.tar.gz"是一个针对Linux AMD64平台的Kubernetes服务器安装包,它包含了部署Kubernetes集群所需的所有核心组件。本文将详细介绍如何利用这个压缩包在Linux环境中搭建Kubernetes集群。...
该项目为部署Kubernetes集群提供了参考。 其有趣的剧本允许在Bare-metal或Virtual Machines上预配部署。 Linux发行版 名称 版 的Ubuntu 16.04 / 18.04 / 20.04 CentOS的 7/8 openSUSE 风滚草 组件 名称 描述 ...
在部署Kubernetes到裸金属环境时,确认硬件与Ubuntu及Kubernetes的兼容性是非常重要的。 8. **裸金属部署**:裸金属部署是指在没有虚拟化层的物理服务器上部署Kubernetes,这可以提高性能并降低云成本。在这种部署...