k8s搭建

硬件要求

测试环境

# master
2核 4G 20G
# node
4核 8G 40G

生产环境

# master
8核 16G 100G
# node
16核 64G 500G

方式一:基于kubeadm方式搭建

具体指令部署

1.创建一个Master节点kubeadm init
2.将Node节点加入到当前集群中$kebeadm join <Master 节点的IP和端口>

安装要求

# 节点         主机ip                操作系统       内存硬盘
master 192.168.250.136 centos7 2核/4G/20G
node1 192.168.250.137 centos7 2核/4G/40G
node2 192.168.250.138 centos7 2核/4G/40G

修改master和node服务器相关配置信息

# master和node节点
# 1.关闭防火墙
>>> systemctl stop firewalld.service
>>> systemctl disable firewalld.service
# 2.关闭selinux防火墙
>>> setenforce 0
>>> sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
>>> setenforce 0
>>> getenforce
# 3.关闭swap分区
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
# 4.master和node节点之间设置无密访问
>>> cat >> /etc/hosts << EOF
192.168.250.136 master
192.168.250.137 node1
192.168.250.138 node2
EOF
>>> scp -rp /etc/hosts root@192.168.250.137:/etc/hosts
>>> scp -rp /etc/hosts root@192.168.250.138:/etc/hosts
>>> ssh-keygen -t rsa
>>> ssh-copy-id -i root@192.168.1.137
>>> ssh-copy-id -i root@192.168.1.138
# 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 # 生效

所有节点安装Docker/kubeadm/kubelet

# 1.安装docker
>>> wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
>>> yum install -y docker-ce-18.06.1.ce
>>> systemctl enable docker && systemctl start docker
# 2.修改一下docker仓库源
>>> cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
# 3.重启docker
>>> systemctl restart docker

添加阿里云YUM软件源

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

安装kubeadm,kubelet和kubectl

>>> yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
>>> systemctl enable kubelet

部署Kubernetes Master

# 在192.168.250.136(Master)执行`
# apiserver-advertise-address修改为自己的master节点ip
>>> kubeadm init \
--apiserver-advertise-address=192.168.250.136 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 # --apiserver-advertise-address 指明用 Master 的哪个 interface 与 Cluster 的其他节点通信。如果 Master 有多个 interface,建议明确指定,如果不指定,kubeadm 会自动选择有默认网关的 interface。 # --pod-network-cidr 指定 Pod 网络的范围。Kubernetes 支持多种网络方案,而且不同网络方案对 --pod-network-cidr 有自己的要求,这里设置为 10.244.0.0/16 是因为我们将使用 flannel 网络方案,必须设置成这个 CIDR。 # --image-repository Kubenetes默认Registries地址是 k8s.gcr.io,在国内并不能访问 gcr.io,在1.13版本中我们可以增加–image-repository参数,默认值是 k8s.gcr.io,将其指定为阿里云镜像地址:registry.aliyuncs.com/google_containers。 >>> docker images # 查看拉取的镜像 # 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
# 使用kebectl工具:下面的代码在kubeadm init安装结束的最后面可以找到,执行一下就行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config >>> kubectl get nodes # 在node加入节点后,可以查看节点的状态
NAME STATUS ROLES AGE VERSION
master NotReady master 10m v1.18.0
node1 NotReady <none> 18s v1.18.0
node2 NotReady <none> 9s v1.18.0

加入kubernetes Node节点执行

# 在node1和node2节点上执行# 向集群添加新节点,执行kubeadm init输出的kubeadm join命令:下面的代码在kubeadm init执行结束的时候可以找到
>>> kubeadm join 192.168.250.136:6443 --token ygoeiv.nk8iy57zwvyycj30 \
--discovery-token-ca-cert-hash sha256:4f861bf078d636a3177a0e7b2697ed996b1ed72dd5688ed4d3a91cff8aa57704
# token有效期24小时,过期后,重新创建>>> kubeadm token create --print-join-command

部署CNI网络插件

# 修改hosts进行映射关系访问https://www.ipaddress.com/,搜索raw.githubusercontent.com,找出对应的ip
>>> vi /etc/hosts
185.199.108.133 raw.githubusercontent.com# 获取,多执行几次,网络不好的话
# 方式一 推荐方式一
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubectl apply -f kube-flannel.yml
>>> sed -i 's/quay.io/quay-mirror.qiniu.com/g' kube-flannel.yml # 修改源
# 方式二
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml# 查看集群组件是否搭建成功
>>> kubectl get pods -n kube-systemkube-flannel-ds-p4df7
0/1 Init:ImagePullBackOff 0 122mkube-flannel-ds-plpkn 1/1 Running 3 122mkube-flannel-ds-sz8b9 1/1 Running 0 82m
# 方式二出现的问题上面的flannel一直处于Init:ImagePullBackOff,这是由于拉取镜像网络的原因解决办法:去https://github.com/flannel-io/flannel/releases/tag/v0.14.0上下载flanneld-v0.14.0-amd64.docker然后上传到master服务器上
>>> docker load -i flanneld-v0.14.0-amd64.docker
>>> docker rmi quay.io/coreos/flannel:v0.14.0 # 删除之前的镜像
>>> docker tag 8522d622299c quay.io/coreos/flannel:v0.14.0 # 将我们上传的镜像重新打标签
>>> docker rmi quay.io/coreos/flannel:v0.14.0-amd64.docker # 删除上传的镜像
>>> kubectl get pods -n kube-system # 重新查看

测试集群

# master节点下载nginx
>>> kubectl create deployment nginx --image=nginx
>>> kubectl get pod # 查看pod
>>> kubectl expose deployment nginx --port=80 --type=NodePort # 对外暴露一个端口用来访问nginx
>>> kubectl get pod,svc # 查看对外暴露的端口NAME
READY STATUS RESTARTS AGEpod/nginx-f89759699-kpq4r
1/1 Running 0 3m24sNAME
TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
AGEservice/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 156mservice/nginx
NodePort 10.110.78.94 <none> 80:30015/TCP 108s
# 页面访问192.168.250.136:30015

基于kubeadm部署k8s1.80.0的更多相关文章

  1. CentOS 7.5 通过kubeadm部署k8s-1.15.0

    kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验k ...

  2. Kubernetes-v1.12.0基于kubeadm部署

    1.主机规划 #master节点(etcd/apiserver/scheduler/controller manager)master.example.cometh0: 192.168.0.135et ...

  3. 基于 kubeadm 部署单控制平面的 k8s 集群

    单控制平面不符合 HA 要求,但用于开发/测试环境不会有任何问题,如果资源足够的话(10台以上服务器,3台用于APIserver.3台用于 etcd 存储.至少3台用于工作节点.1台作为负载均衡),可 ...

  4. ubuntu 20.04 基于kubeadm部署kubernetes 1.22.4集群及部署集群管理工具

    一.环境准备: 集群版本:kubernetes 1.22.4 服务器系统 节点IP 节点类型 服务器-内存/CUP hostname Ubuntu 20.04 192.168.1.101 主节点 2G ...

  5. kubeadm部署kubernetes-1.12.0 HA集群-ipvs

    一.概述 主要介绍搭建流程及使用注意事项,如果线上使用的话,请务必做好相关测试及压测. 1.基础环境准备 系统:ubuntu TLS 16.04  5台 docker-ce:17.06.2 kubea ...

  6. centos7之使用最新版的kubeadm体验k8s1.12.0

    1.环境准备 centos7 .docker-ce18.06.1-ce.kubeadm.kubelet.kubectl 2.安装 yum安装,准备repo文件 docker: [docker-ce-s ...

  7. kubeadm部署k8s1.9高可用集群--4部署master节点

    部署master节点 kubernetes master 节点包含的组件: kube-apiserver kube-scheduler kube-controller-manager 本文档介绍部署一 ...

  8. kubernetes 实践三:使用kubeadm安装k8s1.16.0

    环境版本说明: 三台vmware虚拟机,系统版本CentOS7.6. Kubernetes 1.16.0,当前最新版. flannel v0.11 docker 18.09 使用kubeadm可以简单 ...

  9. 使用Kubespray在ubuntu上自动部署K8s1.9.0集群

    Kubespray 是 Kubernetes incubator 中的项目,目标是提供 Production Ready Kubernetes 部署方案,该项目基础是通过 Ansible Playbo ...

  10. ubuntu 20.04 基于kubeadm部署kubernetes 1.22.4集群—报错解决

    一.添加node节点,报错1 注:可以提前在各node节点上修改好(无报错无需执行此项) yang@node2:~$ sudo kubeadm join 192.168.1.101:6443 --to ...

随机推荐

  1. [转帖]CertUtil: -hashfile 失败: 0xd00000bb (-805306181)

    https://www.cnblogs.com/heenhui2016/p/de.html 使用CertUtil验证Python安装文件的时候出现了这个错误. CertUtil: -hashfile ...

  2. [转帖]paramiko简介

    https://www.cnblogs.com/qiujichu/p/12048763.html 一.什么是paramiko 要想明白什么是paramiko,要先明白ssh协议. 二.什么是ssh协议 ...

  3. [转帖]RPC 框架架构设计

    github地址:https://github.com/xiaojiesir/mini-rpc RPC 又称远程过程调用(Remote Procedure Call),用于解决分布式系统中服务之间的调 ...

  4. Loki动态展示linux本地日志

    Loki动态展示linux本地日志 背景 产品需要拆分微服务部署,直接使用K8S部署虽然比较规范但是部署时间较长. 本地文件系统部署简洁快速一些, 但是不太好直接复用一些规范的产品. 本次处理方法就是 ...

  5. vue3.2中setup语法糖父组件如何调用子组件中的方法

    父组件如何调用子组件中的方法 父组件.vue <template> <div> <aa ref="testRef"></aa> &l ...

  6. # github突破7k star 即时通讯(IM)开源项目OpenIM每周迭代版本发布

    v2.0已经重构完毕,架构更清晰,代码更规范,邀请各位参与OpenIM社区建设有兴趣的同学可以加我私聊. 目前侧正在业务开发,已提供更多功能,包括群管理,阅后即焚,朋友圈,标签下发等. web端体验: ...

  7. python2和python3的版本历史及入门书籍

    python版本历史 我们端游项目使用是python2.7版本 32位 python2 2.7.18 last version on 2020.4.20 2.7 first version on 20 ...

  8. 中文多模态医学大模型智能分析X光片,实现影像诊断,完成医生问诊多轮对话

    中文多模态医学大模型智能分析X光片,实现影像诊断,完成医生问诊多轮对话 1.背景介绍介绍 最近,通用领域的大语言模型 (LLM),例如 ChatGPT,在遵循指令和产生类似人类响应方面取得了显著的成功 ...

  9. 大语言模型的预训练[1]:基本概念原理、神经网络的语言模型、Transformer模型原理详解、Bert模型原理介绍

    大语言模型的预训练[1]:基本概念原理.神经网络的语言模型.Transformer模型原理详解.Bert模型原理介绍 1.大语言模型的预训练 1.LLM预训练的基本概念 预训练属于迁移学习的范畴.现有 ...

  10. Primo Ramdisk SCSI虚拟硬盘和Direct-IO虚拟硬盘

    Primo Ramdisk 使用不同的虚拟技术可创建两种类型的虚拟硬盘:SCSI 虚拟硬盘和 Direct-IO 虚拟硬盘. 本篇主要比较两者之间的差异. SCSI 虚拟硬盘遵循SCSI规范,行为上几 ...