K8S第三讲 Kubernetes集群配置网络插件

这篇具有很好参考价值的文章主要介绍了K8S第三讲 Kubernetes集群配置网络插件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在Kubernetes集群中,网络插件是必需的,因为它们为Pod提供了可访问的IP地址,并确保它们能够相互通信。Kubernetes支持多种网络插件,包括Calico、Flannel、Weave Net等。这里以Calico为例介绍如何配置Kubernetes集群的网络插件。

插件配置可以参考官网: K8S集群网络插件列表

1: 安装Calico
使用kubectl命令安装Calico网络插件,示例命令如下:

kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml

该命令将安装Calico的所有必需组件,包括etcd、Calico节点和Calico CNI插件。

2: 配置Calico网络策略
Calico支持强大的网络策略功能,可以在集群中实现细粒度的网络控制。您可以使用Calico的Kubernetes网络策略API来定义网络策略,示例命令如下:

kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico-policy-only.yaml

该命令将启用Calico的Kubernetes网络策略API,并关闭所有其他策略,只允许使用Kubernetes网络策略。

3: 检查Calico是否正常工作
您可以使用以下命令检查Calico是否正常工作:

kubectl get pods --all-namespaces

此命令将显示所有命名空间中的Pod,包括Calico节点和CNI插件。确保这些组件都正常运行并且没有错误。

4: 配置网络CIDR
在安装Calico之前,您需要确定Kubernetes集群中将使用的网络CIDR。网络CIDR是集群中所有Pod的IP地址的子网。示例命令如下:

kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml -f - <<EOF
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
  name: my-ippool
spec:
  cidr: 192.168.0.0/16
  natOutgoing: true
EOF

该命令将创建名为“my-ippool”的IP地址池,其中CIDR为“192.168.0.0/16”。

5: 配置节点互联
如果您的Kubernetes集群跨越多个节点,请确保所有节点都能够相互通信。您可以使用以下命令在节点之间创建Calico网络:

kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml -f - <<EOF
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
  name: my-ippool
spec:
  cidr: 192.168.0.0/16
  natOutgoing: true
---
apiVersion: projectcalico.org/v3
kind: BGPConfiguration
metadata:
  name: default
spec:
  logSeverityScreen: Info
---
apiVersion:

k8s- kube-proxy

在Kubernetes集群中,kube-proxy是一个控制平面组件,它负责维护集群中的网络规则。kube-proxy的主要职责是在每个节点上监听Kubernetes API服务器上的服务和端口对象,然后动态地将这些服务和端口对象映射到对应的Pod或节点IP地址和端口上。

kube-proxy有三种工作模式:

  • Userspace模式:kube-proxy会在每个节点上启动一个代理进程,该进程通过绑定服务的端口和地址来实现服务的负载均衡和代理。这种模式的性能比较低,但是可以在几乎所有的环境中运行。

  • iptables模式:kube-proxy通过在节点上设置iptables规则来实现服务的负载均衡和代理。这种模式的性能比Userspace模式要好,并且可以利用Linux内核的高性能网络功能,例如IPVS。

  • IPVS模式:kube-proxy通过利用Linux内核的IPVS模块来实现服务的负载均衡和代理。这种模式的性能比iptables模式更好,并且可以支持更多的负载均衡算法。

在默认情况下,Kubernetes使用iptables模式来运行kube-proxy。如果您想使用其他模式,请在kube-proxy配置中指定。要查看kube-proxy的配置,请使用以下命令:

kubectl describe configmap -n kube-system kube-proxy

kube-proxy是Kubernetes网络体系结构中的一个关键组件,它确保了服务的可用性和可靠性。

删除 calico 网络插件

如果您要从Kubernetes集群中删除Calico网络插件,则可以按照以下步骤操作:

删除Calico DaemonSet:要删除Calico网络插件,首先需要删除它的DaemonSet对象。您可以使用以下命令删除DaemonSet::

kubectl delete ds calico-node -n kube-system

除Calico自定义资源定义:Calico网络插件使用自定义资源定义(CRD)来管理其配置和策略。您可以使用以下命令删除这些CRD:

kubectl delete crd felixconfigurations.crd.projectcalico.org \
  ipamblocks.crd.projectcalico.org \
  ipamconfigs.crd.projectcalico.org \
  blockaffinities.crd.projectcalico.org \
  ipamhandles.crd.projectcalico.org \
  clusterinformations.crd.projectcalico.org \
  globalnetworkpolicies.crd.projectcalico.org \
  networkpolicies.crd.projectcalico.org \
  hostendpoints.crd.projectcalico.org \
  bgppeers.crd.projectcalico.org \
  bgpconfigurations.crd.projectcalico.org \
  ippools.crd.projectcalico.org \
  hostsubnetpolicies.crd.projectcalico.org \
  networksets.crd.projectcalico.org

删除Calico命名空间:Calico网络插件通常会在kube-system命名空间中安装,因此您可以使用以下命令删除该命名空间:

kubectl delete ns kube-system

注意:在执行这些命令之前,建议您备份您的Kubernetes集群。此外,删除Calico网络插件可能会影响您的Kubernetes集群中的网络配置和策略。如果您不确定如何删除Calico网络插件,请咨询Kubernetes社区或Calico社区的支持。

网络插件

kubectl 本身不是网络插件,它是 Kubernetes 的命令行工具,用于与 Kubernetes API 交互并管理 Kubernetes 对象。要安装网络插件,您可以使用 kubectl apply 命令应用所需的 YAML 文件或使用工具(例如 Helm)来部署预定义的 Kubernetes 应用程序。以下是一些常见的网络插件及其安装方法:

Calico:您可以使用以下命令安装 Calico 网络插件:

kubectl apply -f https://docs.projectcalico.org/v3.19/manifests/calico.yaml

Flannel:您可以使用以下命令安装 Flannel 网络插件:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Weave Net:您可以使用以下命令安装 Weave Net 网络插件:

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

请注意,这些命令将应用所需的 YAML 文件,以在您的 Kubernetes 群集中部署网络插件。

Flannel 网络插件安装后使用

确认Flannel网络插件已经正常启动。可以通过以下命令检查:
kubectl get pods --all-namespaces
如果看到Flannel相关的pod处于Running状态,则表示Flannel已经正常启动。

创建一个Flannel配置文件。可以使用以下命令创建一个名为flannel.yaml的文件:
apiVersion: v1
kind: ConfigMap
metadata:
  name: kube-flannel-cfg
  namespace: kube-system
data:
  cni-conf.json: |
    {
        "name": "cbr0",
        "plugins": [
            {
                "type": "flannel",
                "delegate": {
                    "hairpinMode": true,
                    "isDefaultGateway": true
                }
            },
            {
                "type": "portmap",
                "capabilities": {
                    "portMappings": true
                }
            }
        ]
    }
  net-conf.json: |
    {
        "Network": "10.244.0.0/16",
        "Backend": {
            "Type": "vxlan"
        }
    }
使用kubectl apply命令将Flannel配置文件应用到Kubernetes集群中:
kubectl apply -f flannel.yaml

这会将Flannel配置文件中定义的ConfigMap创建到Kubernetes集群的kube-system命名空间中。

检查Flannel是否正常工作。可以使用以下命令检查:
kubectl get pods --all-namespaces
如果看到Flannel相关的pod处于Running状态,则表示Flannel已经正常工作。

踩坑必备:

安装的Calico网络插件是3.19.4的镜像,存在以下问题:
1: 在 Kubernetes 1.19 版本中,calico/node v3.19.4 存在一个已知问题,会导致节点上的所有Pod无法与其它节点上的Pod通信。该问题在calico/node v3.19.5中已修复。

2:在 Kubernetes 1.21 版本中,calico/node v3.19.4 存在一个已知问题,会导致集群中出现大量的gc go routines,可能会导致节点变慢。该问题在calico/node v3.19.5中已修复。

建议尽快升级到 calico/node v3.19.5 或更高版本,以避免以上问题

升级步骤:文章来源地址https://www.toymoban.com/news/detail-492731.html

检查当前集群中 Calico 的版本:
kubectl get daemonset calico-node -n kube-system -o=jsonpath='{.spec.template.spec.containers[0].image}{"\n"}'


停止当前版本的 Calico:
 kubectl delete -f https://docs.projectcalico.org/v3.19/manifests/calico.yaml

修改 calico-node 镜像版本为 3.20.6 并保存到 calico.yaml 文件
讲calico.yaml文件下载下来: wget https://docs.projectcalico.org/v3.19/manifests/calico.yaml
sed -i 's|image: .*calico-node:.*|image: calico/node:v3.20.6|' calico.yaml


安装3.20.6 版本的 Calico:

kubectl apply -f calico.yaml

到了这里,关于K8S第三讲 Kubernetes集群配置网络插件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Kubernetes]9. K8s ingress讲解借助ingress配置http,https访问k8s集群应用

    前面讲解了使用Helm部署mysql集群,这里来看看使用Ingress搭建负载均衡功能 功能类似 Nginx ,可以根据域名、路径把请求转发到不同的 Service , Ingress 为外部访问集群提供了一个 统一 入口, 避免 了 对外暴露集群端口 ,可以配置 https,http访问集群应用,接下来看看如何通过腾讯云来

    2024年01月22日
    浏览(59)
  • ·[K8S:使用calico网络插件]:解决集群节点NotReady问题

    执行: wget --no-check-certificate https://projectcalico.docs.tigera.io/archive/v3.25/manifests/calico.yaml 1.2.1:查看本机ip 网卡相关信息: 1.2.2:修改calico.yaml网卡interface相关信息 1.3.1:异常日志抛出: 1.3.2:场景一:执行K8S admin config配置文件替换相关操作: 1.3.2:场景二:执行K8S admin config配置文

    2024年02月14日
    浏览(61)
  • K8s(Kubernetes)学习(二):k8s集群搭建

    minikube 只是一个 K8S 集群模拟器,只有一个节点的集群,只为测试用,master 和 worker 都在一起。 裸机安装 至少需要两台机器(主节点、工作节点个一台),需要自己安装 Kubernetes 组件,配置会稍微麻烦点。 缺点:配置麻烦,缺少生态支持,例如负载均衡器、云存储。 直接用

    2024年02月09日
    浏览(62)
  • 【云原生-K8s】kubeadm搭建安装k8s集群v1.25版本完整教程【docker、网络插件calico、中间层cri-docker】

    从 k8s 1.24开始,dockershim已经从kubelet中移除,但因为历史问题docker却不支持kubernetes主推的CRI(容器运行时接口)标准,所以docker不能再作为k8s的容器运行时了,即从k8s v1.24开始不再使用docker了 但是如果想继续使用docker的话,可以在kubelet和docker之间加上一个中间层cri-docker。

    2024年02月03日
    浏览(45)
  • Kubernetes(K8S)集群部署

    目录 一、创建3台虚拟机 二、为每台虚拟机安装Docker 三、安装kubelet 3.1 安装要求 3.2 为每台服务器完成前置设置 3.3 为每台服务器安装kubelet、kubeadm、kubectl 四、使用kubeadm引导集群 4.1 master服务器 4.2 node1、node2服务器 4.3 初始化主节点 4.4 work节点加入集群 五、token过期怎么办?

    2024年02月07日
    浏览(84)
  • Kubernetes(k8s)集群安装部署

    名称 IP 系统 配置 主控节点 192.168.202.101 CentOS 7.9.2009 2核4G 工作节点1 192.168.202.102 CentOS 7.9.2009 2核4G 工作节点2 192.168.202.103 CentOS 7.9.2009 2核4G 2.1 升级操作系统内核 导入elrepo gpg key 安装elrepo YUM源仓库 安装kernel-ml版本,ml为长期稳定版本,lt为长期维护版本 设置grub2默认引导为0 重

    2024年02月10日
    浏览(80)
  • yum部署kubernetes(k8s)集群、k8s常用资源管理

    目录 一、环境搭建 1、准备环境 1)计算机说明,建议系统版本7.4或者7.6 2)修改所有主机的计算机名设置host文件  2、安装master节点 1)安装etcd配置etcd 2)安装k8s-master节点 3)配置apiserver 4)配置controller和scheduler 5)启动k8s服务 3、安装k8s-master上的node 1)安装node 2)配置kube

    2024年02月13日
    浏览(64)
  • Kubernetes(k8s)集群部署----->超详细

    💖The Begin💖点点关注,收藏不迷路💖 Kubernetes(简称k8s)是一个开源的容器编排平台,可以帮助开发人员和运维团队更轻松地管理容器化应用程序。本文将详细介绍如何进行k8s集群的部署,以帮助读者快速搭建一个高可用、可伸缩的k8s集群。 1、操作系统:至少三台物理机或

    2024年02月05日
    浏览(65)
  • Containerd+Kubernetes搭建k8s集群

    视频教程地址:https://space.bilibili.com/3461573834180825/channel/seriesdetail?sid=3316691 之前写了一篇基于docker安装kubernetes的文章,这篇文档我们来使用containerd来安装kubernetes,相较于docker,containerd运行容器的时候效率更高,并且可以兼容docker镜像。基于docker安装kubernetes的文章地址:ht

    2024年02月07日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包