k8s基础

news2024/9/24 13:13:12

一、基本介绍

Kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful) , Kubernetes提供了应用部署,规划,更新,维护的一种机制。

二、组件介绍

1、master组件

        1)apiserver :集群统一入口.以restful方式,交给etcd存储。

        2)scheduler:节点调度,选择node节点应用部署。

        3)controller-manager:处理集群中常规后台任务,—个资源对应一个控制器。

        4)ecd:存储系统,用于保存集群相关的数据。

2、node组件

        1)kubeelet:master排到node节点代表,管理本机容器。

        2)kube-proxy:提供网络代理,负载均衡等操作。

三、核心概念

1、Pod

        1)最小部署单元
        2)一组容器的集合
        3)共享网络
        4)生命周期是短暂的

2、controller

        1)确保预期的pod副本数量
        2)无状态应用部署
        3)有状态应用部署
        4)确保所有的node运行同一个pod
        5)一次性任务和定时任务

3、service

        定义pod访问规则

四、单master搭建集群

常用命令

咳咳咳

开启三台虚拟机演示:

环境:三台Ubuntu18

 

1、系统初始化

1)关闭防火墙

ufw disable

2)关闭selinux

永久关闭:sed -i 's/enforcing/disabled' /etc/selinux/config 

临时关闭:setenforce 0

3)关闭swap分区

 这3个地方必须是0。

临时关闭:swapoff -a

永久关闭:sed -ri 's/.*swap.*/#&/' /etc/fstab

4)在master添加主机主机ip和hostname

cat >> /etc/hosts << EOF
192.168.186.110 k8s-cluster-master
192.168.186.111 k8s-cluster-node1
192.168.186.112 k8s-cluster-node2
EOF

# 当然在之前也要分别重新命名三台主机的hostname

hostnamectl set-hostname k8s-master

hostnamectl set-hostname k8s-node1

hostnamectl set-hostname k8s-node2

5)把桥接的IPv4流量传递到iptables的链 (每台执行)

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

# 生效
sysctl --system 

6)时间同步,借助插件来完成

apt-get install ntpdate -y

ntpdate time.windows.com

 7)修改内核参数

# 修改内核参数(首先确认你的系统已经加载了 br_netfilter 模块,默认是没有该模块的,需要你先安装 bridge-utils)
apt-get install -y bridge-utils
modprobe br_netfilter
lsmod | grep br_netfilter 

2、安装k8s核心组件

1)安装docker

https://docs.docker.com/engine/install/ubuntu/

安装上面官网提示安装即可,租后配置一下阿里安装源

# 添加阿里云安装源的密钥

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# 添加阿里云安装源
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

2)  添加阿里云安装源

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF > /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

3)安装三驾马车

apt update && \

apt-get install -y kubelet=1.20.9-00  kubeadm=1.20.9-00 kubectl=1.20.9-00

# 开机启动

systemctl enable kubelet

3、容器化安装其他插件

可以按照下面的命令把需要下载的进行写成shell再执行,当然你自己一条一条执行也行。

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

 images.sh

#!/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

4、配置Master

1)配置hosts

vim /etc/hosts

192.168.186.111 k8s-cluster-master

 配置完ping一下是否通,如果你买了域名,做了域名解析这步就不用了

2)只在master执行,主节点初始化

kubeadm init \
--apiserver-advertise-address=192.168.186.110 \
--control-plane-endpoint=k8s-cluster-master \
--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.169.0.0/16

 

说明成功了!!!

service-cidr和 pod-network-cidr还有masterip不能有同网段的情况,否则可能后续会有问题。

---如果遇到报错 

 ---设置环境变量

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile

重新加载文件:source /etc/profile 

---kubectl get node 查看是否可以获取到master节点

---如果后续有问题最好重新初始化master再往下走

kubeadm reset

rm -rf /root/.kube

rm -rf /etc/cni/net.d

# work节点需要删除

rm -rf /etc/kubernetes/*

---安装要求,直接复制执行就可以

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

3)安装网络插件calico

因为在整个kubernetes集群里,pod都是分布在不同的主机上的,为了实现这些pod的跨主机通信所以我们必须要安装CNI网络插件,这里选择calico网络。

首先查看自己的k8对应的calico的版本再下载

查看k8s对应的calico的版本 https://projectcalico.docs.tigera.io/archive/v3.20/getting-started/kubernetes/requirements

下载下来引导文件,运行

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

kubectl apply -f calico.yaml

如果前面初始化节点的service-cidr不是默认的 192.168.0.0/16,那么需要再配置文件里做修改

 

如果有pandding等其他状态的多等一会,就好了

 再看下节点情况

kubectl get nodes

 master也ready了,到这里maste节点部署完毕

5、配置worker节点

在master节点获取加入集群命令:24小时有效

kubeadm token create --print-join-command

 获取完在worker执行

 等所有容器running后就算加入完毕

# 每一秒查看一次状态

watch -n 1  kubectl get  pod -A

6、安装图形操作界面dashboard

1)直接安装

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

 等待一会就会创建成功。

 2)过程可能会遇到的问题:

 查看日志

kubectl logs -f -n kubernetes-dashboard  kubernetes-dashboard-658485d5c7-mrs9k

 发现timeout了,推测是防火墙问题

iptables -L -n --line-numbers | grep dashboard

访问被拒绝了,添加允许被访问

iptables-save > iptables.rules

iptables -P INPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -P OUTPUT ACCEPT

iptables -F

然后删除新创建的dashboard

kubectl delete deployment kubernetes-dashboard --namespace=kubernetes-dashboard

kubectl delete deployment dashboard-metrics-scraper --namespace=kubernetes-dashboard

重启docker后再重新创建即可。

3)端口暴露

kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard

 把type修改一成:NodePort

kubectl get svc -A | grep kubernetes-dashboard

或者

kubectl get services -n kubernetes-dashboard

30673就是我要的端口,你 的和我的不一样,自己查看即可。然后浏览器登录

 4)创建用户登录

# 创建一个叫dashboard-admin的账号,并指定命名空间为kube-system
kubectl create serviceaccount dashboard-admin -n kube-system
# 创建一个关系,关系名为dashboard-admin,角色为cluster-admin,账户为kube-system命名空间下的dashboard-admin账号
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
# 查看Token的编号(第二列)
kubectl get secrets --all-namespaces | grep -i dashboard-admin
# 查看指定Token的编号的具体token值
kubectl describe secret/dashboard-admin-token-hfqg9 -n kube-system

然后用token登录即可 

到这里完毕! 

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

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

相关文章

Linux 下 python3.9.8的安装

1. 准备安装环境 yum install gcc zlib* openssl* -y 2. linux 下 python 安装包的获取 官网下载地址: https://www.python.org/downloads/ 找到 自己想要的版本。 方式一&#xff1a;直接点击该链接下载&#xff0c;然后将安装包通过xftp 传送到远程服务器 的 /opt 路…

k8s之搭建单机集群

写在前面 本文一起看下如何在单机环境下搭建k8s集群。 基础环境准备参考这篇文章 。 1&#xff1a;k8s的前世今生 现在当我们提到容器技术时&#xff0c;首先想到的肯定是docker&#xff0c;但其实在docker之前&#xff0c;谷歌公司就已经有了类似的技术&#xff0c;我们知道…

借助免费AI艺术平台生成头像

随着 AI 的兴起&#xff0c;看到越来越多的实例通过 OpenAI 的举措变得轻松&#xff0c;使得 AI 艺术在今天早已不是什么新鲜事物&#xff0c;而且在游戏领域也开始有所应用。人工智能&#xff08;AI&#xff0c;artificial intelligence&#xff09;艺术&#xff0c;更准确地说…

数据挖掘与机器学习作业_09 贝叶斯

贝叶斯 贝叶斯公式 后验概率 先验概率 * 似然估计 from sklearn.model_selection import GridSearchCV from sklearn.naive_bayes import BernoulliNB from sklearn.naive_bayes import GaussianNB from sklearn.naive_bayes import MultinomialNB from sklearn.naive_bayes…

关于进程间的通信方式的总结

一、背景 在人类思想史上,马克思第一次对人的本质作出科学界定:人的本质是一切社会关系的总和。时间万物都存在或多或少的关系。那么人除了天生父子这样的家族关系&#xff0c;还有后天 通过 语言 &#xff0c;这样区别于其他动物的方式来进行和其他人的交流产生关系。 在计算…

PTL仓库提货解决方案

电子标签拣货系统是采用先进电子技术和通信技术开发而成的物流辅助作业系统&#xff0c;通常使用在仓储或现代化物流中心分拣环节&#xff0c;具有拣货速度快、效率高、差错率低、无纸化、标准化的作业特点&#xff0c;电子标签辅助拣货系统作为一种先进的作业手段&#xff0c;…

【小程序】如何开发属于自己的一款小程序

文章目录小程序简介概念小程序与普通网页开发的区别微信开发者工具小程序代码构成项目结构JSON 配置文件WXML 模板WXSS 样式JS 逻辑交互小程序的宿主环境宿主环境简介通信模型运行机制组件常用的视图容器类组件常用的基础内容组件其它常用组件API协同工作小程序成员管理小程序的…

数据完整性测试之【三】Redis缓存和数据库表里的记录

本文为博主原创&#xff0c;未经授权&#xff0c;严禁转载及使用。 本文链接&#xff1a;https://blog.csdn.net/zyooooxie/article/details/119377944 前面分享过 接口返回值 和 表记录 的校验 、 导出的CSV、Excel文件 和 表记录 的校验&#xff0c;最近 我们项目常常用到Re…

【大小端问题】

什么是大小端&#xff1f; 为什么存在大小端&#xff1f;如何判断计算机的大小端存储模式&#xff1f; 大小端是什么&#xff1f; 计算机在内存存储中有两中存储模式&#xff1a; 大端字节序存储模式和小端字节序存储模式。 大端存储模式&#xff0c;是指数据的低位保存在内…

API接口测试简介

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是API接口测试简介。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁对未授权设备…

Hadoop高手之路8-Flume日志采集

文章目录Hadoop高手之路8-Flume日志采集一、Flume概述1. Flume简介2. Flume运行机制3. Flume日志采集系统结构图二、Flume的搭建1. 下载2. 上传3. 解压4. 配置环境变量5. 配置flume三、Flume入门使用1. 配置数据采集方案1) 查看官网2) 案例需求3) 创建新的配置文件4) 复制官网的…

公司业财一体化详解

一、传统财务会计如何手工做账1.没有财务系统&#xff08;软件&#xff09;时公司会计用手工记账&#xff0c;流程包括&#xff1a;建立总账&#xff1b;首先建立账簿&#xff0c;登记会计账簿时&#xff0c;应当将会计凭证日期、编号、业务内容摘要、金额和其他有关资料逐项计…

GAMES101作业5及框架梳理

闲言碎语 emmm&#xff0c;上一次写还是2022年4月份的事情了&#xff0c;真的有点恍如隔世&#xff0c;4月到9月主要是在准备保研的事情&#xff0c;然后10月到12月基本上是在适应实习生活&#xff08;没错&#xff0c;保完研之后因为种种原因就直接开始实习了&#xff0c;害&…

[Vue]Vue3学习笔记(尚硅谷)

文章目录&#x1f97d; 创建Vue3项目&#x1f30a; vue-cli&#x1f30a; vite&#x1f97d; 项目结构&#x1f97d; Vue3开发者工具的安装&#x1f97d; 初识setup&#x1f97d; ref 函数&#x1f97d; reactive函数&#x1f97d;Vue3.0中的响应式原理&#x1f30a; vue2.x的响…

微服务架构解决方案介绍

1、微服务架构 目前微服务是非常火的架构或者说概念&#xff0c;也是在构建大型互联网项目时采用的架构方式。 1.1 单体架构 在软件设计中&#xff0c;经常提及和使用经典的3层模型&#xff0c;即表示层、业务逻辑层和数据访问层。 表示层&#xff1a;用于直接和用户交互&a…

内网穿透(mac,window,linux通用)1分钟实现外网访问电脑本地服务器

我们在做开发时&#xff0c;不想购买服务器&#xff0c;只想搭建我们本地的服务器&#xff0c;我们搭建的本地服务器只能供我们自己电脑的浏览器访问&#xff0c;或者处于同一个wifi下的手机访问&#xff0c;但是我们如果想让别人访问到我们的本地服务器&#xff0c;尤其做微信…

共享模型之管程(三)

1.Synchronized优化原理 1.1.轻量级锁(Lock Record) 1.1.1.简介 1>.轻量级锁的使用场景:如果一个对象虽然有多个线程访问,但是多个线程访问的时间是错开的(即没有竞争),那么可以使用轻量级锁来进行优化; 2>.轻量级锁对使用者是透明的,即语法仍然是"synchronized…

docker减少构建镜像大小

目录 1.原镜像大小 1.1 Dockerfile文件 1.2 hello文件 1.3 进入文件夹myprojecthello打包镜像 1.4查看打包的镜像 2.通过拆分文件夹减少镜像大小 2.1 创建两个文件夹 2.2 移动文件 2.3 打包镜像 3. 通过 .dockerignore 文件的方式 3.1 创建 world.txt文件 3.2 创建 …

【Spring(三)】DI入门案例(XML版)

文章目录前言DI入门案例总结前言 前面我们已经演示了IOC入门案例的介绍&#xff0c;里边还有一些东西是耦合的&#xff0c;接下来我们就来学习DI的入门案例来解决这个问题&#x1f4aa;&#x1f4aa;。 DI入门案例 我们先来想一下&#xff0c;你做DI这个首先得先让IOC容器管着b…

STM32 TIM PWM中阶操作:互补PWM输出

STM32 TIM PWM中阶操作详解&#xff1a;互补PWM输出 STM32 TIM可以输出管脚PWM信号适合多种场景使用&#xff0c;功能包括单线/非互补PWM输出&#xff0c;双线/互补PWM输出&#xff0c;以及死区时间和刹车控制等。 实际上&#xff0c;因为早期IP Core的缺陷&#xff0c;早期的…