js网站效果,wordpress 显示当前时间,网站建设的7种流程图,百度seo关键词优化公司Kubernetes 作为当今最流行的容器编排平台#xff0c;提供了强大的功能来管理和扩展容器化应用。除了使用 kubeadm 等工具简化集群的创建过程外#xff0c;直接通过二进制文件安装 Kubernetes 组件也是一种常见的方法。这种方式给予用户更多的控制权#xff0c;并且适用于那…Kubernetes 作为当今最流行的容器编排平台提供了强大的功能来管理和扩展容器化应用。除了使用 kubeadm 等工具简化集群的创建过程外直接通过二进制文件安装 Kubernetes 组件也是一种常见的方法。这种方式给予用户更多的控制权并且适用于那些希望深入理解 Kubernetes 内部工作原理的人。本文将详细介绍如何通过二进制方式搭建一个功能齐全的 Kubernetes 集群并分享一些实用技巧和注意事项。
准备工作
在开始之前请确保您的环境满足以下条件
操作系统支持的操作系统包括 Ubuntu、CentOS 等主流 Linux 发行版。硬件要求至少两台机器一台作为 Master 节点另一台或更多作为 Worker 节点每台机器建议配置至少 2GB RAM 和 2 CPU 核心。网络连接所有节点之间需要能够互相通信最好是在同一个局域网内。时间同步确保所有节点的时间一致可以安装 NTP 服务来自动同步时间。防火墙设置根据实际情况调整防火墙规则允许必要的端口访问如 6443, 2379-2380, 10250, 10251, 10252 等。
安装依赖项
在所有节点上执行如下命令以更新软件包列表并安装必要的依赖项
Ubuntu/Debian
sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
CentOS
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 安装 Docker使用国内镜像源
为了加快 Docker 的安装速度我们将使用阿里云提供的 Docker 源。
Ubuntu/Debian
# 添加阿里云 Docker 源
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository deb [archamd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable
sudo apt-get update
sudo apt-get install -y docker-ce
CentOS
# 创建或编辑 /etc/yum.repos.d/docker-ce.repo 文件
cat EOF | sudo tee /etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
nameDocker CE Stable - \$basearch
baseurlhttps://mirrors.aliyun.com/docker-ce/linux/centos/\$releasever/\$basearch/stable
enabled1
gpgcheck1
repo_gpgcheck1
gpgkeyhttps://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF
sudo yum makecache fast
sudo yum install -y docker-ce
启动并启用 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker 下载 Kubernetes 组件
接下来在所有节点上下载所需的 Kubernetes 组件kubelet、kubectl、kubeadm。虽然我们这里不使用 kubeadm 来初始化集群但是它仍然可以用于某些辅助操作。我们将从官方 GitHub 发布页面获取这些组件的二进制文件。
下载二进制文件
假设我们要部署 Kubernetes v1.26.0 版本可以根据官方文档找到对应的发布地址并下载相应的 tarball 文件。然后解压并将可执行文件放置到 /usr/local/bin 目录下
# 下载并解压 Kubernetes 二进制文件
wget https://dl.k8s.io/v1.26.0/kubernetes-server-linux-amd64.tar.gz
tar -xvf kubernetes-server-linux-amd64.tar.gz
cd kubernetes/server/bin/
sudo cp kubelet kubectl /usr/local/bin/# 设置正确的权限
sudo chmod x /usr/local/bin/kubelet
sudo chmod x /usr/local/bin/kubectl
对于 kubectl还可以选择将其配置为特定版本以便与集群保持一致
sudo mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config 配置 Master 节点
现在我们已经准备好配置 Master 节点了。请登录到您计划用作 Master 的服务器并执行以下步骤
初始化 etcd
etcd 是 Kubernetes 的键值存储数据库用于保存集群状态信息。您可以选择安装独立的 etcd 实例或者使用静态 Pod 来运行 etcd。在这里我们将介绍如何使用静态 Pod 启动 etcd。
首先创建一个名为 etcd.yaml 的文件来定义 etcd Pod 的配置
apiVersion: v1
kind: Pod
metadata:name: etcdnamespace: kube-system
spec:hostNetwork: truecontainers:- name: etcdimage: quay.io/coreos/etcd:v3.5.0command:- /usr/local/bin/etcd- --data-dir- /var/lib/etcd- --advertise-client-urls- http://127.0.0.1:2379- --listen-client-urls- http://0.0.0.0:2379- --initial-advertise-peer-urls- http://127.0.0.1:2380- --listen-peer-urls- http://0.0.0.0:2380- --initial-cluster- defaulthttp://127.0.0.1:2380- --initial-cluster-token- etcd-cluster-0- --initial-cluster-state- newvolumeMounts:- mountPath: /var/lib/etcdname: etcd-storagevolumes:- hostPath:path: /var/lib/etcdname: etcd-storage
保存后使用 kubectl 应用此配置
kubectl apply -f etcd.yaml --kubeconfig/etc/kubernetes/admin.conf
配置 API Server
接下来是配置 API Server。同样地我们需要编写一个 YAML 文件来描述 API Server 的配置。以下是 apiserver.yaml 的示例内容
apiVersion: v1
kind: Pod
metadata:name: kube-apiservernamespace: kube-system
spec:hostNetwork: truecontainers:- name: kube-apiserverimage: registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.26.0command:- /usr/local/bin/kube-apiserver- --etcd-servershttp://127.0.0.1:2379- --service-cluster-ip-range10.96.0.0/12- --insecure-bind-address0.0.0.0- --secure-port6443- --allow-privilegedtrue- --advertise-addressMASTER_IP- --authorization-modeNode,RBAC- --enable-admission-pluginsNodeRestriction- --tls-cert-file/etc/kubernetes/pki/apiserver.crt- --tls-private-key-file/etc/kubernetes/pki/apiserver.key- --client-ca-file/etc/kubernetes/pki/ca.crt- --service-account-key-file/etc/kubernetes/pki/sa.pub- --service-account-signing-key-file/etc/kubernetes/pki/sa.key- --service-account-issuerhttps://kubernetes.default.svc.cluster.local- --service-account-api-audiencesapi- --proxy-client-cert-file/etc/kubernetes/pki/front-proxy-client.crt- --proxy-client-key-file/etc/kubernetes/pki/front-proxy-client.key- --requestheader-client-ca-file/etc/kubernetes/pki/front-proxy-ca.crt- --requestheader-allowed-namesfront-proxy-client- --requestheader-extra-headers-prefixX-Remote-Extra-- --requestheader-group-headersX-Remote-Group- --requestheader-username-headersX-Remote-User- --kubelet-client-certificate/etc/kubernetes/pki/apiserver-kubelet-client.crt- --kubelet-client-key/etc/kubernetes/pki/apiserver-kubelet-client.key- --enable-bootstrap-token-authtrue- --token-auth-file/etc/kubernetes/pki/tokens.csv- --audit-log-maxage30- --audit-log-maxbackup3- --audit-log-maxsize100- --audit-log-path/var/log/kube-apiserver/audit.logvolumeMounts:- mountPath: /etc/kubernetes/pkiname: pki- mountPath: /var/log/kube-apiservername: audit-logvolumes:- hostPath:path: /etc/kubernetes/pkiname: pki- hostPath:path: /var/log/kube-apiservername: audit-log
请注意替换 MASTER_IP 为实际 Master 节点的 IP 地址。此外还需要提前生成所需的证书和密钥文件这可以通过 cfssl 工具来完成。具体步骤可以参考官方文档。
配置其他控制平面组件
除了 API Server 和 etcd 外Kubernetes 控制平面还包括 Scheduler 和 Controller Manager。它们也可以通过静态 Pod 的方式来配置。这里不再赘述详细的配置文件因为其结构与上述类似只是命令参数有所不同。
启动控制平面组件
当所有的控制平面组件配置完毕后可以使用 kubectl 来启动它们
kubectl apply -f component.yaml --kubeconfig/etc/kubernetes/admin.conf
等待几分钟直到所有组件都成功启动。 安装 Pod 网络插件
Kubernetes 需要一个 CNI (Container Network Interface) 插件来为 Pods 提供网络连接。有许多不同的 CNI 实现可供选择例如 Flannel、Calico 等。在这里我们将使用 Flannel 作为示例
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
等待几分钟直到所有的 Pod 都变为 Running 状态。 加入 Worker 节点
当 Master 节点成功配置并且 Pod 网络插件已安装后就可以让其他节点加入集群了。回到 Master 节点上使用 kubeadm token create 命令生成一个新的加入令牌然后在每个 Worker 节点上运行如下命令来加入集群
kubeadm join master-ip:master-port --token token --discovery-token-ca-cert-hash sha256:hash
注意这个 token 是有时效性的默认有效期为24小时如果过期可以重新生成新的 token。 验证集群状态
最后我们可以使用 kubectl get nodes 来查看当前集群中的所有节点及其状态。理想情况下你应该看到 Master 和所有 Worker 节点都处于 Ready 状态。
kubectl get nodes
此外还可以检查 Pod 和 Service 是否正常工作
kubectl get pods --all-namespaces
kubectl get services --all-namespaces 注意事项
尽管通过二进制方式安装 Kubernetes 提供了更大的灵活性但在实际应用中也要注意以下几点
安全性确保正确设置了 RBAC 规则、网络策略等安全措施防止潜在的安全漏洞。性能优化合理配置资源限制和请求避免不必要的浪费或争用。备份恢复定期备份 etcd 数据库和其他重要配置文件以便于灾难恢复。监控告警集成 Prometheus、Grafana 等监控工具实时掌握集群健康状况。日志管理采用 ELK Stack 或其他日志聚合方案来集中收集和分析日志信息。 结语
感谢您的阅读如果您对 Kubernetes 或者二进制方式搭建集群有任何疑问或见解欢迎继续探讨。