k8s 容器内部 通过cluster-ip 加 端口号 不能访问

1:可能是因为网络不稳定的问题

解决:重启docker,重启k8s,将docker 和 k8s 都设置为开机启动 

1: systemctl enable docker

2:docker info 

3:  systemctl enable kubelet

4:将服务器 重启 :reboot

### 实现服务的容器化部署 #### 定义 Pod 在 Kubernetes 中,Pod 是最小的可部署单元[^2]。每一个 Pod 可以包含一个或多个紧密关联的容器。这些容器共享相同的网络命名空间、IP 地址以及存储卷。 对于简单的应用来说,通常只需要在一个 Pod 中运行单个容器;而对于更复杂的应用,则可能需要在同一 Pod 内启动多个辅助进程来支持主要业务逻辑。例如: ```yaml apiVersion: v1 kind: Pod metadata: name: myapp-pod spec: containers: - name: nginx-container image: nginx:latest ``` 这段 YAML 文件描述了一个名为 `myapp-pod` 的 Pod,并指定了其中要运行的 Nginx 容器镜像版本为最新版。 #### 使用 Deployment 管理 Pod 生命周期 为了简化对 Pod 的管理并提供自我修复能力(如自动重启失败的 Pod),推荐使用 **Deployment** 控制器来声明期望的状态。这允许用户轻松地更新应用程序副本数量、回滚变更等操作而不必手动干预每个单独的 Pod 对象。 下面是一个典型的 Deployment 配置例子: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: web-deployment spec: replicas: 3 selector: matchLabels: app: web template: metadata: labels: app: web spec: containers: - name: web-app image: my-web-app:v1 ports: - containerPort: 8080 ``` 此配置文件指示 Kubernetes 维持三个相同 Web 应用程序实例组成的集群,监听端口 8080 提供 HTTP 请求处理功能。 #### 创建 Service 进行内部通信和服务发现 为了让其他组件能够找到新创建的服务实例,还需要定义相应的 **Service** 资源对象[^1]。Kubernetes 支持多种类型的 Services,最常用的是 ClusterIP 类型,默认情况下仅限于集群内访问。当客户端向该 IP 发送请求时,Kubernetes 将根据负载均衡策略把流量转发给后端实际工作的 Pods。 这里展示如何设置一个基本的 Service 来暴露前面提到的 Web 应用: ```yaml apiVersion: v1 kind: Service metadata: name: web-service spec: selector: app: web ports: - protocol: TCP port: 80 targetPort: 8080 ``` 上述配置意味着任何发送至 `web-service` 的第 80 号端口上的数据包都会被重定向到目标 Pod 的本地 8080 端口。 #### 自动化与持续集成/交付 (CI/CD) 除了以上基础构建模块外,在生产环境中还应考虑引入 CI/CD 流程以便更好地维护和迭代项目代码库。借助 Jenkins 或 GitLab CI 等工具链的支持,开发团队可以在每次提交更改之后触发一系列自动化测试任务,并最终推送经过验证的新版本映像进入 K8s 生产环境之中。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值