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

K8S环境搭建

K8S环境搭建

前置条件
  • 部署3台VM,一台作为master,两台作为slave
  • 需要保障vm之间网络是互通的

为vm安装docker

# 安装/更新 yum-utils
yum install -y yum-utils#添加阿里镜像稳定版仓库
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#安装最新版docker
sudo yum install -y docker-ce docker-ce-cli containerd.io#安装完成后启动docker
sudo systemctl start docker#检查docker运行状态
sudo service docker status

配置docker镜像加速

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]//修改为你自己的镜像加速地址
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

查看加速是否配置成功

sudo docker info

在这里插入图片描述

关闭交换区

# 查看 交换分区
free -m# 将 SELinux 设置为 permissive 模式(相当于将其禁用)  第一行是临时禁用,第二行是永久禁用
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config# 关闭swap;第一行是临时禁用,第二行是永久禁用
swapoff -a  
sed -ri 's/.*swap.*/#&/' /etc/fstab# 允许 iptables 检查桥接流量 (K8s 官方要求)
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF# 让配置生效
sysctl --system

在这里插入图片描述

# 禁用 selinux
vim /etc/selinux/config
SELINUX=disabled# 关闭swap
swapoff -a  # 临时
vim /etc/fstab  # 永久
# 注释下面这行
#/dev/mapper/centos-swap swap                    swap    defaults        0 0# 查看是否成功
free -m
安装K8S三大件

安装 kubelet、kebeadm、kubectl

# 配置 k8s 的 yum 源地址
cat <<EOF | sudo tee /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.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
# 安装 kubelet、kubeadm、kubectl
yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes# 启动kubelet
systemctl enable --now kubelet# 查看 kubelet 状态:一会停止 一会运行。 这个状态是对的,kubelet 等待 kubeadm 发号指令。
systemctl status kubelet

在这里插入图片描述

在这里插入图片描述

下载master节点组件

# 配置镜像,生成 images.sh
sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOF# 拉取镜像
chmod +x ./images.sh && ./images.sh
  • 建议为三台机器同时安装,不用区分对待,如需单独下载可以使用如下命令
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/kube-proxy:v1.20.9

在这里插入图片描述

初始化主节点

# 所有机器添加 master 域名映射,以下 IP 为 master 的 IP;
# 访问 cluster-endpoint 即 访问 172.31.0.4
echo "10.187.99.123 cluster-endpoint" >> /etc/hosts# 主节点初始化 (只在 master 服务器执行, 其他 node 不用)
# --apiserver-advertise-address: master 的 IP
# --control-plane-endpoint: master 的域名
# --service-cidr 和 --pod-network-cidr 是网络范围,建议不要改。要改的话 2 个cidr 和 vps(172.31.x.x) 的,3 个网络互相不能重叠;还要修改 calico.yaml的 IP(下图有写)。
kubeadm init \
--apiserver-advertise-address=10.187.99.123 \
--control-plane-endpoint=cluster-endpoint \
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=192.168.0.0/16

在这里插入图片描述

安装网络插件calico

# 下载配置文件
curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O
# 加载配置
kubectl apply -f calico.yaml 

生成新令牌

kubeadm token create --print-join-command
部署dashboard

kubernetes官方提供的可视化界面

https://github.com/kubernetes/dashboard

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml

遇到浏览器无法访问,按照以步骤处理

  • 在master节点创建存放证书目录

    mkdir /root/key && cd /root/key
    
  • 在master节点生成证书

    openssl genrsa -out dashboard.key 2048 
    openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=192.168.1.31'
    openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
    
  • 在master节点删除原来的证书

    kubectl delete secret kubernetes-dashboard-certs -n kubernetes-dashboard
    
  • 在master节点创建新的证书

    kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kubernetes-dashboard
    
  • 在master节点查看pod

    kubectl get pod -n kubernetes-dashboard
    
  • 在master节点删除pod,使其重新创建

    kubectl delete  pod kubernetes-dashboard-85f59f8ff7-zhbsd  -n kubernetes-dashboard
    
  • 在master节点等待pod重新起来进行测试,观察到正常

在这里插入图片描述

http://www.lryc.cn/news/192784.html

相关文章:

  • 常用的软件项目管理工具一览
  • 关于网络协议的若干问题(五)
  • TensorFlow入门(十七、神经元的拟合原理)
  • VSCODE配置C和C++
  • 位于同一子网下的ip在子网掩码配置错误的情况下如何进行通信(wireshrak抓包分析)
  • Dockerfile镜像实战
  • 企业如何选择安全又稳定的文件传输协议
  • Linux Kernel 4.13 RC6发布:正式版9月3日发布
  • C++学习——C++中const的新花样
  • 【Linux环境搭建】五、Linux(CentOS7)编译源码安装Subversion
  • 微信小程序入门讲解【超详细】
  • AtCoder ABC239G 最小割集
  • Simple RPC - 01 框架原理及总体架构初探
  • VScode运行C/C++
  • #智能车项目(三)串口初始化
  • 网络通信错误代码列表 HTTP 、FTP
  • 最新开源ThinkPHP6框架云梦卡社区系统源码/亲测可用(全新开发)
  • [ROS2系列] ubuntu 20.04测试rtabmap
  • 【Java学习之道】JavaFx 框架与组件介绍
  • Windows bat 脚本设计-开机自启动服务的方法、bat 调用另外的 bat 脚本 -没有java环境也能运行jar,在不安装jdk下如何运行jar包
  • zabbix触发器与动作
  • 华纳云:Nginx服务器可视化配置问题怎么解决
  • C指针与一维二维数组、数组指针与指针数组、函数指针_数组的理解使用
  • 安装运行vue-element-admin的报错问题-解决办法
  • 高数笔记03:几何、物理应用
  • js + selenium 获取chatgpt的accessToken
  • Spring MVC 十一:中文乱码
  • Excel恢复科学技术法显示的数据
  • springboot 志同道合交友网站演示
  • 如何理解BFC、开启BFC、BFC解决哪些问题