kubenates的傻瓜式部署教程(K8S部署教程)

推荐配置

主节点2C4G,两个从节点2C2G即可
操作系统我用的centos

一、Dokcer环境安装(阿里云环境)

1.1 下载docker实例

sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.2 安装

sudo yum -y install docker-ce

1.3 检查是否安装成功

sudo docker -v

1.4 启动docker服务

sudo systemctl start docker

1.5 设置开机自启动

sudo systemctl enable docker

1.6 检查docker的服务状态

sudo systemctl status docker

二、K8S安装前环境配置

2.1 设置各个节点名称

hostnamectl set-hostname 节点名称

2.2 禁用linux的安全设置

2.2.1 临时禁用

sudo setenforce 0
# (响应结果为setenforce: SELinux is disabled即为正确)

2.2.2 永久禁用

sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

2.3 关闭swap分区

2.3.1 临时关闭

swapoff -a  

2.3.2 永久关闭

如果是非root用户请添加sudo授权

sed -ri 's/.*swap.*/#&/' /etc/fstab

2.4 允许iptables检查桥接流量

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOFcat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

2.5 更新配置

sudo sysctl --system

三、K8S环境的核心依赖安装

3.1 配置kubelet、kubeadm、kubectl的下载源信息

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
exclude=kubelet kubeadm kubectl
EOF

3.2 下载并安装

sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes

3.3 启动kubelet并设置开机启动

sudo systemctl enable --now kubelet

3.4 检查kubelet启动状态(因为还没装kubeadm,所以状态为running和exited两种都为正常)

systemctl status kubelet

3.5 依赖镜像下载

编写执行脚本

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

四、K8S节点初始化

4.1 为所有节点添加主节点域名映射(可以通过ip a命令查看master主机ip地址)

echo "172.26.132.136  cluster-endpoint" >> /etc/hosts

4.2 初始化master节点(仅在master节点运行)

service-cidr网段及pod-network无需更改

kubeadm init \
--apiserver-advertise-address=172.26.132.136 \
--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

安装成功(一定要保存,后面加入子节点需要使用):

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/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou 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/You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:kubeadm join cluster-endpoint:6443 --token 4612mg.3xomnt3l1zfhc6ye \--discovery-token-ca-cert-hash sha256:93c235c16e18e8f0db8cd4990343c70ec9ad16397154e52d50b6529e51b0514e \--control-plane Then you can join any number of worker nodes by running the following on each as root:kubeadm join cluster-endpoint:6443 --token 4612mg.3xomnt3l1zfhc6ye \--discovery-token-ca-cert-hash sha256:93c235c16e18e8f0db8cd4990343c70ec9ad16397154e52d50b6529e51b0514e 

4.3 根据安装成功官方建议配置kubeadm(仅在master节点运行)

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

查看当前节点注册状态

kubectl get nodes

4.4 注册网络插件(仅在master节点运行)

下载配置文件:

curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O

应用配置文件(重要命令)

kubectl apply -f calico.yaml

查看k8s集群部署的应用

kubectl get pods -A

如果出现异常,可以查看kube状态(仅出现问题时排查使用,无异常可忽略)

kubectl get cs

如果发现controller-manager和scheduler 出现 Get http://127.0.0.1:10252/healthz: dial tcp 127.0.0.1:10252: connect: connection refused 是由于配置文件中默认port设置为0的缘故,我们需要修改一下(仅出现问题时排查使用,无异常可忽略)

# 进入配置文件路径
cd /etc/kubernetes/manifests
# 查看文件
ls

修改kube-controller-manager.yaml和kube-scheduler.yaml(修改前请记得备份)
将port = 0 注释(仅出现问题时排查使用,无异常可忽略)

#参考 请勿复制  kube-controller-manager.yaml
spec:containers:- command:- kube-controller-manager- --allocate-node-cidrs=true- --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf- --authorization-kubeconfig=/etc/kubernetes/controller-manager.conf- --bind-address=127.0.0.1- --client-ca-file=/etc/kubernetes/pki/ca.crt- --cluster-cidr=10.244.0.0/16- --cluster-name=kubernetes- --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt- --cluster-signing-key-file=/etc/kubernetes/pki/ca.key- --controllers=*,bootstrapsigner,tokencleaner- --experimental-cluster-signing-duration=876000h- --kubeconfig=/etc/kubernetes/controller-manager.conf- --leader-elect=true- --node-cidr-mask-size=24#    - --port=0  注释掉这里
#参考 请勿复制 kube-scheduler.yaml
spec:containers:- command:- kube-scheduler- --authentication-kubeconfig=/etc/kubernetes/scheduler.conf- --authorization-kubeconfig=/etc/kubernetes/scheduler.conf- --bind-address=127.0.0.1- --kubeconfig=/etc/kubernetes/scheduler.conf- --leader-elect=true#    - --port=0
  • 重启kubelet(仅出现问题时排查使用,无异常可忽略)
systemctl restart kubelet

最后查看状态,正常即可。

4.5 加入工作节点

通过启动kubeadmin给的命令启动(关键字:Then you can join any number of worker nodes by running the following on each as root

kubeadm join cluster-endpoint:6443 --token 4612mg.3xomnt3l1zfhc6ye \--discovery-token-ca-cert-hash sha256:93c235c16e18e8f0db8cd4990343c70ec9ad16397154e52d50b6529e51b0514e 

如果刚才的令牌在运行阶段忘记保存,可以在master节点重新生成新的令牌

kubeadm token create --print-join-command

五、部署可视化面板(在主节点运行)

5.1 获取dashbord配置文件并部署

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

5.2 修改dashbord访问端口配置

kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
# type: ClusterIP 改为 type: NodePort
# 输入i进入输入模式 esc后输入:进入命令号,wq保存并退出

5.3 获取dashbord生成的随机端口号,并在防火墙(安全组)中配置放行

kubectl get svc -A |grep kubernetes-dashboard
## 找到端口,在安全组放行 这里可以页面配置 

访问链接: https://master节点公网地址+生成的随机端口

如果出现浏览器安全选项可以刷新后用英文输入法输入thisisunsafe

5.4 创建访问账号

vi dash.yaml
#将下面的配置粘贴进去
apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-user
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard

应用配置文件

kubectl apply -f dash.yaml

5.5 获取访问令牌

#获取访问令牌(注意复制到root@之前)
kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"

部署指南到此完结撒花,后面会继续出k8s的使用指南

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/175770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode】69. x的平方根

69. x的平方根 难度&#xff1a;简单 题目 给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。 由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被 舍去 。 **注意&#xff1a;**不允许使用任何内置指数函数和算符&#xff0c;例如…

人工智能 -- 技术概览

1、我们身处人工智能的时代 人们从早期做web开发&#xff0c;到移动端的开发&#xff1b;之后随着数据量的增大&#xff0c;人们开始研究高并发的问题&#xff1b;当数据量不断的增大&#xff0c;而人们希望数据不被浪费时&#xff0c;产生了大数据的技术&#xff0c;包括&…

正则表达式 通配符 awk文本处理工具

目录 什么是正则表达式 概念 正则表达式的结构 正则表达式的组成 元字符 元字符点&#xff08;.&#xff09; 代表字符. 点值表示点需要转义 \ r..t 代表r到t之间任意两个字符 过滤出小写 过滤出非小写 space空格 [[:space:]] 表示次数 位置锚定 例&#xff1a…

第三节HarmonyOS DevEco Studio了解基本工程目录

一、工程级目录 工程的目录结构如下。 目录详情如下&#xff1a; AppScope&#xff1a;存放应用全局所需要的资源文件。Entry&#xff1a;应用的主模块&#xff0c;存放HarmonyOS应用的代码、资源等。oh_modules&#xff1a;工程的依赖包&#xff0c;存放工程依赖的源文件。b…

Umi-OCR图片批量识别文字工具

OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/粘贴/批量导入图片&#xff0c;段落排版/排除水印&#xff0c;扫描/生成二维码。内置多国语言库。 项目地址&#xff1a;https://github.com/hiroi-sora/Umi-OCR

app分发平台应用费用一般要怎么评估的?

评估app分发平台应用的费用&#xff0c;需要考虑多个因素&#xff0c;包括但不限于以下几点&#xff1a; 项目范围和工作量&#xff1a;全面评估项目的范围和工作量&#xff0c;包括项目目标、技术、设计和开发周期等&#xff0c;有助于确定所需的团队规模、时间和预算。预算制…

深度学习之图像分类(十四)CAT: Cross Attention in Vision Transformer详解

IPSA和CPSA的处理流程、维度变换细节 FLOPs的计算方法、以及flops和划分的patch数目以及patch的维度计算关系 IPSA如何进行local attention、CPSA如何进行globe attention CAT的代码详细注释---需要学习完Transformer TNT、swin transformer、crossViT CAT: Cross Atten…

C语言——打印出所有的“水仙花数”

所谓水仙花数,是指一个3位数,其各位数字立方和等于该数本身。水仙花数是指一个三位数&#xff0c;它的每个位上的数字的立方和等于它本身。例如&#xff0c;153是一个水仙花数&#xff0c;因为1^3 5^3 3^3 153。 #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>…

Scrapy爬虫异步框架(一篇文章齐全)

1、Scrapy框架初识 2、Scrapy框架持久化存储&#xff08;点击前往查阅&#xff09; 3、Scrapy框架内置管道&#xff08;点击前往查阅&#xff09; 4、Scrapy框架中间件&#xff08;点击前往查阅&#xff09; Scrapy 是一个开源的、基于Python的爬虫框架&#xff0c;它提供了…

第71讲:MySQL锁机制详解:表级锁、元数据锁和意向锁的全面解析与实践指南

MySQL中的表级锁 文章目录 MySQL中的表级锁1.MySQL中表级锁的概念2.表锁的概念以及基本使用2.1.表锁的分类以及概念2.2.表锁的使用语法2.3.表共享读锁的基本使用2.4.表独占写锁的基本使用 3.元数据锁的概念以及基本使用3.1.元数据锁的概念3.2.常见的SQL操作所对应的元数据锁3.3…

npm中的npx命令

1.概念 npx是一个执行npm软件包的二进制文件&#xff0c;通俗的讲&#xff0c;他可以执行npm的一些指令。 2.示例 用babel将ES6语法转为ES5语法 npx babel src/js -d dist/js会执行babel的相关功能&#xff0c;如果没有安装&#xff0c;也会自动安装。 当在执行npx <co…

sqli-labs靶场详解less-24(二次注入)

less-24 对于一个像我一样的小白来说这关就像php代码审计 一开始进行判断注入点的时候怎么都找不到一点思路都没有 只能搜教程 说是二次注入 从来没遇见的题型 于是从代码审计开始 先说一下什么叫二次注入 二次注入 二次注入是指通过SQL语句存储到数据库的用户输入被读取后再次…

linux 安装 mvn

mvn 下载地址&#xff1a;https://maven.apache.org/download.cgi 选择一个合适的版本 cd /opt && curl -o apache-maven-3.8.6-bin.tar.gz https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz tar -xzf apache-maven-3.8.6-bin.…

随手写了个博客多平台发布脚本:Python自动发布文章到Wordpress

​ 引言 作为一名技术博主&#xff0c;提高博客发布效率是我们始终追求的目标。在这篇文章中&#xff0c;我将分享一个基于Python的脚本&#xff0c;能够实现博客多平台发布&#xff0c;具体来说&#xff0c;是自动发布文章到WordPress。通过这个简单而高效的脚本&#xff0c…

Ubuntu中docker部署-----( 在线,离线 )部署------x86架构arm模拟器部署arm版docker

测试说明 本次测试使用环境: 测试方式:win10专业版,在vmware中安装ubuntu22.04版本虚拟机(均为x86架构)在ubuntu22.04虚拟机中安装x86架构20.10.21版本dockerdocker中安装22.04版本ubuntu容器测试arm版本的docker安装aarch64版本的qemu模拟器,并安装aarch64版本ubuntu22.04版…

uni-app x生成的安卓包,安装时,提示不兼容。解决方案

找到 manifest.json 进入&#xff1a;源码视图 代码 {"name" : "xxx康养","appid" : "__xxx6","description" : "xxx康养","versionName" : "1.0.12","versionCode" : 100012,&…

sqli-labs靶场详解(less17-less22)

目录 less-17 less-18 less-19 less-20 less-21 less-22 less-17 修改密码关卡 服务器后端 账号密码都存在数据库中 使用UPDATE进行修改密码 尝试username处 尝试好久尝试不出来应该是对用户名进行了过滤 于是对password进行注入 判断注入点 passwdadmin 报错&#xff1a…

有手就会的产品宣传册制作步骤,一定要收藏!

产品宣传册制作就是为了扩大宣传企业产品&#xff0c;让大众了解和认识产品&#xff0c;从而对产品产生信任。但是&#xff0c;制作一本让人满意的产品宣传册并不容易&#xff0c;很多人都觉得很难&#xff0c;尤其是新手小白。 其实&#xff0c;这些都不是问题&#xff0c;只…

滑块验证码之图片距离计算

滑块验证码之图片距离计算 1.使用工具 vscodepython3.8 2.安装opencv-python python -m pip install opencv-python -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com查看安装的版本&#xff1a; C:\Users\wenhz>pip list|findstr opencv opencv-pyt…

初次尝试http OAuth2验证的请求

第一次对接OAuth2验证的接口&#xff0c; 莫不着门道&#xff0c;后面获取token成功后&#xff0c;发现其实不难&#xff0c; 用postman举例&#xff1a; 其实挺简单。用客户端id秘钥 获取token---》后面的请求带上token 1,在head中增加 Authorization头 内容格式如上图&…