Kubernetes v1.10 + Docker v17.09 二进制部署:3节点集群搭建与5大组件配置详解
Kubernetes v1.10 + Docker v17.09 二进制部署:3节点集群搭建与核心组件配置实战
1. 环境规划与系统准备
在开始部署之前,我们需要明确集群架构和节点角色分配。典型的3节点集群包含1个Master节点和2个Worker节点:
| 节点角色 | IP地址示例 | 运行的核心组件 |
|---|---|---|
| Master节点 | 192.168.1.10 | etcd、kube-apiserver、kube-controller-manager、kube-scheduler |
| Worker节点 | 192.168.1.11 | kubelet、kube-proxy、Docker |
| Worker节点 | 192.168.1.12 | kubelet、kube-proxy、Docker |
系统要求与基础配置:
- 操作系统:CentOS 7.x 或 Ubuntu 16.04+,64位系统
- 硬件配置:
- Master节点:2核CPU、4GB内存、50GB磁盘
- Worker节点:4核CPU、8GB内存、100GB磁盘
- 网络要求:
- 所有节点间网络互通
- 关闭防火墙或开放必要端口(6443、2379-2380、10250等)
- 禁用SELinux(生产环境需按需配置)
BASH
# 关闭防火墙(所有节点)
systemctl stop firewalld
systemctl disable firewalld
# 禁用SELinux(临时生效)
setenforce 0
# 永久禁用SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 关闭Swap(Kubernetes 1.8+要求)
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
2. 组件安装与Master节点配置
2.1 安装Docker 17.09
在所有节点上安装指定版本的Docker:
BASH
# 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加Docker仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装指定版本
yum install -y docker-ce-17.09.1.ce-1.el7.centos
# 启动并设置开机自启
systemctl start docker
systemctl enable docker
2.2 部署etcd集群
etcd作为Kubernetes的分布式键值存储,需要首先部署:
BASH
# 下载etcd二进制包
wget https://github.com/coreos/etcd/releases/download/v3.3.4/etcd-v3.3.4-linux-amd64.tar.gz
tar -zxvf etcd-v3.3.4-linux-amd64.tar.gz
mv etcd-v3.3.4-linux-amd64/etcd* /usr/local/bin/
# 创建systemd服务文件
cat > /etc/systemd/system/etcd.service <<EOF
[Unit]
Description=etcd server
After=network.target
[Service]
Type=notify
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/usr/local/bin/etcd
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
# 创建配置文件
mkdir -p /etc/etcd
cat > /etc/etcd/etcd.conf <<EOF
ETCD_NAME=default
ETCD_DATA_DIR=/var/lib/etcd
ETCD_LISTEN_PEER_URLS=http://192.168.1.10:2380
ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
ETCD_INITIAL_ADVERTISE_PEER_URLS=http://192.168.1.10:2380
ETCD_ADVERTISE_CLIENT_URLS=http://192.168.1.10:2379
ETCD_INITIAL_CLUSTER="default=http://192.168.1.10:2380"
EOF
# 启动etcd
systemctl daemon-reload
systemctl enable etcd
systemctl start etcd
2.3 部署Kubernetes Master组件
下载Kubernetes二进制文件并配置核心组件:
BASH
# 下载Kubernetes v1.10
wget https://dl.k8s.io/v1.10.0/kubernetes-server-linux-amd64.tar.gz
tar -zxvf kubernetes-server-linux-amd64.tar.gz
cd kubernetes/server/bin
cp kube-apiserver kube-controller-manager kube-scheduler kubectl /usr/local/bin/
# 创建API Server服务
cat > /etc/systemd/system/kube-apiserver.service <<EOF
[Unit]
Description=Kubernetes API Server
After=etcd.service
[Service]
ExecStart=/usr/local/bin/kube-apiserver \\
--advertise-address=192.168.1.10 \\
--allow-privileged=true \\
--apiserver-count=1 \\
--audit-log-maxage=30 \\
--audit-log-maxbackup=3 \\
--audit-log-maxsize=100 \\
--audit-log-path=/var/log/audit.log \\
--authorization-mode=Node,RBAC \\
--bind-address=0.0.0.0 \\
--client-ca-file=/etc/kubernetes/pki/ca.crt \\
--enable-admission-plugins=NodeRestriction \\
--enable-bootstrap-token-auth=true \\
--etcd-servers=http://127.0.0.1:2379 \\
--kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt \\
--kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key \\
--service-cluster-ip-range=10.96.0.0/12 \\
--service-node-port-range=30000-32767 \\
--tls-cert-file=/etc/kubernetes/pki/apiserver.crt \\
--tls-private-key-file=/etc/kubernetes/pki/apiserver.key \\
--v=2
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
注意:实际部署时需要生成相应的TLS证书文件并放置到指定路径
3. Worker节点部署
3.1 安装kubelet和kube-proxy
BASH
# 下载node组件
wget https://dl.k8s.io/v1.10.0/kubernetes-node-linux-amd64.tar.gz
tar -zxvf kubernetes-node-linux-amd64.tar.gz
cd kubernetes/node/bin
cp kubelet kube-proxy /usr/local/bin/
# 配置kubelet
cat > /etc/systemd/system/kubelet.service <<EOF
[Unit]
Description=Kubernetes Kubelet
After=docker.service
[Service]
ExecStart=/usr/local/bin/kubelet \\
--address=0.0.0.0 \\
--pod-manifest-path=/etc/kubernetes/manifests \\
--cluster-dns=10.96.0.10 \\
--cluster-domain=cluster.local \\
--kubeconfig=/etc/kubernetes/kubelet.conf \\
--network-plugin=cni \\
--register-node=true \\
--v=2
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
3.2 配置节点加入集群
在Master节点生成加入命令:
BASH
kubeadm token create --print-join-command
在Worker节点执行生成的join命令:
BASH
kubeadm join 192.168.1.10:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
4. 网络插件安装
选择Calico作为网络插件:
BASH
kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml
5. 集群验证与排错
5.1 基础状态检查
BASH
# 查看节点状态
kubectl get nodes -o wide
# 查看组件状态
kubectl get componentstatuses
# 查看Pod状态
kubectl get pods --all-namespaces
5.2 常见问题排查清单
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| kubelet无法启动 | 证书配置错误 | 检查/etc/kubernetes/kubelet.conf中的证书路径和权限 |
| Pod网络不通 | 网络插件未正确安装 | 重新安装Calico或Flannel网络插件 |
| API Server无法连接etcd | etcd服务未启动或配置错误 | 检查etcd日志:journalctl -u etcd -f |
| Node状态为NotReady | kubelet与API Server通信问题 | 检查kubelet日志:journalctl -u kubelet -f |
| 容器无法拉取镜像 | Docker配置或镜像仓库访问问题 | 检查Docker日志:journalctl -u docker -f |
6. 生产环境优化建议
-
高可用架构:
- 部署多Master节点实现控制平面高可用
- 使用外部etcd集群(至少3节点)
-
安全加固:
- 启用RBAC权限控制
- 定期轮换证书
- 配置网络策略限制Pod间通信
-
性能调优:
BASH# 调整kubelet资源预留--kube-reserved=cpu=500m,memory=1Gi--system-reserved=cpu=500m,memory=1Gi -
监控方案:
- 部署Prometheus + Grafana监控集群状态
- 配置告警规则监控关键指标
BASH
# 示例:部署Metrics Server监控资源使用
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
Kubernetes(K8S)集群管理Docker容器(部署篇)
"该资源是关于在Ubuntu 16.04或CentOS 7上部署Kubernetes(K8S)集群以管理Docker容器的教程。使用的Kubernetes版本为v1.8.3,Docker版本为v17
Docker+K8S 集群环境搭建及分布式应用部署
总之,Docker+K8S 的组合为开发者提供了一种强大且灵活的方式,可以在大规模集群中高效地部署和管理容器化应用程序。
二进制部署k8s高可用集群(二进制-V1.20).docx
二进制部署k8s高可用集群(二进制-V1.20)基于提供的文件信息,本文将对二进制部署k8s高可用集群进行详细的知识点总结。1.
离线部署k8s_1.18.3集群(二进制方式).zip
本文将详细介绍如何通过二进制方式在Linux环境下部署k8s v1.18.3集群,同时涵盖相关组件如Docker、etcd和CNI的安装与配置。
二进制高可用k8s集群一键部署脚本
通过在多个节点上部署这些组件并配置负载均衡,可以确保即使单个节点故障,集群也能正常运行。部署脚本的readme.txt文件应该包含了详细的步骤和注意事项,可能包括以下内容:1.
docker k8s集群搭建
在我们的例子中,我们需要将docker-master的IP地址(172.22.3.207)映射到主机名docker-master,并将docker-node1的IP地址(172.22.3.111)映射到主机名
k8s 安装教程 一键安装脚本
### K8s (Kubernetes) 安装教程与一键安装脚本详解#### 一、前言在本文中,我们将详细介绍如何通过一键脚本在常见的Linux发行版上(如Ubuntu 16.04 64位、CentOS
helm部署应用到k8s集群(helm+k8s)-详细文档
helm 部署应用到 k8s 集群详细文档本文档详细介绍了使用 Helm 部署应用到 Kubernetes 集群的过程。
sealos部署k8s-1.23.0集群
本文档详细介绍了从初始环境配置到部署集群的全过程,帮助用户快速搭建起稳定的Kubernetes v1.23.0集群环境。
基于kubeadm快速部署kubernetes K8S V1.17.4集群-无坑完整版
本教程详细介绍了如何使用kubeadm快速部署Kubernetes v1.17.4集群,包括主机配置规划、安装Docker和kubeadm、部署Master和Worker节点、安装Pod网络插件flannel,以及部署Dashboard实现集群资源的可视化管理。在过程中,还解决了kubelet服务启动失败的问题,并提供了节点的加入和移除方法。
Kylin V10部署k8s-单master
本文介绍在Kylin V10系统部署单master k8s的详细步骤。先进行系统环境准备,包括配置主机名、IP等;接着安装ipset、docker等依赖组件;再配置网络参数;然后安装Kubernetes核心组件并生成默认配置;最后初始化集群,添加工作节点并验证集群是否正常。
K8S二进制部署详解,一文教会你部署高可用K8S集群
本文详细介绍二进制搭建高可用K8S集群的流程。先分析kubeadm和二进制安装的适用场景,接着阐述环境规划、必备工具安装、初始化操作,然后依次搭建etcd集群、安装kubernetes组件,还介绍了实现k8s apiserver高可用的方法,最后将master节点打污点禁止调度。
K8S简介和安装部署详细教程
本文详细介绍了K8S集群的安装部署与测试过程。先阐述K8S简介、组件功能及部署方式,接着说明准备工作,包括软硬件要求、环境配置等。然后依次介绍Docker、K8S集群的安装,以及K8S集群的测试和Dashboard的安装,涵盖创建Pod、暴露访问、获取token登录等操作。
基于 Minikube 搭建第一个k8s集群
本文详细介绍了如何在CentOS 7.x环境下使用Minikube搭建单节点Kubernetes集群,包括Docker的安装配置,Minikube的安装与启动,以及在k8s集群中部署并公开访问Nginx应用的步骤。
K8s高可用集群二进制部署-V1.20
本文详细介绍如何使用Kubeadm及二进制包部署Kubernetes集群,涵盖单Master架构到多Master高可用架构的全过程,包括Etcd集群、Docker安装、Master和Worker节点配置等关键步骤。
【云原生Kubernetes系列第三篇】二进制部署单节点Kubernetes(k8s)v1.20(不要因为别人都在交卷,自己就乱写答案)
本文详述了在CentOS上搭建Kubernetes集群的过程,包括初始化环境、部署etcd集群、安装Docker、配置Master组件(apiserver、scheduler、controller-manager)以及WorkerNode组件,并部署了CoreDNS和Dashboard。文章还介绍了etcd的配置、证书生成、健康检查等关键步骤,是全面学习Kubernetes集群部署的实战教程。
银河麒麟v10-arm离线部署k8s集群(v1.23.4)
本文详细介绍了在麒麟系统环境下,如何进行Kubernetes(k8s)集群的离线部署,包括系统内核检查、环境初始化、Docker和k8s组件安装、网络插件Calico的安装,以及界面管理工具Kuboard的配置。文中还提到了部署过程中的关键步骤、可能遇到的问题和解决办法,如时间同步、网络配置、依赖项安装等。
Kubernetes高可用集群二进制离线部署(Runtime Docker)
本文详细介绍了一种基于Kubernetes v1.21.10版本的高可用集群部署方案,涉及二进制安装方式、Docker容器运行时、Calico网络插件以及CoreDNS服务发现组件等内容。
K8S 二进制集群搭建(一主两从)
本文详述基于Linux系统的Kubernetes v1.20.10二进制方式部署一主两从高可用集群全过程,涵盖etcd集群搭建(含CFSSL自签名证书)、Docker容器运行时配置、Master核心组件(kube-apiserver/controller-manager/scheduler)部署与systemd托管、Node节点kubelet/kube-proxy集成、Calico网络插件安装、Metrics-Server监控指标采集及TLS Bootstrapping安全接入机制。
K8s(Kubernetes)搭建从0到1
本文详细介绍了如何从头开始搭建Kubernetes(K8s)集群,包括主流容器集群管理、Kubernetes核心概念、硬件配置推荐、kubeadm部署、Containerd容器运行时设置、kubectl命令概要以及实际部署操作。通过本文,读者可以学习到完整的K8s集群搭建流程。
k8s二进制安装与部署
本文围绕二进制搭建Kubernetes v1.20展开,详细介绍实验步骤。包括操作系统初始化配置、部署docker引擎、etcd集群、Master和Worker Node组件、CNI网络组件、CoreDNS等,还涉及master02节点部署、负载均衡部署及Dashboard部署等内容。
Kubernetes - CentOS7搭建k8s_v1.18集群高可用(kubeadm/二进制包部署方式)实测配置验证手册
本文围绕Kubernetes展开,介绍了其概念、功能和架构,阐述了kubeadm和二进制包两种集群搭建方式。详细说明了在CentOS 7.9系统上搭建高可用K8s集群的步骤,包括系统初始化、安装相关组件、初始化Master节点、添加Node节点、部署网络插件等,还介绍了Dashboard的部署与使用。
【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.27.0版本
该文章详细介绍了如何在CentOS7.8环境下搭建Kubernetes集群,包括集群规划、系统初始化、cri-dockerd和kubeadm的安装配置、节点的添加以及Calico网络组件的安装和测试。整个过程涵盖了从关闭防火墙、配置域名解析到安装Docker和启用ipvs,最后通过kubectl命令验证CoreDNS解析的可用性。
二进制安装Kubernetes(K8s)集群---从零安装教程(无证书)
本文详细介绍如何使用二进制安装Kubernetes (K8s) 集群,并基于containerd进行部署。涵盖安装前的环境准备、Docker与etcd安装、Master与Node节点配置、Flannel网络设置、Harbor私有仓库搭建、kube-dns及dashboard安装等关键步骤。
k8s v1.20二进制部署
本文详细介绍k8s v1.20二进制部署过程。先进行环境准备和操作系统初始化配置,接着部署docker引擎、etcd集群,阐述etcd特点与默认端口,介绍证书生成。然后部署Master组件,开启apiserver和scheduler服务等,最后部署Worker Node组件,包括拷贝文件、启动服务等操作。
【kubernetes】从零开始搭建K8S集群
本文档详细介绍了如何使用kubeadm工具在CentOS 7.9环境下搭建Kubernetes(K8S)集群。包括硬件配置要求、系统初始化、安装Docker、配置阿里云镜像加速、部署Master和Node节点、安装CNI网络插件,并通过创建Pod进行集群测试。
CentOS7.9+Kubernetes1.29.2+Docker25.0.3高可用集群二进制部署
本文详细介绍了CentOS7.9+Kubernetes1.29.2+Docker25.0.3高可用集群的二进制部署过程,包括总体规划、软件获取、集群主机和网络规划等,还涉及docker、cri - dockerd安装,证书创建,etcd、flannel部署,k8s核心组件和插件部署,最后进行集群验证。
基于 sealos 部署 k8s 1.30 集群
本文介绍基于sealos部署k8s 1.30集群。sealos是基于Kubeadm的K8s一键安装工具,支持Containerd和Docker作为容器运行时。详细说明了sealos cli部署K8S集群的先决条件、查看镜像等步骤,还提及集群维护、命令补全配置及测试等内容。
k8s 集群部署(二进制方式)
本文详细介绍了K8s集群二进制方式部署流程,包括前置知识、Etcd集群部署、Docker安装、Master和Worker节点部署、Dashboard和CoreDNS部署等。还阐述了单Master架构扩容为多Master高可用架构的方法,如部署新Master节点、Nginx+Keepalived负载均衡器及修改Worker节点配置。