技术标签: kubernetes k8s
目录
前言
k8s是一个多宿主机的容器集群管理软件,编排多台宿主机上的容器,它是一个开源的系统,可以自动部署、扩缩、管理容器的应用程序。本文将为大家详细介绍k8s部署的详细过程与注意事项。
首先准备3台全新的虚拟机,建议至少4核4G 200G,也就是说配置k8s的服务器配置尽量高。根据自己的规划配置好静态ip,修改主机名(k8smaster,k8snode-1,k8snode-2)
接下来的部署工作很多时候涉及到三台同时配置,因此可以采用所有会话同时部署的方法:
工具 --> 发送键输入到 --> 所有会话
在三台机器上同时操作:
#关闭防火墙
[root@localhost selinux]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
#关闭selinux
[root@localhost selinux]# vim /etc/selinux/config
SELINUX=disabled
#重启机器
[root@localhost selinux]# reboot
主机之间相互之间通过主机名互相访问
[root@k8smaster ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.81.97 k8snode-2
192.168.81.98 k8snode-1
192.168.81.99 k8smaster
配置主机之间为无密码登录,三台机器都需要操作,互相配置。
注意:验证是否配置成功后,一定要记得登出exit,否则会影响后续操作!!!
[root@k8smaster ~]# ssh-keygen
[root@k8smaster ~]# ssh-copy-id k8smaster
[root@k8smaster ~]# ssh-copy-id k8snode-1
[root@k8smaster ~]# ssh-copy-id k8snode-2
#验证是否配置成功
[root@k8smaster ~]# ssh k8snode-2
Last login: Mon May 15 15:03:46 2023
swap交换分区,如果机器内存不够,就会使用swap交换分区,但是swap交换分区的性能较低,k8s设计的时候为了提升性能,默认是不允许使用交换分区的。kubeadm初始化的时候会检测swap是否关闭,如果没关闭就会初始化失败。如果不想关闭交换分区,安装k8s的时候可以指定-ignore-preflight-errors=Swap来解决。
[root@k8snode-2 ~]# swapoff -a
[root@k8snode-2 ~]# cat /etc/fstab
#/dev/mapper/centos-swap swap swap defaults 0 0
[root@k8snode-2 ~]# modprobe br_netfilter
[root@k8snode-2 ~]# echo "modprobe br_netfilter" >> /etc/profile
[root@k8snode-2 ~]# cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
#加载配置文件
[root@k8snode-2 ~]# sysctl -p /etc/sysctl.d/k8s.conf
配置国内阿里云docker的repo源
[root@k8snode-2 ~]# yum install -y yum-utils
#添加阿里云的源
[root@k8snode-2 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@k8snode-2 ~]# yum install -y yum-utils device-mapper-persistrnr-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxm12-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet ipvsadm
配置安装k8s组件需要的阿里云的repo源
[root@k8snode-2 ~]# cat /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
[root@k8snode-2 ~]# yum install ntpdate -y
#跟网络时间做同步
[root@k8snode-2 ~]# ntpdate cn.pool.ntp.org
15 May 16:18:42 ntpdate[12281]: adjust time server 84.16.67.12 offset -0.018452 sec
#把时间同步做成计划任务
[root@k8snode-2 ~]# crontab -e
* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org
[root@k8snode-1 ~]# yum install docker-ce-20.10.6 -y
#设置服务开机启动
[root@k8snode-2 ~]# systemctl start docker && systemctl enable docker.service
[root@k8snode-2 ~]# cat /etc/docker/daemon.json
{
"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com"],
"exec-opts":["native.cgroupdriver=systemd"]
}
[root@k8snode-2 ~]# systemctl daemon-reload && systemctl restart dockers
kubeadm:用来初始化k8s集群
kubelet:安装在集群所有节点上,用于启动pod
kubectl:部署和管理应用,查看各种资源、创建、删除和更新各种组件
[root@k8snode-2 ~]# yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6
#设置开机启动
[root@k8snode-2 ~]# systemctl enable kubelet
将初始化k8s集群需要的离线镜像包上传至master(再scp至其他并手动解压)
[root@k8smaster ~]# scp k8simage-1-20-6.tar.gz k8snode-2:/root
[root@k8smaster ~]# scp k8simage-1-20-6.tar.gz k8snode-1:/root
导入镜像
[root@k8smaster ~]# docker load -i k8simage-1-20-6.tar.gz
使用kubeadm初始化k8s集群
[root@k8smaster ~]# kubeadm config print init-defaults > kubeadm.yaml
[root@k8smaster ~]# cat kubeadm.yaml
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 192.168.81.99 #修改成master的ip
bindPort: 6443
nodeRegistration:
criSocket: /var/run/dockershim.sock
name: k8smaster
taints:
- effect: NoSchedule
key: node-role.kubernetes.io/master
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers #修改为阿里云
kind: ClusterConfiguration
kubernetesVersion: v1.20.0
networking:
dnsDomain: cluster.local
serviceSubnet: 10.96.0.0/12
podSubnet: 10.244.0.0/16 #添加配置
scheduler: {}
--- #添加配置
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
#基于kubeadm.yaml文件初始化k8s
[root@k8smaster ~]# kubeadm init --config=kubeadm.yaml --ignore-preflight-errors=SystemVerification
成功界面:
master:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#获得加入节点的命令
[root@k8smaster ~]# kubeadm token create --print-join-command
node:
kubeadm join 192.168.81.99:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:fe393e5d1dc83d75cfa94309f5cbd2ea3a80918342ed4bed0d5868b13c7b94df
更改roles,更改标签:
[root@k8smaster ~]# kubectl label node k8snode-1 node-role.kubernetes.io/worker=worker
[root@k8smaster ~]# kubectl label node k8snode-2 node-role.kubernetes.io/worker=worker
在master上操作,上传 calico.yaml
[root@k8smaster ~]# kubectl apply -f calico.yaml
文章浏览阅读99次。适用于vue的城市选择组件仓库地址基本功能:支持全选、反选以及全部清空。支持按拼音筛选。勾选省份将会勾选省份下所有城市。返回数据可灵活处理。安装npm install cn-region-picker # 或者 yarn add cn-region-picker用法组件引入:// import包import CnRegionPicker from 'cn-..._vue城市选择组件
文章浏览阅读7.1k次,点赞3次,收藏24次。STM32是ARM Cortex-M内核单片机。目前提供10大产品线(F0, F1, F2, F3, F4, F7, H7, L0, L1,L4),超过700个型号。STM32产品广泛应用于工业控制、消费电子、物联网、通讯设备、医疗服务、安防监控等应用领域,其优异的性能进一步推动了生活和产业智能化的发展。截至2017年4月,STM32全球出货量超过24亿颗。主流型MCUSTM32F0系列 – ARM Cortex-M0入门级MCU意法半导体基于ARM Cortex-M0的STM32F0系列单片机实现了_stm32m和stm32h
文章浏览阅读165次。现在常用的依靠计算机模拟产生的伪随机数,或者从某些经典物理噪声(如热噪声,电噪声等)中提取随机数,实际上并不是正真正的随机数,因为从理论上讲,经典物理过程在考虑到所有变量的情况下是可以被模拟的。那么是否存在真正的随机数呢,随着量子力学的发展,通过量子系统产生随机数已经成为可能。_qekss
文章浏览阅读1k次。IDCardCamera项目地址:wildma/IDCardCamera 简介:Android 自定义相机实现身份证拍照,并加入自动对焦与图片不规则裁剪更多:作者 提 Bug 标签: README of English效果图..._glide裁剪身份证图片
文章浏览阅读5.1w次,点赞72次,收藏846次。毕业设计 :基于深度学习的人脸识别【全网最详细】 - opencv 卷积神经网络_基于深度神经网络的人脸识别
文章浏览阅读4.9w次,点赞144次,收藏926次。pip超详细教程,讲述了pip的安装与使用,以及解决了pip下载速度慢的问题_pip下载
文章浏览阅读431次。自定义YUM仓库安装NGINXNGINX 官方站点获取仓库地址1、官方站点说明2、获取仓库地址自定义 YUM 仓库1、创建 repo 文件2、查看 repolist3、查看 nginx 信息安装 NGINX1、安装2、查看安装生成的文件nginx unit-fileNGINX 常用命令1、nginx -h2、nginx -VNGINX 官方站点获取仓库地址1、官方站点说明Website:h..._nginx repolist
文章浏览阅读433次。1.类package test10month.test1011;import java.util.Arrays;import java.util.List;import java.util.Map;/** * 功能描述: * @version 1.0 * @className ArrayListMap * @author: 罗德 * @create: 2020-10-11 21:53 */public class ArrayListMap { private String[]_arraylist通过xml配置
文章浏览阅读1.3w次。转载时请以超链接形式标明文章原始出处和作者信息及本声明http://amazingxiu.blogbus.com/logs/62781676.html 这几天闲来无事,在看如何安装RVDS4.0,也就是RealView Development Suite 4.0
文章浏览阅读921次。同样也是非常重要的,一个产品的市场竞争力如何,很大的因素是取决于它的成本,基于成本,从两个方面考虑,第一是选择制造工艺的时候,设计者需要尽量从优从简;综上,不难发现,设计工程师需要考虑的东西非常多,稍微严格的公司,他们可能会有几十道、上百条设计规则,如果不借助工具,全部人为把控,出错的几率是很高的。可制造性设计是基于并行设计的思想,在产品的设计阶段就综合考虑制造过程中的工艺要求、测试要求和组装的合理性,通过设计的手段来把控产品的成本、性能和质量。三个比较典型的分析项为开短路分析、布线分析、孔线距离分析。.._电子产品 可制造性 设计
文章浏览阅读549次。图片必须为Sprite格式脚本拖入到物体上可以直接使用using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;using UnityEngine.SceneManagement;public class StartAnimation : M..._u3dtimeline播放图片序列
文章浏览阅读1.6w次,点赞13次,收藏46次。前文已经介绍过,向量化的表示已经在人工智能的其他领域非常常见,例如在自然语言处理中,可以为句子中的每个词学习一个向量表示(Word Embedding),在图像视频中也可以为每个视觉对象学习一个向量表示。对于知识图谱,也可以为其中的每一个实体和关系学习一个向量表示,并利用向量、矩阵或张量之间的计算,实现高效的推理计算。_知识图谱如何实现向量化