当前位置: 首页 > article >正文

kubeadm部署安装

目录

环境准备

安装kubeadm、kubelet、kubectl

初始化kubeadm

设定kubectl

安装网络插件

测试

部署Dashboard


相比于二进制安装,kubeadm 安装就非常的简单

环境准备

所有节点

关闭防火墙规则、关闭selinux、关闭swap交换空间

systemctl stop firewalld

setenforce 0

iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

swapoff -a

加载 ip_vs 模块

for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^.*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done

修改各节点主机名,各个机器主机名不同

hostnamectl set-hostname master01              ---172.16.233.102

hostnamectl set-hostname node01              ---172.16.233.103

hostnamectl set-hostname node02              ---172.16.233.104

修改hosts映射文件

vim /etc/hosts

调整内核参数

cat > /etc/sysctl.d/kubernetes.conf << EOF 

net.bridge.bridge-nf-call-ip6tables=1

net.bridge.bridge-nf-call-iptables=1

net.ipv6.conf.all.disable_ipv6=1

net.ipv4.ip_forward=1

EOF

使参数生效

sysctl --system

安装docker

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install -y docker-ce docker-ce-cli containerd.io

配置加速器,使用Systemd管理的Cgroup来进行资源控制与管理

cat > /etc/docker/daemon.json <<EOF
> {
>   "registry-mirrors": [ "https://0a40cefd360026b40f39c00627fa6f20.mirror.swr.myhuaweicloud.com"],
>   "exec-opts": ["native.cgroupdriver=systemd"],
>   "log-driver": "json-file",
>   "log-opts": {
>     "max-size": "100m"
>   }
> }
> EOF

systemctl daemon-reload

systemctl restart docker.service

systemctl enable docker.service

docker info | grep Cgroup Driver

安装kubeadm、kubelet、kubectl

所有节点

定义 kubernetes 源

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 https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF

yum install -y kubelet-1.20.11 kubeadm-1.20.11 kubectl-1.20.11

设置 kubelet 开机自启

systemctl enable kubelet.service

查看初始化需要的镜像

kubead config images list

master 节点

上传 v1.20.11.zip 压缩包至 /opt 目录

uzip v1.20.11.zip -d /opt/k8s

cd /opt/k8s/v1.20.11

批量载入镜像文件

for i in $(ls *.tar); do docker load -i $i; done

将镜像和脚本复制到 node 节点,并在node节点上执行脚本加载镜像文件

scp -r /opt/k8s root@node01:/opt

scp -r /opt/k8s root@node02:/opt

注:node1和node2 都要载入一下才行

初始化kubeadm

kubeadm config print init-defaults > /opt/kubeadm-config.yaml

cd /opt/

vim kubeadm-config.yaml

12 行 修改为master ip

34 行     指定自己的版本号

37行  添加   

末尾再添加内容

apiVersion: kubeproxy.config.k8s.io/v1alpha1

kind: KubeProxyConfiguration

mode: ipvs

kubeadm init --config=kubeadm-config.yaml --upload-certs | tee kubeadm-init.log

初始化成功,注意查看自己的token

如果不小心忘记保存或者清除了,使用命令

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

设定kubectl

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config

查看集群健康状态

kubectl get cs 

vim /etc/kubernetes/manifests/kube-scheduler.yaml

修改为master ip地址

 

vim /etc/kubernetes/manifests/kube-controller-manager.yaml

重启kubelet

再次查看集群健康状态

安装网络插件

在所有节点部署网络插件flannel

上传 flannel.tar 到/opt 目录下 ,master 节点额外上传 kube-flannel.yml 文件

cd /opt

docker load -i flannel-v0.22.2.tar 

docker load -i flannel-cni-v1.2.0.tar

将 两个文件传到node节点

scp flannel-cni-v1.2.0.tar flannel-v0.22.2.tar node01:/opt/

scp flannel-cni-v1.2.0.tar flannel-v0.22.2.tar node02:/opt/

在两个节点上进行同样的操作 (载入镜像)

应用yaml文件

kubectl apply -f kube-flannel.yml

查看 kube-flannel 命名空间内的pod

kubectl get pod -n kube-flannel

在 node 节点上执行 kubeadm join 命令加入群集

kubeadm join 172.16.233.102:6443 --token abcdef.0123456789abcdef \ 

--discovery-token-ca-cert-hash sha256:72afcf0e500aaf3838baae03b69a5d062420cdb4455ba886c2a3a42c41a4fc01

成功,我们去master节点 get node 看一下

kubectl get node

有了

再在node02 节点做同样操作

kubectl get pods -n kube-system

至此 k8s 安装完成

测试

测试一下

创建一个nginx资源

kubectl create deployment nginx --image=nginx

查看,需要稍等一下,等资源拉取成功

kubectl get pods -o wide

暴露端口提供服务

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

kubectl get svc

测试访问

curl http://172.16.233.103:32485

成功

部署Dashboard

master

上传 recommended.yaml 文件到 /opt/k8s 目录中

cd /opt/k8s

kubectl apply -f recommended.yaml

创建service account并绑定默认cluster-admin管理员集群角色

kubectl create serviceaccount dashboard-admin -n kube-system

kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

浏览器访问 https://172.16.233.103:30001

使用token登录即可


http://www.kler.cn/a/372185.html

相关文章:

  • Linux字体更新 使用中文字体
  • postman的脚本设置接口关联
  • 基于springboot+vue实现的公考知识学习平台 (源码+L文+ppt)4-103
  • 池化层笔记
  • C++ 整型大数运算(大整数运算)项目
  • GIT使用list
  • SOLID - 依赖倒置原则(Dependency Inversion Principle)
  • 流媒体协议.之(RTP,RTCP,RTSP,RTMP,HTTP)(二)
  • 如何使用python完成时间序列的数据分析?
  • QTreeWidget使用记录(1)
  • 使用linux+nginx 作为unity webgl的服务器
  • 告别资源荒!哎哟喂啊盘搜及其他良心网盘搜索引擎推荐
  • HTML--浮动布局练习
  • unity3d——单例模式,加载单例模式类问题
  • 力姆泰克伺服电动缸的优势有哪些
  • ML2021Spring-hw1(COVID-19 Cases Prediction)
  • 百度SEO分析实用指南 提升网站搜索排名的有效策略
  • unity游戏开发之赛车游戏
  • WEBRTC教程:局域网怎么调试,http://172.19.18.101:8080 ,无法访问摄像头和麦克风,请检查权限
  • 【数据库知识】oracle进阶-逻辑结构深入理解
  • 「Mac畅玩鸿蒙与硬件8」鸿蒙开发环境配置篇8 - 应用依赖与资源管理
  • QT中采用QCustomPlot 实现将buffer中的数据绘制成折线图,并且图形随着数据更新而更新
  • [LeetCode-455]基于贪心算法的分发饼干问题的求解(C语言版)
  • Jenkins 发布 Java 项目:高效持续集成与部署
  • 2024年优秀的天气预测API
  • 微短剧小程序搭建:探索数字叙事新领域