k8s pod间网络连接

k8s集群:linode k8s集群,一主两从。

测试以busybox 使用wget 访问nginxindex为例。

Kubectl 连接k8s集群

将配置文件信息导入到本地kubectl

export KUBECONFIG=/path/to/your/kubeconfig.yaml

测试1 . 相同命名空间中pod间的访问

默认命名空间中创建busybox

kubectl run -it --image busybox:1.28.4 dns-test /bin/sh

# 下次进入

kubectl exec -it dns-test /bin/sh

# 查看pod

Kubectl get pod

创建 nginx-deploy,编辑nginx-deploy.yaml 

apiVersion: apps/v1 # deployment api 版本

kind: Deployment # 资源类型为 deployment

metadata: # 元信息

  labels: # 标签

    app: nginx-deploy # 具体的 key: value 配置形式

  name: nginx-deploy # deployment 的名字

  namespace: default # 所在的命名空间

spec:

  replicas: 1 # 期望副本数

  revisionHistoryLimit: 10 # 进行滚动更新后,保留的历史版本数

  selector: # 选择器,用于找到匹配的 RS

    matchLabels: # 按照标签匹配

      app: nginx-deploy # 匹配的标签key/value

  strategy: # 更新策略

    rollingUpdate: # 滚动更新配置

      maxSurge: 25% # 进行滚动更新时,更新的个数最多可以超过期望副本数的个数/比例

      maxUnavailable: 25% # 进行滚动更新时,最大不可用比例更新比例,表示在所有副本数中,最多可以有多少个不更新成功

    type: RollingUpdate # 更新类型,采用滚动更新

  template: # pod 模板

    metadata: # pod 的元信息

      labels: # pod 的标签

        app: nginx-deploy

    spec: # pod 期望信息

      containers: # pod 的容器

      - image: nginx:1.9.1 # 镜像

        imagePullPolicy: IfNotPresent # 拉取策略

        name: nginx # 容器名称

      restartPolicy: Always # 重启策略

      terminationGracePeriodSeconds: 30 # 删除操作最多宽限多长时间

# 创建deploy

kubectl  create -f nginx-deploy.yaml

# 查看pod 详情

Kubectl  get pod -o wide

# 进入 busybox

kubectl exec -it dns-test /bin/sh

由于没有curl命令,为方便使用 wget 直接访问nginx

此时通过pod ip 可以直接下载到index.Html文件,但pod 生命周期很短pod,写死ip之后更改会很麻烦。

创建service

apiVersion: v1

kind: Service

metadata:

  name: nginx-svc

  labels:

    app: nginx-svc

spec:

  ports:

  - name: http # service 端口配置的名称

    protocol: TCP # 端口绑定的协议,支持 TCP、UDP、SCTP,默认为 TCP

    port: 80 # service 自己的端口

    targetPort: 80 # 目标 pod 的端口

  - name: https

    port: 443

    protocol: TCP

    targetPort: 443

  selector: # 选中当前 service 匹配哪些 pod,对哪些 pod 的东西流量进行代理

    app: nginx-deploy

上面deploy配置文件中可以看到deploy 里pod 模板的label 为app=nginx-deploy,此时service配置文件中配置selector app=nginx-deploy可匹配到此deploy下的pod。

创建service,查看svc(service 缩写),查看ep (endpoint缩写)。

此时在busybox 中直接使用svc 名称即可访问pod服务。

测试2 . 不相同命名空间中pod间的访问

以上是相同NS中pod间的访问,不同NS间的pod访问在其服务名后加上NS即可。

创建 NS 为nginx的 deploy,只需修改namespace 为nginx即可,为对比方便将一些名称信息加-ng标识,在窗前其他命名空间的deploy或pod之类的需提前创建后NS。

# 创建 名为 nginx 的 NS

kubectl create ns nginx

nginx命名空间下的deploy配置文件

apiVersion: apps/v1 # deployment api 版本

kind: Deployment # 资源类型为 deployment

metadata: # 元信息

  labels: # 标签

    app: nginx-deploy-ns # 具体的 key: value 配置形式

  name: nginx-deploy-ns # deployment 的名字

  namespace: nginx# 所在的命名空间

spec:

  replicas: 1 # 期望副本数

  revisionHistoryLimit: 10 # 进行滚动更新后,保留的历史版本数

  selector: # 选择器,用于找到匹配的 RS

    matchLabels: # 按照标签匹配

      app: nginx-deploy -ng# 匹配的标签key/value

  strategy: # 更新策略

    rollingUpdate: # 滚动更新配置

      maxSurge: 25% # 进行滚动更新时,更新的个数最多可以超过期望副本数的个数/比例

      maxUnavailable: 25% # 进行滚动更新时,最大不可用比例更新比例,表示在所有副本数中,最多可以有多少个不更新成功

    type: RollingUpdate # 更新类型,采用滚动更新

  template: # pod 模板

    metadata: # pod 的元信息

      labels: # pod 的标签

        app: nginx-deploy-ng

    spec: # pod 期望信息

      containers: # pod 的容器

      - image: nginx:1.9.1 # 镜像

        imagePullPolicy: IfNotPresent # 拉取策略

        name: nginx # 容器名称

      restartPolicy: Always # 重启策略

      terminationGracePeriodSeconds: 30 # 删除操作最多宽限多长时间

此时kubectl get pod 并未看到新创建的pod,因为kubectl 默认使用default命名空间。

在命令后加 -n NS即可。

创建 nginx 命名空间内的svc。

apiVersion: v1

kind: Service

metadata:

  name: nginx-svc

  namespace: nginx

  labels:

    app: nginx-svc

spec:

  ports:

  - name: http # service 端口配置的名称

    protocol: TCP # 端口绑定的协议,支持 TCP、UDP、SCTP,默认为 TCP

    port: 80 # service 自己的端口

    targetPort: 80 # 目标 pod 的端口

  - name: https

    port: 443

    protocol: TCP

    targetPort: 443

  selector: # 选中当前 service 匹配哪些 pod,对哪些 pod 的东西流量进行代理

    app: nginx-deploy-ns

之后在busybox中使用wget 请求nginx的index页面,发现直接使用svc名称不行,在其名称后加上".nginx"可以正常请求到。此时同一node下相同命名空间与不同命名空间的东西流量已打通。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值