正常情况下,k8s的clusterip在部署集群的linux 中可以访问吗
时间: 2024-09-20 19:10:27 浏览: 53
ClusterIP默认是只对内部Kubernetes网络可达的,它不是一个可以直接从宿主机或其他外部网络访问的IP地址[^1]。要使ClusterIP可以从宿主机或外部网络访问,通常需要配置NodePort或LoadBalancer服务类型。
1. NodePort服务:
创建一个NodePort服务,会暴露应用的一个端口映射到节点的某个端口上,这样可以通过宿主机的特定端口来访问服务:
```yaml
apiVersion: v1
kind: Service
metadata:
name: my-etcd-service
labels:
app: etcd
spec:
type: NodePort
ports:
- port: 2379
targetPort: 2379
nodePort: 30001
selector:
app: etcd
```
2. LoadBalancer服务(如果在支持的环境):
对于AWS、GCP等支持外网负载均衡的平台,可以选择LoadBalancer类型的服务,创建后会分配一个公网IP,可以直接通过这个IP访问服务。
因此,正常情况下,仅凭ClusterIP无法从宿主机访问,需要额外配置才能实现外部访问。
相关问题
二进制安装部署k8s集群
### 使用二进制文件安装和部署 Kubernetes 集群
#### 准备工作
为了确保顺利部署,需提前准备好所有节点的操作系统环境配置一致,并关闭防火墙和服务隔离策略。此外,还需准备必要的软件包管理工具以及依赖库。
#### 下载 Kubernetes 组件
获取官方发布的最新稳定版本的 Kubernetes 二进制文件集合。通常可以从 GitHub 发布页面下载 tarball 文件并解压至指定路径 `/opt/kubernetes` 或其他合适位置[^3]。
```bash
tar -xzvf kubernetes-server-linux-amd64.tar.gz -C /opt/
```
#### 安装 Master 节点服务
对于 Master 节点来说,主要涉及以下几个核心组件的服务安装:
- **API Server**: 提供 RESTful API 接口用于管理和操作整个集群资源。
```bash
cp /opt/kubernetes/server/bin/kube-apiserver /usr/local/bin/
```
- **Controller Manager**: 实现集群级别的功能控制逻辑。
```bash
cp /opt/kubernetes/server/bin/kube-controller-manager /usr/local/bin/
```
- **Scheduler**: 负责调度 Pod 到合适的 Node 上运行。
```bash
cp /opt/kubernetes/server/bin/kube-scheduler /usr/local/bin/
```
完成上述命令后,创建相应的 systemd service 单元文件来定义这些守护进程的行为模式,以便于后续统一管理它们的状态变化过程。例如 `kube-apiserver.service` 的内容如下所示:
```ini
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/kubernetes/kubernetes
[Service]
ExecStart=/usr/local/bin/kube-apiserver \
--advertise-address=$(hostname -i) \
--allow-privileged=true \
--authorization-mode=Node,RBAC \
--bind-address=0.0.0.0 \
--enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,ResourceQuota \
--service-cluster-ip-range=10.96.0.0/12 \
--client-ca-file=/etc/kubernetes/pki/ca.crt \
--tls-cert-file=/etc/kubernetes/pki/apiserver.crt \
--tls-private-key-file=/etc/kubernetes/pki/apiserver.key \
--secure-port=6443 \
--etcd-servers=http://127.0.0.1:2379 \
--feature-gates=AllAlpha=false
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
```
保存该文件到 `/etc/systemd/system/kube-apiserver.service` 后执行以下指令加载新添加的服务单元并开启自动启动支持:
```bash
systemctl daemon-reload
systemctl start kube-apiserver
systemctl enable kube-apiserver
```
同样的方法可以应用于 Controller Manager 和 Scheduler 这两个组件上。
#### 设置 Worker (Node) 节点
Worker 节点则专注于提供计算能力给应用程序容器实例化使用。这里主要包括 Kubelet 及其辅助程序 Kube-proxy 的安置工作。
将之前已经获得的可执行文件复制到目标机器上的适当目录内,比如 `/opt/kubernetes/bin` 中去[^2]:
```bash
scp /opt/kubernetes/server/bin/{kubelet,kube-proxy} user@node:/opt/kubernetes/bin/
```
接着同样按照前述的方式编写对应的 Systemd Service Unit File 来描述这两个应用的工作参数设定情况;最后记得要重启计算机使更改生效。
#### 测试集群状态
当所有的准备工作都完成后就可以尝试验证当前构建出来的分布式系统的健康状况了。可以通过访问任意一台主机上的 Kubectl 工具来进行简单的查询测试活动。
```bash
kubectl get componentstatuses
kubectl cluster-info
```
如果一切正常的话应该能够看到有关各个组成部分的具体信息反馈回来。
k8s集群中搭建etcd
在 Kubernetes (k8s) 集群中,Etcd 是作为核心组件之一的分布式键值存储系统,用于存储和管理集群配置数据和服务发现信息。以下是搭建 Etcd 集群的基本步骤:
1. **下载安装**: 首先需要从 Etcd 的官方 GitHub 仓库下载最新版本的二进制文件。你可以选择适合你的操作系统(如 Linux 或 macOS)的版本。
2. **设置环境变量**: 创建一个 `.bashrc` 或者 `.zshrc` 文件,并添加 Etcd 的路径到 `PATH` 变量中,便于后续命令行操作。
3. **初始化集群**: 对每个节点运行 Etcd 后台服务,使用 `-name` 参数指定本节点名称,例如:
```
etcd -name node1 --initial-cluster="node1=http://localhost:2380,node2=http://localhost:2381,node3=http://localhost:2382"
```
这里创建了一个包含三个节点的集群,假设它们都在本地主机上运行。实际部署中,你需要使用对应的 IP 地址和端口。
4. **启动集群**: 分别在各个节点上执行上述命令,当所有节点都启动后,Etcd 集群会自动选举领导者并开始同步数据。
5. **验证集群状态**: 使用 `etcdctl` 工具连接到任意节点检查集群健康状况和数据一致性。
6. **配置 Kubernetes**: 在 k8s 中,你需要将 Etcd 集群的地址添加到 `kubelet` 和 `kubectl` 的配置中,通过修改 `/etc/kubernetes/manifests/kube-apiserver.yaml` 和 `/etc/kubernetes/manifests/kube-controller-manager.yaml` 等配置文件。
7. **重启服务**: 重启 k8s 控制平面(如 kube-apiserver、kube-controller-manager 等),让它们能够连接到新配置的 Etcd 集群。
阅读全文
相关推荐

















