范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

kubeadmFlannel基于公网IP搭建K8s集群

  CentOS 7.6 系统主机 3 台,基于公网 IP 搭建 1 主 2 从的 Kubernetes 集群一、准备工作1.版本信息
  Docker
  20.10.21
  Kubernetes
  1.21.0-0
  Flannel
  0.20.22.集群角色规划
  3 台 CentOS 7.6 主机,集群角色规划如下
  Master
  Worker01
  Worker02
  公网 IP
  139.196.219.92
  1.116.156.102
  121.37.169.103
  内网 IP
  172.21.253.164
  10.0.4.15
  192.168.0.89
  服务器厂商
  阿里云
  腾讯云
  华为云 3.修改 hosts 文件
  设置 master 主机的 hostname 为 m sudo hostnamectl set-hostname m
  分别设置 2 台 worker 主机的 hostnamesudo hostnamectl set-hostname w1 sudo hostnamectl set-hostname w2
  分别修改 3 台主机的 hosts 文件,这里配置的是公网 IP。因为云服务器厂商不同,无法搭建局域网 K8s 集群vim /etc/hosts  139.196.219.92 m 1.116.156.102 w1 121.37.169.103 w24.创建虚拟网卡
  3 台主机分别填写对应的公网 IP # 打开文件 vim /etc/sysconfig/network-scripts/ifcfg-eth0:1   # 填入内容 NAME=eth0:1 DEVICE=eth0:1 TYPE=Ethernet ONBOOT=yes BOOTPROTO=static NETMASK=255.255.255.0 IPADDR=   # 重启网络 systemctl restart network.service
  创建虚拟网卡前,查看 eth0 [root@w1 network-scripts]# ip a | grep eth0   2: eth0:  mtu 1500 qdisc mq state UP group default qlen 1000     inet 10.0.4.15/22 brd 10.0.7.255 scope global eth0
  创建虚拟网卡后,查看 eth0,可以发现多了一条记录 eth0:1 [root@w1 ~]# ip a | grep eth0   2: eth0:  mtu 1500 qdisc mq state UP group default qlen 1000     inet 10.0.4.15/22 brd 10.0.7.255 scope global eth0     inet 1.116.156.102/24 brd 1.116.156.255 scope global eth0:1
  华为云主机通过上述方式添加虚拟网卡时失败,改为使用 Tunctl 安装虚拟网卡,参考这篇文章:CentOS 7 Tunctl 安装 虚拟网卡_tom.ma的博客-CSDN博客_tunctl
  但需要注意的是,需要将这篇文章中的 tap0 改为 eth0:1,命名与其他主机保持一致 5.云服务器安全组设置
  搭建 K8s 集群需要对云服务器安全组入方向规则进行配置,开启相应的端口
  master 节点
  协议
  端口
  作用
  使用者
  TCP
  2379~2380
  etcd 客户端 API
  kube-apiserver, etcd
  TCP
  6443
  api-server API   所有组件   UDP   8472
  VxLan Overlay 网络通信   Flannel 网络插件   TCP   10250
  kubelet API   kubelet, Control Plane 组件   TCP   10251
  kube-scheduler   kube-scheduler   TCP   10252
  kube-controller-manager   kube-controller-manager   worker 节点   协议   端口   作用   使用者   UDP   8472
  VxLan Overlay 网络通信   Flannel 网络插件   TCP   10250
  kubelet API   kubelet, Control Plane 组件   TCP   30000~32767   NodePort 服务   所有组件   二、系统基础配置1.更新并安装依赖   准备好 3 台主机后,每台主机均需要更新并安装依赖sudo yum -y update sudo yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp sudo yum install -y yum-utils2.基础配置   关闭防火墙systemctl stop firewalld && systemctl disable firewalld   关闭 SELinux (Security Enhanced Linux)setenforce 0 sed -i "s/^SELINUX=enforcing$/SELINUX=permissive/" /etc/selinux/config   关闭 swapswapoff -a sed -i "/swap/s/^(.*)$/#1/g" /etc/fstab   配置 iptables 的 ACCEPT 规则iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT   设置系统参数cat < /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system   三、安装 Docker1.配置阿里云镜像源sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 查看 Docker-CE yum list | grep docker-ce # 更新 yum 缓存 sudo yum makecache fast2.安装 Docker   安装指定版本 20.10.21sudo yum install -y docker-ce-20.10.21 docker-ce-cli-20.10.21 containerd.io3.启动 Docker# 启动 Docker sudo systemctl start docker # 设置开机启动 Docker sudo systemctl enable docker   四、安装 Kubernetes 集群所需组件(一) 安装 kubeadm, kubelete, kubectl1.配置 yum 源cat < /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF2.开始安装# 确认 yum 中是否有指定版本 yum list kubeadm --showduplicates | sort -r # 安装 1.21.0-0 yum install -y kubeadm-1.21.0-0 kubelet-1.21.0-0 kubectl-1.21.0-03.Docker 和 K8s 设置为同一个 cgroup(1) 修改 daemon.json vim /etc/docker/daemon.json 设置 cgroup "exec-opts": ["native.cgroupdriver=systemd"] (2) 重启 Docker systemctl restart docker (3) 检查 kubelet,如果在输出信息中发现 No such file or directory,说明没问题 sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf4.修改 kubelet 启动参数   每台主机都要添加并指定对应的公网 IP,然后才能使用公网 IP 进行集群间通信vim /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf   在 KUBELET_KUBECONFIG_ARGS 后面追加 --node-ip=   w2 节点的改动如下图所示   修改之后执行 daemon-reload 让修改生效systemctl daemon-reload5.启动 kubelet / 重启 kubelet   启动 kubeletsystemctl enable kubelet && systemctl start kubelet   重启 kubeletsystemctl restart kubelet(二) 拉取 kube-proxy, scheduler 等镜像   需要通过国内镜像源下载镜像1.查看 kubeadm 所需镜像kubeadm config images list   输出信息如下k8s.gcr.io/kube-apiserver:v1.21.14 k8s.gcr.io/kube-controller-manager:v1.21.14 k8s.gcr.io/kube-scheduler:v1.21.14 k8s.gcr.io/kube-proxy:v1.21.14 k8s.gcr.io/pause:3.4.1 k8s.gcr.io/etcd:3.4.13-0 k8s.gcr.io/coredns/coredns:v1.8.0   遗憾的是需要科学上网才能下载这些镜像2.尝试用国内镜像源拉取镜像docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.14   经过测试,可以正常拉取,因此编写一个 Shell 脚本,通过国内镜像源拉取 kubeadm 所需镜像   切换到一个目录,编写 kubeadm_image.sh,用于从阿里云镜像源拉取镜像 / 重新打 tag / 删除原镜像#!/usr/bin/env bash # 镜像处理过程中,如果遇到错误,立即退出 set -e # 版本定义 readonly KUBE_VERSION=v1.21.0 readonly PAUSE_VERSION=3.4.1 readonly ETCD_VERSION=3.4.13-0 readonly CORE_DNS_VERSION=v1.8.0 readonly OFFICIAL_URL=k8s.gcr.io readonly ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers # 镜像列表 imageList=(kube-apiserver:${KUBE_VERSION} kube-controller-manager:${KUBE_VERSION} kube-scheduler:${KUBE_VERSION} kube-proxy:${KUBE_VERSION} pause:${PAUSE_VERSION} etcd:${ETCD_VERSION} coredns:${CORE_DNS_VERSION}) # 镜像转换操作 for imageItem in ${imageList[@]} ; do # 从国内镜像源拉取镜像 docker pull $ALIYUN_URL/$imageItem # 给镜像重新打一个标签,命名为 kubeadm 所需的镜像 docker tag $ALIYUN_URL/$imageItem $OFFICIAL_URL/$imageItem # 删除原有镜像 docker rmi $ALIYUN_URL/$imageItem done # coredns 的镜像比较特殊,单独处理 docker tag ${OFFICIAL_URL}/coredns:${CORE_DNS_VERSION} ${OFFICIAL_URL}/coredns/coredns:${CORE_DNS_VERSION} docker rmi ${OFFICIAL_URL}/coredns:${CORE_DNS_VERSION}   运行脚本sh ./kubeadm_image.sh   五、搭建 Kubernetes 集群(一)用 kubeadm 初始化 master 节点1.执行 kubeadm initkubeadm init --kubernetes-version=1.21.0 --apiserver-advertise-address=139.196.219.92 --pod-network-cidr=10.244.0.0/16 -v=5   输出日志中出现如下信息时,说明 master 节点已经初始化成功了   Your Kubernetes control-plane has initialized successfully!   将末尾的 kubeadm join 信息保存起来,后面的步骤中需要在 worker 节点执行   2.集群健康检查   执行如下命令mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config   集群健康检查# 检查集群状态 kubectl cluster-info # 健康检查 curl -k https://localhost:6443/healthz3.修改kube-apiserver 配置   kube-apiserver 添加 --bind-address=0.0.0.0,确认 --advertise-addres=<公网 IP>vim /etc/kubernetes/manifests/kube-apiserver.yaml   修改后如下图所示   (二)安装网络插件 Flannel1.当前集群状态kubectl get pods -n kube-system kubectl get nodes   可以看到,两个 coredns 还是 Pending 状态,此时还缺少网络插件2.安装 Flannel 网络插件   Kubernetes 为了让网络功能更加灵活,制定了 CNI 规范,由第三方实现网络的细节功能。目前有多种网络插件可供选择,使用较多的是 Calico 和 Flannel,其他的网络插件参考官方文档:https://kubernetes.io/docs/concepts/cluster-administration/addons/   由于公网环境使用 Calico 网络插件配置比较复杂,也没有调试成功,因此本文使用 Flannel 网络插件,安装命令如下,在 master 节点执行# 进入一个目录,假设为 /var/local/k8s wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml   修改 kube-flannel.yml,新增 2 个配置vim kube-flannel.yml   第 1 处containers: - name: kube-flannel #image: flannelcni/flannel:v0.20.2 #for ppc64le and mips64le (dockerhub limitations may apply) image: docker.io/rancher/mirrored-flannelcni-flannel:v0.20.2 command: - /opt/bin/flanneld args: - --public-ip=$(PUBLIC_IP) - --iface=eth0 - --ip-masq - --kube-subnet-mgr   第 2 处env: - name: PUBLIC_IP valueFrom: fieldRef: fieldPath: status.podIP   修改后的配置如下   执行安装命令kubectl apply -f kube-flannel.yml(三)用 kubeadm 将从节点加入集群   执行如下命令,将 worker 节点加入集群kubeadm join 139.196.219.92:6443 --token o0zxc6.fmmh2sn8wlbt9onm --discovery-token-ca-cert-hash sha256:a52cec58178c402ecaecc74375d49495c1bf13661dd0b25b158e7caf5d619fa6 -v=5   输出日志中出现如下信息时,说明 worker 节点已经成功加入集群   This node has joined the cluster   将 2 个从节点都加入集群后,集群状态如下   可以看到,3 个节点都处于可用状态,3 个 Flannel pod 也是绑定的公网 IP   六、自定义 Pod 测试   pod-nginx.ymlapiVersion: apps/v1 kind: ReplicaSet metadata: name: my-nginx labels: tier: frontend spec: replicas: 6 selector: matchLabels: tier: frontend template: metadata: name: my-nginx labels: tier: frontend spec: containers: - name: my-nginx image: nginx ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: my-nginx-service spec: type: NodePort ports: - port: 80 targetPort: 80 protocol: TCP nodePort: 30992 selector: tier: frontend   执行# 切换到 pod-nginx.yml 所在目录 kubectl apply -f pod-nginx.yml   查看 my-nginx 对外暴露的端口# 查看已暴露的端口 kubectl get services   w1 节点的公网 IP 为 1.116.156.102,w2 节点的公网 IP 为 121.37.169.103,NodePort 对外暴露的端口为 30992,访问结果如下   测试通过,K8s 集群搭建成功   七、参考文档   CentOS 7 Tunctl 安装虚拟网卡   选择 Kubernetes 网络插件   公网环境搭建 K8s 集群

耳鸣不一定是身体虚,找对中医辩证,仅需7味药,耳鸣不再叫!说起耳鸣,很多人都认为是身体虚了,需要补!但实际上,并不是这样的。耳鸣的类型有多种,今天就给大家讲一讲有一类耳鸣比较常见。案例一位让我印象很深的耳鸣患者,年龄47岁,双侧耳鸣将近一大便溏稀,胃口不佳,浑身乏力,是时候搭配一些祛湿中成药了!大便溏稀,胃口不佳,浑身乏力,是时候搭配一些祛湿中成药了!中医认为,在冬季,人们是比较容易被湿邪入侵的,而且冬季往往会伴随着寒风,给人们带来健康问题。湿为阴邪,容易损伤阳气,身体健滕哈格带领曼联取得8连胜3比0拿下弱旅查尔顿之后,曼联已经取得了各项赛事的8连胜,虽然这当中基本没有面对豪门的胜利,且绝大多数都不是大比分的结果,但积分到手远比以上这些内容要重要得多。更关键的是,球队基本西亚卡姆2887猛龙胜黄蜂,鲍尔24分14助罗切尔空砍33分猛龙132120击败黄蜂,猛龙全场命中20记三分。开场西亚卡姆连进两球,特伦特打四分,阿奴诺比又命中三分,猛龙116领先。罗齐尔鲍尔华盛顿连中4记三分,西亚卡姆阿奴诺比也对飚远投,桐乡学校善用短视频,提高家长带娃能力来源嘉兴日报嘉兴在线感谢爸爸妈妈这么办系列策略短视频,实用又简单明了,通过学习,我们掌握了在寒假期间如何正确带领孩子进行有效阅读的方法。今天,桐乡市濮院茅盾实验小学一名家长在学校新2022东莞市监十大事件发布!每一件都关系你我他老舍说生活是种律动,须有光有影,有左有右,有晴有雨,滋味就含在这变而不猛的曲折里。2022年是极不平凡的一年,是历经考验笃定前行的一年。东莞市市场监管局在艰难中应对考验,在危中求机1200万打水漂了,又一支球队被勇士坑了勇士可以说是当下最成功的NBA球队了,以现阶段的核心板底,他们在最近9年拿到了4座NBA总冠军奖杯,上赛季他们并不被看好,但最终还是凭借能力更强的核心球员以及更为先进全面的体系夺得今日全国尿素出厂报价2023年1月11日哈喽,大家好!这里是化肥价格行情!关注我每天看最新尿素复合肥磷铵钾肥价格行情!今天(2023年1月11日)下面我们说说今天国内尿素价格行情!今日国内尿素市场大稳小动,部分价格小幅下神农架景区对全国军人和三属免收门票1月9日,湖北文旅集团发布消息,对持优待证的退役军人和烈士遗属因公牺牲军人遗属病故军人遗属到湖北文旅集团旗下景区和酒店给予优惠优待。全国范围内持有中华人民共和国退役军人优待证的退役杨凌人,陕西全民健康保上线!100元享最高450万保障来源杨凌融媒体中心近日,陕西人专属的普惠型补充医疗保险陕西全民健康保已正式上线继2021年以来全国28省200多个地市相继推出惠民保类产品后陕西人也有自己专属的政府部门指导的省级惠尽管已经解封来瑞士的中国游客为何迟迟未到?瑞士德语广播电视台日前报道,尽管中国结束了此前新冠清零防疫政策,但来自中国的旅游热潮暂时不太可能实现。在这次政策放宽前的三年间,前往中国的旅行需要耗费大量的耐心和金钱,出发前需要进
iPhone14值得买吗?和iPhone13有什么区别?iPhone14值得买吗?和iPhone13有什么区别?本文只讨论标准版iPhone13和iPhone14的区别到底有哪些。首先先看外观,iPhone13和iPhone14外观除了一年比一年早的双11,今年不急了?(观察者网讯文周毅编辑庄怡)今日(9月8日),阿里公布了今年双11的启动时间。今年天猫双11将于10月24日晚8点开启预售,10月31日第一波11月10日第二波,今年两波开卖时间均独家预售最快30分钟送达美团京东交火iPhone14外卖买手机成新趋势每经记者杨昕怡每经编辑刘雪梅在北京时间9月8日凌晨1点的超前瞻秋季新品发布特别活动上,iPhone14系列和新款AppleWatchAirPodsPro一同亮相,让全世界的果粉们一低端不买华为,高端不买小米,这种说法到底正确吗?大家有没有听说过,手机圈一直流行着这么一句话低端不买华为,高端不买小米,相信不少小伙伴可能都很疑惑,为什么会这么说呢?这种说法到底正确吗?今天我们就来好好聊一聊!先说结论,这句话虽2022。8。29期指走势预测上周五大盘高开震荡下跌0。31,市场再度调整,其实开盘有过短暂的反弹,但因热点太乱而很快就结束,不过这也符合我们早盘做高空的预期。总体上虽说跌幅不大,但个股近来多是很惨烈,杀跌情绪华为预计2025年就可以取代联想成为国产电脑销量第一华为取代联想晋升国产PC一哥实乃大势所趋,按照目前局势判断最多三年!此观点分析只限于国内PC市场不涉及海外市场2022年二季度,华为成为国内PC领域唯一一家正增长的公司,增长幅度高午评A股低开高走沪指跌0。14,光伏等赛道板块大幅反弹金融界8月29日消息今日早盘A股三大指数集体低开逾1,盘初市场快速反弹,创业板指逼近翻红,随后各大指数小幅回落并陷入整理态势,午前A股再度小幅上扬,沪指创业板指一度翻红。截止午间收美联储将继续升息?美议员警告或致经济衰退中新网8月29日电据美国有线电视新闻网(CNN)报道,当地时间28日,美国国会联邦参议员伊丽莎白沃伦表示,担心美国联邦储备委员会(Fed)可能使经济陷入衰退,加息可能导致数百万民众手机充电这几大误区必须知道!怎么充电又快又保护电池?引言手机成为日常必需品随着科技的发展,手机的使用频率越来越高,以至于我们有的时候手机一天要充好几次电。哈喽大家好,我是布丁哥,今天我们来分享手机充电的相关误区和知识。手机充电越来越推荐你买这三款旗舰手机性能强大五年不过时保值率也不错新的一月又到来了,很多朋友面对琳琅满目的手机市场,真不知道该去买哪款手机,便宜的害怕用不了多久,贵的又害怕买错,真是一件困难的事情,一般来说,旗舰手机肯定是又好用又好看,如果再加上2022年9月9日红网手机报中秋节能出省旅游吗?听听湖南疾控专家怎么说中秋节假期临近,湖南省疾控中心温馨提示当前新冠病毒奥密克戎变异株传播速度快隐匿性强,国内多地已报告本土病例传播的疫情,建议大家非必要不前往