Kubeadm 安装支持IPV6 K8S的简单过程


背景

手贱
找了一个晚上想尝试安装一个K8S集群
并且可以支持IPV6 协议栈的
然后就开始各种百度. 各种处理
找到了一堆歪门邪道.
但是还不知道对不对.
这里总结一下. 备忘(第二天就忘记昨天晚上干的事情了)

学习来源

第一个: 简书
https://www.jianshu.com/p/b10b2d996c40 第二个: 简书
https://www.jianshu.com/p/a04ad0d1f908 第三个: 下载calico的yaml文件
wget https://docs.tigera.io/calico/latest/manifests/calico.yaml

简单初始

/etc/hosts
/etc/sysctl.conf
/etc/selinux/config
swapoff -a
需要注意要增加ipv6的 forward 不然那会报错

使用来源进行安装必备的软件

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://dockerproxy.com",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://ccr.ccs.tencentyun.com"
]
}
EOF 使用来源的 源 进行安装处理 cat >/etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
[kubernetes]
name=kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
EOF 注意 CentOS7 使用 7 CentOS8 openEuler anolis 使用 el8

安装一堆rpm

containerd.io-1.6.25-3.1.el8.x86_64.rpm
container-selinux-2.138-5.oe2203sp2.noarch.rpm
cri-dockerd-0.3.4-3.el8.x86_64.rpm
daemon.json
docker-buildx-plugin-0.11.2-1.el8.x86_64.rpm
docker-ce-24.0.7-1.el8.x86_64.rpm
docker-ce-cli-24.0.7-1.el8.x86_64.rpm
docker-ce-rootless-extras-24.0.7-1.el8.x86_64.rpm
docker-compose-plugin-2.21.0-1.el8.x86_64.rpm
cri-tools-1.28.0-150500.1.1.x86_64.rpm
kubeadm-1.28.4-150500.1.1.x86_64.rpm
kubectl-1.28.4-150500.1.1.x86_64.rpm
kubelet-1.28.4-150500.1.1.x86_64.rpm
kubernetes-cni-1.2.0-150500.2.1.x86_64.rpm
kubernetes.repo
libnetfilter_cthelper-1.0.0-16.oe2203sp2.x86_64.rpm
libnetfilter_cttimeout-1.0.0-15.oe2203sp2.x86_64.rpm
libnetfilter_queue-1.0.5-2.oe2203sp2.x86_64.rpm

导入一堆镜像

这里不分别列了 安装万 kubeadm 之后可以查看

kubeadm config images list

registry.k8s.io/kube-apiserver:v1.28.4
registry.k8s.io/kube-controller-manager:v1.28.4
registry.k8s.io/kube-scheduler:v1.28.4
registry.k8s.io/kube-proxy:v1.28.4
registry.k8s.io/pause:3.9
registry.k8s.io/etcd:3.5.9-0
registry.k8s.io/coredns/coredns:v1.10.1 注意可以根据下面的初始化命令进行修改 注意 安装完 cri-docker 之后需要修改一下 cri-docker的配置 才可以进行相关的处理
修改
/usr/lib/systemd/system/cri-docker.service
将里面的启动脚本修改为:
注意 pause 的脚本需要根据具体情况来.
ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9

kubeadm 初始化

kubeadm init --node-name=gscloudpg15  \
--image-repository=registry.aliyuncs.com/google_containers \
--cri-socket=unix:///var/run/cri-dockerd.sock \
--pod-network-cidr=2001:db8:42:0::/56,10.244.0.0/16 \
--service-cidr=2001:db8:42:1::/112,10.96.0.0/16 \
--apiserver-advertise-address=2408:400a:ed:d4ff:7a7b:f5dc:a12f:e5e7 \
--apiserver-bind-port=6443 # 注意 node-name 单节点时需要时 机器名
# 注意 镜像仓库可以进行正常的导入 离线处理 这次我其实是选用的 简书上面下载的资料 1.28.4
# 注意 可以把ipv6的地址放在前面 ipv4的在后面
# 注意如果使用ipv6 必须增加上 --apiserver-advertise-address

初始化网络

flannel 可以支持ipv6 但是比较麻烦
感觉可以使用 calico的方式进行
可以下载 calico
wget https://docs.tigera.io/calico/latest/manifests/calico.yaml 修改点主要有:
修改config-map
大概是在 40 行左右 增加IPV6的兼容支持 注意我这里忘记了 一个逗号, 浪费了一晚上的时间.
修改yaml配置文件一定要仔细认真
主要的变化是: "ipam": {
"type": "calico-ipam",
"assign_ipv4": "true",
"assign_ipv6": "true"
}, 原始文件内容变化: kind: ConfigMap
apiVersion: v1
metadata:
name: calico-config
namespace: kube-system
data:
# Typha is disabled.
typha_service_name: "none"
# Configure the backend to use.
calico_backend: "bird" # Configure the MTU to use for workload interfaces and tunnels.
# By default, MTU is auto-detected, and explicitly setting this field should not be required.
# You can override auto-detection by providing a non-zero value.
veth_mtu: "0" # The CNI network configuration to install on each node. The special
# values in this config will be automatically populated.
cni_network_config: |-
{
"name": "k8s-pod-network",
"cniVersion": "0.3.1",
"plugins": [
{
"type": "calico",
"log_level": "info",
"log_file_path": "/var/log/calico/cni/cni.log",
"datastore_type": "kubernetes",
"nodename": "__KUBERNETES_NODE_NAME__",
"mtu": __CNI_MTU__,
"ipam": {
"type": "calico-ipam",
"assign_ipv4": "true",
"assign_ipv6": "true"
}, "policy": {
省略很多行

增加IPV6的兼容处理-2

在 container的配置界面处进行修改

            - name: CLUSTER_TYPE
value: "k8s,bgp"
# Auto-detect the BGP IP address.
- name: IP
value: "autodetect"
- name: IP6
value: "autodetect" 增加IP6的属性
大概是第 4000多行
注意 CIDR 我这边跟kubeadm 里面初始化的是相同前缀. 具体原因我还不是很清楚 4812 - name: FELIX_DEFAULTENDPOINTTOHOSTACTION
4813 value: "ACCEPT"
4814 # Disable IPv6 on Kubernetes.
4815
4816 - name: CALICO_IPV6POOL_CIDR
4817 value: 2001:db8:42:0::/56
4818 - name: FELIX_IPV6SUPPORT
4819 value: "true"
4820 - name: FELIX_HEALTHENABLED
4821 value: "true"

初始化calico

kubectl apply -f calico.yaml

会自动拉至少三个镜像, 跟网速有很大的关系
可以使用
kubectl get pod -A -w 自动刷新查看pod的进展情况 kubectl get pod -A -w -owide
NAMESPACE NAME READY STATUS RESTARTS AGE IP
kube-system calico-kube-controllers-7ddc4f45bc-lnld6 1/1 Running 0 83m 2001:db8:1::e
kube-system calico-node-9msnb 1/1 Running 0 37m 2408:400a:ed:d4ff:7a7b:f5dc
kube-system coredns-66f779496c-8hdxk 1/1 Running 0 84m 2001:db8:1::c
kube-system coredns-66f779496c-qm29r 1/1 Running 0 84m 2001:db8:1::d
kube-system etcd-gscloudpg15 1/1 Running 0 84m 2408:400a:ed:d4ff:7a7b:f5dc
kube-system kube-apiserver-gscloudpg15 1/1 Running 0 84m 2408:400a:ed:d4ff:7a7b:f5dc
kube-system kube-controller-manager-gscloudpg15 1/1 Running 0 84m 2408:400a:ed:d4ff:7a7b:f5dc
kube-system kube-proxy-8sj2j 1/1 Running 0 84m 2408:400a:ed:d4ff:7a7b:f5dc
kube-system kube-scheduler-gscloudpg15 1/1 Running 1 84m 2408:400a:ed:d4ff:7a7b:f5dc

其他验证

下一个晚上进行, 希望别再有标点符号的问题了..

Kubeadm 安装支持IPV6 K8S1.28.x的简单过程的更多相关文章

  1. CentOS7.3利用kubeadm安装kubernetes1.7.3完整版(官方文档填坑篇)

    安装前记: 近来容器对企业来说已经不是什么陌生的概念,Kubernetes作为Google开源的容器运行平台,受到了大家的热捧.搭建一套完整的kubernetes平台,也成为试用这套平台必须迈过的坎儿 ...

  2. Centos7 使用 kubeadm 安装Kubernetes 1.13.3

    目录 目录 什么是Kubeadm? 什么是容器存储接口(CSI)? 什么是CoreDNS? 1.环境准备 1.1.网络配置 1.2.更改 hostname 1.3.配置 SSH 免密码登录登录 1.4 ...

  3. PPTP支持IPv6

    pptp支持ipv6,谷歌资料不多,这里整理下   主要用来给ipv4访问ipv6资源的场景使用,客户端连接上pptp后会分配得到一个ipv6地址,通过此地址访问ipv6的资源 客户端网段在pptp. ...

  4. kubeadm安装

    目录: 环境准备 所有节点安装docker 部署K8s集群 部署Dashboard 安装Harbor私有仓库 安装 master(2C/4G,cpu核心数要求大于2) 192.168.63.100 d ...

  5. iOS应用支持IPV6,就那点事儿

    原文连接   果然是苹果打个哈欠,iOS行业内就得起一次风暴呀.自从5月初Apple明文规定所有开发者在6月1号以后提交新版本需要支持IPV6-Only的网络,大家便开始热火朝天的研究如何支持IPV6 ...

  6. iOS应用支持IPV6

    一.IPV6-Only支持是啥? 首先IPV6,是对IPV4地址空间的扩充.目前当我们用iOS设备连接上Wifi.4G.3G等网络时,设备被分配的地址均是IPV4地址,但是随着运营商和企业逐渐部署IP ...

  7. nginx 支持ipv6设置

    为了使nginx支持ipv6 访问需要做以下配置: 1.找到nginx的安装路径: 使用命令:whereis nginx 查看nginx安装路径: 进入nginx执行文件目录: 先用./nginx - ...

  8. kubeadm安装Kubernetes V1.10集群详细文档

    https://www.kubernetes.org.cn/3808.html?tdsourcetag=s_pcqq_aiomsg 1:服务器信息以及节点介绍 系统信息:centos1708 mini ...

  9. Kubeadm安装的K8S集群1年证书过期问题的解决思路

    这个问题,很多使用使用kubeadm的用户都会遇到. 网上也有类似的帖子,从源代码编译这种思路, 在生产环境,有些不现实. 还是使用kubeadm的命令操作,比较自然一点. 当然,自行生成一套证书,也 ...

  10. 使用 --image-repository 解决kubeadm 安装k8s 集群 谷歌镜像墙的问题

    从网上我们看到的好多kubeadm 安装k8s 的时候都说需要下拉取镜像,然后修改,实际上 我们可以使用配置参数,快速的跳过墙的问题 说明: 基础镜像,我们仍然存在,拉取的问题,但是dockerhub ...

随机推荐

  1. intel 虚拟化 VT-d VT-x VT-c 的区别

    intel 虚拟化 VT-d VT-x VT-c 有什么区别,各是什么意思,有什么作用 简单描述理解 VT-d VT-x VT-c VT-d 英文全程为 Virtualization Technolo ...

  2. 终于卷完了!MySQL 打怪升级进阶成神之路(2023 最新版)!

    从第一篇文章开始,我们逐步详细介绍了 MySQL 数据库的基础知识,如:数据类型.存储引擎.性能优化(软.硬及sql语句),MySQL 数据库的高可用架构的部分,如:主从同步.读写分离的原理与实践.跨 ...

  3. mysql将查询结果生成临时表

    MySQL中将查询的结果生成临时表,列类型与查询的列一致,百度搜索到的没啥用. 直接上SQL: 将结果生成临时表 create temporary table temp_tb_name as (sel ...

  4. docker: 'buildx' is not a docker command

    解决方法 sudo apt install docker-buildx-plugin

  5. Spark Streaming快速入门

    Spark Streaming快速入门 一.简介 Spark Streaming 是构建在 Spark Core 基础之上的流处理框架(但实际上是微批次处理框架),是 Spark 非常重要的组成部分. ...

  6. 整理混乱的头文件,我用include what you use

    摘要:使用include-what-you-use(iwyu/IWYU)清理冗余头文件,补充必要头文件. 本文分享自华为云社区<用include what you use拯救混乱的头文件> ...

  7. SpringBoot 接口并发限制(Semaphore)

    可以使用 JMeter 辅助测试 https://blog.csdn.net/weixin_45014379/article/details/124190381 @RestController @Re ...

  8. [IM002]Navicat ODBC驱动器管理器 未发现数据源名称并且未指定默认驱动程序

    数据库 SQL SERVER 2008,连接时报:[IM002]Navicat ODBC驱动器管理器 未发现数据源名称并且未指定默认驱动程序 到安装目录下找到 sqlncli_x64.mis 双击安装 ...

  9. 线上活动 | AI 头像变装秀

    ​宝子们,你的头像多久没换了? 送你一个锦囊,让你拥有既独一无二,又千变万化的专属 AI 头像 Hugging Face 将在 7 月 5 日 发起:AI 头像变装秀 ️️️游戏规则️️️ 我们将分享 ...

  10. 关于_beginthreadex和CreateThread的区别

    关于_beginthreadex和CreateThread的区别 在 Win32 API 中,创建线程的基本函数是 CreateThread,而 _beginthread(ex) 是 C++ 运行库的 ...