Kubernetes从1.3开始引入kubeadm来试图简化其复杂的安装。但kubeadm至今仍不稳定,而且我个人觉得kubeadm反而麻烦,还不如直接用脚本或者其他自动化工具来安装来的利索。关于kubeadm配置master的ha,也有相应的替代方案,比如使用keepalived或者corosync等高可用集群软件。所以在这篇文档中,我还是会使用传统的方式来安装kubernetes集群
Kubernetes依赖于docker和etcd,docker的网络,在这里直接使用flannel。在这篇文档里,不会对master的高可用做过多的阐述,我们先简单的建立一个基本可用最小化集群。我这里使用的三台CentOS 7.2的服务器,各服务器角色介绍如下:
10.5.10.116 server-116 master节点、node节点、etcd节点 10.5.10.117 server-117 node节点、etcd节点 10.5.10.131 server-131 node节点、etcd节点
需要说明的是,这里需要大家自己设定好基本环境,比如关闭selinux,配置时间同步,清空现有的iptables策略,以及配置好epel源等。
1、安装并启动docker
docker的安装比较简单,直接使用yum安装即可:
yum install -y docker systemctl start docker systemct enable docker
2、安装etcd
在所有节点上执行如下安装操作:
yum install -y etcd
修改/etc/etcd/etcd.conf配置文件如下:
ETCD_NAME=server-116 #etcd的名称,可以设置为各节点的主机名 ETCD_DATA_DIR="/data/etcd" ETCD_LISTEN_PEER_URLS="http://10.5.10.116:2380" ETCD_LISTEN_CLIENT_URLS="http://10.5.10.116:2379,http://127.0.0.1:2379" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.5.10.116:2380" ETCD_INITIAL_CLUSTER="server-116=http://10.5.10.116:2380,server-117=http://10.5.10.117:2380,server-131=http://10.5.10.131:2380" ETCD_INITIAL_CLUSTER_STATE="new" ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" ETCD_ADVERTISE_CLIENT_URLS="http://10.5.10.116:2379"
创建etcd的数据存储目录:
mkdir -p /data/etcd
修改etcd的启动文件/usr/lib/systemd/system/etcd.service,因为默认通过yum安装的etcd的启动项不适用于etcd集群,修改部分内容如下:
ExecStart=/bin/bash -c "GOMAXPROCS=$(nproc) /usr/bin/etcd --name=\"${ETCD_NAME}\" --data-dir=\"${ETCD_DATA_DIR}\" --listen-client-urls=\"${ETCD_LISTEN_CLIENT_URLS}\" --initial-advertise-peer-urls=\"${ETCD_INITIAL_ADVERTISE_PEER_URLS}\" --listen-peer-urls=\"${ETCD_LISTEN_PEER_URLS}\" --initial-cluster=\"${ETCD_INITIAL_CLUSTER}\" --advertise-client-urls=\"${ETCD_ADVERTISE_CLIENT_URLS}\" --initial-cluster-token=\"${ETCD_INITIAL_CLUSTER_TOKEN}\" --initial-cluster-state=\"${ETCD_INITIAL_CLUSTER_STATE}\""
启动etcd:
systemctl start etcd
systemct enable etcd
查看etcd集群状态:
48a6ea53479805ea: name=etcd1 peerURLs=http://10.5.10.116:2380 clientURLs=http://10.5.10.116:2379 isLeader=true 7760fc31c2c1eeb1: name=etcd2 peerURLs=http://10.5.10.117:2380 clientURLs=http://10.5.10.117:2379 isLeader=false f12c14665e56ea5e: name=etcd3 peerURLs=http://10.5.10.131:2380 clientURLs=http://10.5.10.131:2379 isLeader=false
3、配置flannel
先在etcd中注册flannel子网:
etcdctl set /coreos.com/network/config '{"network": "172.16.0.0/16"}'
在所有节点安装flannel:
yum install -y flannel
修改flannel配置文件/etc/sysconfig/flanneld如下:
FLANNEL_ETCD="http://10.5.10.116:2379,http://10.5.117:2379,http://10.5.131:2379" FLANNEL_ETCD_KEY="/coreos.com/network"
启动flannel:
systemctl start flanneld
systemctl enable flanneld
需要说明的是,如果要让docker使用flannel的网络,docker必须要后于flannel启动,所以需要重新启动docker:
systemctl restart docker
4、安装kubernetes服务端
我这里使用的是网上别人提供的私有的kubernetes的yum源,如下:
vim /etc/yum.repos.d/kube.repo [kube] name=Mritd Repository baseurl=https://yum.mritd.me/centos/7/x86_64 enabled=1 gpgcheck=1 gpgkey=https://mritd.b0.upaiyun.com/keys/rpm.public.key
先通过yumdownloader将所有kubernetes相关的包下载下来,然后再通过本地yum实现安装:
yumdownloader kubernetes-master kubernetes-client kubernetes-node yum localinstall -y kubernetes-master kubernetes-client
修改kubernetes master上的配置文件如下:
vim /etc/kubernetes/config KUBE_LOGTOSTDERR="--logtostderr=true" KUBE_LOG_LEVEL="--v=0" KUBE_ALLOW_PRIV="--allow-privileged=false" KUBE_MASTER="--master=http://10.5.10.116:8080" vim /etc/kubernetes/apiserver KUBE_API_ADDRESS="--address=0.0.0.0" KUBE_API_PORT="--port=8080 --secure-port=443" KUBE_MASTER="--master=http://10.5.10.116:8080" KUBELET_PORT="--kubelet-port=10250" KUBE_ETCD_SERVERS="--etcd-servers=http://10.5.10.116:2379,http://10.5.10.117:2379,http://10.5.10.131:2379" KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
启动kubernetes master:
systemctl start kube-apiserver kube-controller-manager kube-scheduler
systemctl enable kube-apiserver kube-controller-manager kube-scheduler
5、安装kubernetes node端
yum install -y kubernetes-node
修改node的配置文件:
vim /etc/kubernetes/config KUBE_LOGTOSTDERR="--logtostderr=true" KUBE_LOG_LEVEL="--v=0" KUBE_ALLOW_PRIV="--allow-privileged=false" KUBE_MASTER="--master=http://10.5.10.116:8080" vim /etc/kubernetes/kubelet KUBELET_ADDRESS="--address=0.0.0.0" KUBELET_HOSTNAME="--hostname-override=server-116" KUBELET_API_SERVER="--api-servers=http://10.5.10.116:8080" KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=myhub.fdccloud.com/library/pod-infrastructure:latest"
启动node端:
systemctl start kubelet kube-proxy
systemctl enable kubelet kube-proxy
最后通过在kubernetes master上通过kubectl查看各节点是否正常:
[root@server-116 ~]# kubectl get nodes NAME STATUS AGE server-116 Ready 1d server-117 Ready 1d server-131 Ready 1d
至此,完成kubernetes 1.5的基本安装
http://www.cnblogs.com/breezey/p/6545307.html
相关推荐
### 解决Kubernetes使用Helm安装Ingress的问题 #### Ingress Controller的重要性 Ingress是Kubernetes中的一个重要组件,主要用于管理外部访问集群内服务的规则,它充当了一个路由的角色,能够根据用户定义的规则将...
**1.5 Kubernetes201** 深入讲解Kubernetes的核心组件及其工作原理,包括如何使用更高级的功能如Ingress、Persistent Volume等。 **1.6 Kubernetes集群** - **集群架构**: 描述Kubernetes集群的整体架构,包括...
Kubernetes 1.5以上版本。 Helm Tiller服务器。 请选择与您的Tiller服务器匹配的Swift版本。 迅捷版 文件 头盔/耕种机版本 2.14.0 2.13.0 用户指南 2.12.0 0.9.0 用户指南 2.11.0 0.8.1 用户指南 2.9.0 0.7.3...
目录包含的内容版本控制兼容性你的代码<->client-go兼容性client-go <-> Kubernetes 集群兼容性矩阵为什么 1.4 和 1.5 分支包含以版本命名的顶级文件夹?Kubernetes 标签如何获取如何使用依赖管理贡献代码包含的内容...
Kubernetes从1.5版本开始,默认部署为高可用系统,包括Etcd集群、kube-apiserver的负载均衡、多组件的自动选主等。Etcd集群的高可用性至关重要,因为它存储了集群的状态信息。安装Etcd时,需要配置CA证书,并生成...
Kubernetes 自1.5版本起,通过kops或kube-up.sh部署的集群默认实现高可用性。这包括Etcd集群(多副本模式)、kube-apiserver的负载均衡、kube-controller-manager和kube-scheduler的单一活实例策略,以及cluster-...
它安装于 Kubernetes 环境之上,提供关键功能,例如服务发现、负载均衡、故障恢复、度量和监控、服务到服务认证等。Istio 1.5版本作为文档中提到的版本,具有许多新特性和改进。 Istio 架构主要包括 Envoy Proxy、...
使用Kubeadm安装基本集群 1.3。 管理高可用性的Kubernetes集群 1.4。 调配基础架构以部署Kubernetes集群 1.5。 使用Kubeadm在Kubernetes集群上执行版本升级 1.6。 实施etcd备份和还原 15% 2.1。 了解部署以及如何...
研讨会-vscode 带有来自的VSCode的浏览器内部版本的OpenFaaS 所有工具都已在Kubernetes上随OpenFaaS预先安装,并且在浏览器终端中提供了k3。这个怎么运作将使用cloudinit向虚拟机提供云托管提供商与将在VM安装将安装...
Kubeadm 是用于简化 Kubernetes 集群安装过程的工具,可以使用以下步骤进行安装: 1. **添加 Kubernetes 存储库**: ```bash cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes ...
在本文档中,我们将深入探讨如何构建并安装Kubernetes 1.8.13版本的集群,以及所需的辅助组件和服务。该文档不仅记录了安装过程中的关键步骤,还介绍了各组件的作用和配置要点。 ##### 1.1 Kubernetes 1.8.13 ...
请选择与您的Kubernetes安装匹配的Searchlight版本。 探照灯版本 文件 Kubernetes版本 (使用CRD) 1.9.x +(测试/质量检查群集) (使用CRD) 1.8.x (使用CRD) 1.7.x + (使用TPR) 1.5.x-1.7.x
因此,“web_imagery-1.5.tar.gz”是一个经过gzip压缩的tar归档文件,它包含了“web_imagery”项目的所有源代码、文档和其他相关资源,便于用户下载、解压和安装。 “web_imagery”这个包可能是一个专门用于处理...
这可能意味着它支持容器化部署,与Kubernetes或Docker等云平台兼容。 4. **Python库**:这告诉我们"anti"是一个Python开发的软件包,可以被其他Python项目导入和使用,提供特定的功能或者工具。 根据压缩包子文件...
在云原生环境中,Products.MailArchive可能被设计为易于部署、扩展和管理,兼容容器技术如Docker,并且能与Kubernetes等容器编排系统协同工作。 至于Python库,Products.MailArchive可能是基于Python的邮件处理框架...
1.5 初始化 DataIQ 运行 DataIQ 安装程序,接收初始密码,并可选地设置安全远程服务。初始化 DataIQ 在 root 模式下输入命令:dataiq init。 1.6 许可说明 DataIQ 许可证可以选择试用功能 1 年,包括连接到第三方...
解压“istio-1.5.0”文件后,你可以找到安装指南和示例配置,了解如何在Kubernetes集群中部署Istio。 9. **版本升级**:Istio的版本升级过程需要谨慎操作,确保不中断服务。从1.5.0到更高版本,可能涉及到配置变更...
这个文件名暗示它可能是一个针对AMD64(也称为x86_64)架构的软件包,版本号为1.5。"tar"后缀表明这是一个归档文件,通常用于将多个文件或目录打包到一起。".zip"则表示这个归档文件进一步被ZIP压缩格式进行了压缩,...
- **容器化支持**:通过Kubernetes和Docker容器化应用服务器实例,以便于部署和扩展。 - **增强的安全性**:引入了新的安全机制和策略,提高了应用的安全性。 - **简化管理和监控**:改进了管理控制台的用户体验,...