位置: IT常识 - 正文

【kubernetes】k8s集群搭建(完整详解)(k8s kubelet)

编辑:rootadmin
【kubernetes】k8s集群搭建(完整详解)

目录

一、准备工作

二、配置

1、修改主机名

2、修改hosts文件

3、关闭防火墙和SELinux

4、关闭swap

5、修改网卡配置

6、系统模块配置

7、免密登录

8、安装k8s和docker

9、查看k8s集群需要的镜像版本

10、初始化Master节点

11、node配置

12、拉取Nginx镜像进行配置


一、准备工作

推荐整理分享【kubernetes】k8s集群搭建(完整详解)(k8s kubelet),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:k8s documentation,k8s kubeproxy,k8s kubesphere,k8s中kubectl,k8s kubeproxy,k8s kubedns,kubernetes(k8s),kubernetes(k8s),内容如对您有帮助,希望把文章链接给更多的朋友!

环境基于Redhat8.5版本

1、准备三台虚拟机,IP地址为

master:192.168.10.129

node1:192.168.10.134

node2:192.168.10.136

也可以在一台上做,然后克隆另外俩台,修改主机名

二、配置1、修改主机名#在主节点的虚拟机[root@mgr1 ~]# hostnamectl set-hostname k8s-master#在node1的虚拟机[root@mgr2 ~]# hostnamectl set-hostname k8s-node1#在node2的虚拟机[root@mgr3 ~]# hostnamectl set-hostname k8s-node22、修改hosts文件[root@k8s-master ~]# vim /etc/hosts192.168.10.129 k8s-master192.168.10.134 k8s-node1192.168.10.136 k8s-node2#在node1,node2也是上面一样配置3、关闭防火墙和SELinux#三台都做[root@k8s-master ~]# setenforce 0 [root@k8s-node1 ~]# systemctl stop firewalld.service [root@k8s-node1 ~]# systemctl disable firewalld.service4、关闭swap#三台节点都做,注释掉包含swap这一行[root@k8s-master ~]# vim /etc/fstab #/dev/mapper/rhel-swap none swap defaults 0 05、修改网卡配置#三台节点都做[root@k8s-master ~]# vim /etc/sysctl.d/kubernetes.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1[root@k8s-master ~]# sysctl -p6、系统模块配置#三台节点都做[root@k8s-master ~]# modprobe br_netfilter #加载系统模块[root@k8s-master ~]# lsmod | grep br_netfilter 7、免密登录#三台都做[root@k8s-master ~]ssh-keygen [root@k8s-master ~]ssh-copy-id root@192.168.10.129[root@k8s-master ~]ssh-copy-id root@192.168.10.134[root@k8s-master ~]ssh-copy-id root@192.168.10.1368、安装k8s和docker#三个节点都需要做#配置yum源[root@k8s-master ~]# cd /etc/yum.repos.d/[root@k8s-master yum.repos.d]# cat k8s.repo [k8s]name=k8sbaseurl=http://mirrors.ustc.edu.cn/kubernetes/yum/repos/kubernetes-el7-x86_64/gpgcheck=0[root@k8s-master yum.repos.d]# mount /dev/sr0 /mnt/[root@master yum.repos.d]# wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.reposed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repodnf install -y yum-utils device-mapper-persistent-data lvm2dnf install -y kubelet kubeadm kubectldnf remove podman -ydnf install -y docker-cednf install -y iproute-tc yum-utils device-mapper-persistent-data lvm2 kubelet-1.21.3 kubeadm-1.21.3 kubectl-1.21.3 docker-ce#初始化systemctl enable kubelet systemctl enable --now docker

修改docker配置文件

[root@k8s-master ~]# systemctl start docker #docker初始化[root@k8s-master ~]# vim /etc/docker/daemon.json{ "exec-opts": ["native.cgroupdriver=systemd"], "registry-mirrors": ["https://8zs3633v.mirror.aliyuncs.com"]}[root@k8s-master ~]# systemctl restart docker[root@k8s-master ~]# systemctl enable docker.service 9、查看k8s集群需要的镜像版本

注意:三个节点都需要做

[root@k8s-master yum.repos.d]# kubeadm config images list

再拉取这些镜像,执行一下步骤

docker pull kittod/kube-apiserver:v1.21.3docker pull kittod/kube-controller-manager:v1.21.3docker pull kittod/kube-scheduler:v1.21.3docker pull kittod/kube-proxy:v1.21.3docker pull kittod/pause:3.4.1docker pull kittod/etcd:3.4.13-0docker pull kittod/coredns:v1.8.0docker pull kittod/flannel:v0.14.0

拉取完成后执行改变coredns的标记不然后面会找不到镜像,执行一下步骤

docker tag kittod/kube-apiserver:v1.21.3 k8s.gcr.io/kube-apiserver:v1.21.3docker tag kittod/kube-controller-manager:v1.21.3 k8s.gcr.io/kube-controller-manager:v1.21.3docker tag kittod/kube-scheduler:v1.21.3 k8s.gcr.io/kube-scheduler:v1.21.3docker tag kittod/kube-proxy:v1.21.3 k8s.gcr.io/kube-proxy:v1.21.3docker tag kittod/pause:3.4.1 k8s.gcr.io/pause:3.4.1docker tag kittod/etcd:3.4.13-0 k8s.gcr.io/etcd:3.4.13-0docker tag kittod/coredns:v1.8.0 k8s.gcr.io/coredns/coredns:v1.8.0docker tag kittod/flannel:v0.14.0 quay.io/coreos/flannel:v0.14.010、初始化Master节点kubeadm init \--kubernetes-version=v1.21.3 \--pod-network-cidr=10.244.0.0/16 \--service-cidr=10.96.0.0/12 \--apiserver-advertise-address=192.168.10.129 \

如果出现这个错误:

    [ERROR NumCPU]: the number of available CPUs 1 is less than the required 2

加上这个    --ignore-preflight-errors=all 

如果还不成功:      systemctl stop kubelet      rm -rf /etc/kubernetes/*      systemctl stop docker          如果停止失败             reboot         docker container prune         docer ps -a         如果没有容器,就说明删干净了      rm -rf /var/lib/kubelet/      rm -rf /var/lib/etcd

初始化成功后会出现以下内容

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube   sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config   sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

【kubernetes】k8s集群搭建(完整详解)(k8s kubelet)

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:   https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.10.129:6443 --token xwvae1.05gyglinbz62ui3i \     --discovery-token-ca-cert-hash sha256:f2701ff3276b5c260900314f3871ba5593107809b62d741c05f452caad62ffa8

根据提示,操作

[root@k8s-master ~]# mkdir -p $HOME/.kube[root@k8s-master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config[root@k8s-master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config[root@k8s-master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf11、node配置#俩node节点上做[root@k8s-node1 ~]# kubeadm join 192.168.10.129:6443 --token xwvae1.05gyglinbz62ui3i --discovery-token-ca-cert-hash sha256:f2701ff3276b5c260900314f3871ba5593107809b62d741c05f452caad62ffa8

如果加入失败:     1、kubeadm reset   -y     2、     rm -rf /etc/kubernetes/kubelet.conf     rm -rf /etc/kubernetes/pki/ca.crt     systemctl restart kubelet

1) 在master上查看节点状态

[root@k8s-master ~]# kubectl get nodesNAME STATUS ROLES AGE VERSIONk8s-master NotReady control-plane,master 3m48s v1.21.3k8s-node1 NotReady <none> 3m9s v1.21.3k8s-node2 NotReady <none> 3m6s v1.21.3

发现此时是notready

2)查看集群pod状态

[root@k8s-master ~]# kubectl get pod -n kube-systemNAME READY STATUS RESTARTS AGEcoredns-558bd4d5db-46dzt 0/1 Pending 0 4m54scoredns-558bd4d5db-vpqgl 0/1 Pending 0 4m54setcd-k8s-master 1/1 Running 0 5m7skube-apiserver-k8s-master 1/1 Running 0 5m7skube-controller-manager-k8s-master 1/1 Running 0 5m7skube-proxy-bjxgt 1/1 Running 0 4m32skube-proxy-bmjnz 1/1 Running 0 4m54skube-proxy-z6jzl 1/1 Running 0 4m29skube-scheduler-k8s-master 1/1 Running 0 5m7s

3)再看节点上查看日志

[root@k8s-master ~]# journalctl -f -u kubelet-- Logs begin at Fri 2022-09-30 16:34:04 CST. --Sep 30 17:57:25 k8s-master kubelet[23732]: E0930 17:57:25.097653 23732 kubelet.go:2211] "Container runtime network not ready" networkReady="NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized"Sep 30 17:57:28 k8s-master kubelet[23732]: I0930 17:57:28.035887 23732 cni.go:239] "Unable to update cni config" err="no networks found in /etc/cni/net.d"Sep 30 17:57:30 k8s-master kubelet[23732]: E0930 17:57:30.104181 23732 kubelet.go:2211] "Container runtime network not ready" networkReady="NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized"

出现了个错误

        runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized

解决问题:         它说网络未准备好,缺少一个网络插件,那就安装一个

#在master上输入kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

再一次检查

[root@k8s-master ~]# kubectl get nodesNAME STATUS ROLES AGE VERSIONk8s-master Ready control-plane,master 45h v1.21.3k8s-node1 Ready <none> 45h v1.21.3k8s-node2 Ready <none> 45h v1.21.3

master和node都ready了

12、拉取Nginx镜像进行配置

注意:只在master上做

docker pull nginx#重新标记docker tag nginx:latest kittod/nginx:1.21.5

创建部署

kubectl create deployment nginx --image=kittod/nginx:1.21.5

暴露端口

kubectl expose deployment nginx --port=80 --type=NodePort

查看pod和服务

[root@k8s-master ~]# kubectl get pods,serviceNAME READY STATUS RESTARTS AGEpod/nginx-8675954f95-cvkvz 1/1 Running 0 2m20sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 46hservice/nginx NodePort 10.98.220.104 <none> 80:30288/TCP 2m10s

查看映射的随机端口

[root@k8s-master ~]# netstat -lntup | grep kube-proxytcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN 3834/kube-proxy tcp 0 0 0.0.0.0:30288 0.0.0.0:* LISTEN 3834/kube-proxy tcp6 0 0 :::10256 :::* LISTEN 3834/kube-proxy

测试Nginx服务

完成。 

本文链接地址:https://www.jiuchutong.com/zhishi/299747.html 转载请保留说明!

上一篇:go语言入门-一文带你掌握go语言函数(go语言入门指南)

下一篇:【前端vue2面试题】2023前端最新版vue2模块,高频24问(前端vue面试题)

  • 一个身份证可以开几个抖音小店(一个身份证可以开两个房间吗?)

    一个身份证可以开几个抖音小店(一个身份证可以开两个房间吗?)

  • vivox6sA如何在桌面添加便签(vivo手机桌面怎么摆放好看)

    vivox6sA如何在桌面添加便签(vivo手机桌面怎么摆放好看)

  • iphone11pro的屏幕分辨率(iphone11pro的屏幕伤眼睛吗)

    iphone11pro的屏幕分辨率(iphone11pro的屏幕伤眼睛吗)

  • 美图秀秀手机上照片怎么加边框(美图秀秀手机上怎么修改数字)

    美图秀秀手机上照片怎么加边框(美图秀秀手机上怎么修改数字)

  • 魅族电量0充不进(魅族手机电量一直是0)

    魅族电量0充不进(魅族手机电量一直是0)

  • ap面板发热(华为ap面板发热)

    ap面板发热(华为ap面板发热)

  • 华为平板m5和m5青春版区别(华为平板m5和m5青春版哪个好)

    华为平板m5和m5青春版区别(华为平板m5和m5青春版哪个好)

  • 华为p30pro滤镜在哪(华为p30手机滤镜怎么调出来)

    华为p30pro滤镜在哪(华为p30手机滤镜怎么调出来)

  • 快手怎么关闭直播权限(快手怎么关闭直播)

    快手怎么关闭直播权限(快手怎么关闭直播)

  • 右上角tel是什么意思(右上角的tel怎么打出来)

    右上角tel是什么意思(右上角的tel怎么打出来)

  • qq的字体大小在哪设置(qq字体放大在哪儿)

    qq的字体大小在哪设置(qq字体放大在哪儿)

  • 没有充电盒怎么连接(没有充电盒怎么匹配蓝牙耳机)

    没有充电盒怎么连接(没有充电盒怎么匹配蓝牙耳机)

  • 抖音注销后还能恢复吗(抖音注销后还能登录吗)

    抖音注销后还能恢复吗(抖音注销后还能登录吗)

  • wim格式用手机怎么打开(wiz格式手机怎么打开)

    wim格式用手机怎么打开(wiz格式手机怎么打开)

  • a1709是什么型号(A1709是什么型号的iPad)

    a1709是什么型号(A1709是什么型号的iPad)

  • 钉钉可以在电脑上面下载吗(钉钉可以在电脑上用吗)

    钉钉可以在电脑上面下载吗(钉钉可以在电脑上用吗)

  • 红米k30怎样截屏(红米k30截屏怎么操作)

    红米k30怎样截屏(红米k30截屏怎么操作)

  • wps表格如何12345排序(wps表格如何12345排序怎么全是1)

    wps表格如何12345排序(wps表格如何12345排序怎么全是1)

  • 大王卡销户可否再申请(大王卡销户可以用原来的号码吗)

    大王卡销户可否再申请(大王卡销户可以用原来的号码吗)

  • 港版11pro与国行区别(11pro港行还是国行好)

    港版11pro与国行区别(11pro港行还是国行好)

  • 如何把优酷视频保存到手机相册里(如何把优酷视频下载到手机)

    如何把优酷视频保存到手机相册里(如何把优酷视频下载到手机)

  • 苹果xr可以分屏吗(苹果手机能分屏吗)

    苹果xr可以分屏吗(苹果手机能分屏吗)

  • 华为p30pro红外传感器有什么用(华为p30pro 红外)

    华为p30pro红外传感器有什么用(华为p30pro 红外)

  • 工作站和台式机的区别(工作站和台式机的核心区别)

    工作站和台式机的区别(工作站和台式机的核心区别)

  • 个税待报解预算收入怎么使用
  • 电费为什么计入成本费用
  • 年前采购
  • 去年发生的成本但今年9月份才开票付款
  • 上月未计提税金,下月怎么做分录
  • 天然气安装工程施工劳务协议
  • 采购商品的运费计入成本的会计分录
  • 租赁的设备伤人了谁的责任
  • 工业企业财务核算方法
  • 固定资产报废后怎么处理
  • 工厂产品的人工怎么算
  • 货物运输代理服务税率
  • 季度所得税申报表营业收入怎么填
  • 闲置的房屋可以计提折旧吗
  • 停车场领的定额发票要怎么报税?
  • 支付工程款时有哪些费用
  • 金蝶现金流量表附表项目如何指定
  • 非绑定账户转入啥意思
  • 工商注销债务承担
  • 实收资本怎样入账
  • 在Win7中,鼠标非最大化
  • linux系统中配置网卡ip地址的命令为
  • 第三方检测公司招聘信息
  • php常用设计模式(大总结)
  • 哪些费用需要计提,哪些不需要
  • php中的常用魔术有哪些
  • vue3.0用法
  • css加载是异步的吗
  • php获取访问者信息
  • python进行统计分析
  • 电子回单是什么样子
  • 工伤保险赔偿范围和企业承担范围
  • 预付账款和预收账款哪个是负债
  • 企业在外地单位怎么交税
  • 个人提供劳务需要开发票吗
  • 其他权益工具投资是金融资产吗
  • 每个季度30万免增值税
  • 帝国cms8.0
  • 配电室增容验收标准
  • 企业所得税实训内容及过程
  • 金蝶固定资产折旧调整
  • 加速折旧法是指在固定资产使用的早期少提折旧
  • 在Windows平台上不属于命令ar-d的作用是
  • 小企业会计准则调整以前年度费用分录
  • 退休职工能否扣医保
  • 养猪死亡
  • 资产负债表调整事项
  • 小型微利企业认定标准2022年
  • 受托代销的含义
  • 材料估价入库发票收到如何记账
  • 管理费用不可以税前抵扣的利润表怎么填写
  • 公司给员工转公司
  • 免增增值税的有
  • 半成品是指正在各生产阶段加工的产品
  • 抵扣旅客运输服务申报时填哪行
  • 其他应收款项
  • 累计预扣法的优缺点
  • 帮员工代缴社保分录怎么办
  • 营改增后,小规模纳税人广联达
  • 留抵税额可以抵欠税吗
  • 销售已经使用过的固定资产税率
  • 复式记账法主要有
  • 凭证账本是什么
  • sqlserver msdb
  • ubuntu安装软件教程
  • Linux系统中配置网络包含( )方法
  • win10如何动态桌面
  • centos如何操作
  • win70x80070002系统找不到指定的文件
  • Win10 Mobile RedStone预览版14267.1004更新内容汇总(持续更新)
  • perl keys
  • unity项目怎么运行
  • bootstrap学习
  • 批处理自动登录有密码的程序
  • python向oracle写入
  • 有关中秋节的古诗
  • python文件描述符
  • 出口退税企业的账务处理
  • 本期应纳税额怎么算
  • 进项税小于销项税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设