Kubernetes系列(三) - 通过Kubeadm部署kubernetes
1. Kubeadm简介
kubeadm是k8s官方提供的,用于新入门人员快速部署一套kubernetes集群的一种简单的方法
2. 本次操作的机器配置
- 两台1核2G的阿里云
- centos 7.6
- 内网互通
配置远低于官方的要求,但是用于学习用途足矣
3. 部署步骤
- 以下不做特殊说明默认所有机子都执行
3.1 准备工作
# 更新系统和软件包
yum update
# 设置主机名(master node 名字分开)
hostnamectl set-hostname k8s-master
# 同步时间
systemctl restart chronyd
# 添加host
# 以下ip是两台机子的内网ip
cat >> /etc/hosts <<EOF
172.19.227.80 k8s-master
172.19.138.68 k8s-node01
EOF
# 设置两台机子间无密码访问
ssh-keygen -t rsa
ssh-copy-id root@k8s-master
ssh-copy-id root@k8s-node01
# 关闭防火墙和iptables
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl stop iptables.service
systemctl disable iptables.service
# 关闭SELinux
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
# 关闭swap
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
3.2 安装docker
# master执行以下转到repo目录
cd /etc/yum.repos.d/
# master执行下载docker阿里云镜像
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# master同步到其他服务器
scp docker-ce.repo k8s-node01:/etc/yum.repos.d/
# 安装docker(各个都要装)
yum -y install docker-ce
# 修改配置
nano /usr/lib/systemd/system/docker.service
# master增加一行如下
ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT
# 配置阿里云镜像加速
sudo mkdir -p /etc/docker
# 注意这里的链接要换成自己账号的镜像加速
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
}
EOF
# 重启docker
systemctl daemon-reload
systemctl start docker
systemctl enable docker
systemctl restart docker
3.3 安装kubeadm, kubectl, kubelet
# master执行以下
cd /etc/yum.repos.d/
nano kubernetes.repo
# 添加如下内容
[kubernetes]
name=Kubernetes Repository
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
# master检查仓库
yum repolist
yum list all | grep "^kube"
# master执行安装
yum install kubeadm kubelet kubectl -y
# 检查安装
rpm -ql kubectl
rpm -ql kubeadm
# master上把仓库拷贝过去
cd /etc/yum.repos.d/
scp kubernetes.repo k8s-node01:/etc/yum.repos.d/
# 所有node安装kubelet kubeadm
yum install kubelet kubeadm -y
# master和node执行以下
systemctl enable kubelet.service
# master查看所需的镜像
kubeadm config images list
# 所有机器都执行以下的拉取镜像的操作
# 由于kubeadm依赖国外的k8s.gcr.io的镜像,国内被墙所以这边的解决方案是下载国内的镜像重新打tag的方式
docker pull lzw5399/kube-proxy:v1.18.3
docker pull lzw5399/kube-apiserver:v1.18.3
docker pull lzw5399/kube-controller-manager:v1.18.3
docker pull lzw5399/kube-scheduler:v1.18.3
docker pull lzw5399/coredns:1.6.7
docker pull lzw5399/etcd:3.4.3-0
docker pull lzw5399/pause:3.2
# 修改tag
docker tag lzw5399/kube-proxy:v1.18.3 k8s.gcr.io/kube-proxy:v1.18.3
docker tag lzw5399/kube-apiserver:v1.18.3 k8s.gcr.io/kube-apiserver:v1.18.3
docker tag lzw5399/kube-controller-manager:v1.18.3 k8s.gcr.io/kube-controller-manager:v1.18.3
docker tag lzw5399/kube-scheduler:v1.18.3 k8s.gcr.io/kube-scheduler:v1.18.3
docker tag lzw5399/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7
docker tag lzw5399/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
docker tag lzw5399/pause:3.2 k8s.gcr.io/pause:3.2
# 移除没用的镜像
docker rmi lzw5399/kube-proxy:v1.18.3
docker rmi lzw5399/kube-apiserver:v1.18.3
docker rmi lzw5399/kube-controller-manager:v1.18.3
docker rmi lzw5399/kube-scheduler:v1.18.3
docker rmi lzw5399/coredns:1.6.7
docker rmi lzw5399/etcd:3.4.3-0
docker rmi lzw5399/pause:3.2
3.4 master初始化kubeadm
# master执行init初始化
kubeadm init \
--kubernetes-version="v1.18.3" \
--pod-network-cidr="10.244.0.0/16" \
--ignore-preflight-errors="NumCPU"
# 后续步骤
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 应用网络插件flannle
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
3.5 node加入集群
# 加入集群
# 这里具体的语句在master上init成功后就会通过log打印出来,直接复制到node上用就好了
kubeadm join 172.19.227.80:6443 --token vdyayi.ghs1zut7yxd94vru \
--discovery-token-ca-cert-hash sha256:fcdaaaf7411b786e3d5bb77c1d190e278a2952e1f415012cfdeea31c0af7547b \
--v=4
3.6 查看部署状态
# master查看node节点状态
kubectl get nodes
# master查看kube-system命名空间下的pod启动的状态
kubectl get po -n kube-system
# 如果有pod一直启动不起来,通过describe查看状态
kubectl describe po/{具体的pod名字} -n kube-system
Kubernetes系列(三) - 通过Kubeadm部署kubernetes的更多相关文章
- 使用kubernetes 官网工具kubeadm部署kubernetes(使用阿里云镜像)
系列目录 kubernetes简介 Kubernetes节点架构图: kubernetes组件架构图: 准备基础环境 我们将使用kubeadm部署3个节点的 Kubernetes Cluster,整体 ...
- Kubernetes系列三:二进制安装Kubernetes环境
安装环境: # 三个节点信息 192.168.31.11 主机名:env11 角色:部署Master节点/Node节点/ETCD节点 192.168.31.12 主机名:env12 角色:部署Node ...
- [原]使用kubeadm部署kubernetes(一)
####################### 以下为声明 ##################### 在公众号 木子李的菜田 输入关键词: k8s 有系列安装文档 此文档是之前做笔记在 ...
- 02 . Kubeadm部署Kubernetes及简单应用
kubeadm部署Kubernetes kubeadm简介 # kubeadm是一位高中生的作品,他叫Lucas Kaldstrom,芬兰人,17岁用业余时间完成的一个社区项目: # kubeadm的 ...
- 附025.kubeadm部署Kubernetes更新证书
一 查看证书 1.1 查看过期时间-方式一 1 [root@master01 ~]# tree /etc/kubernetes/pki/ 2 [root@master01 ~]# for tls in ...
- Kubeadm部署Kubernetes
Kubeadm部署Kubernetes 1.环境准备 主机名 IP 说明 宿主机系统 k8s-master 10.0.0.101 Kubernetes集群的master节点 Ubuntu2004 k8 ...
- 使用kubeadm部署Kubernetes v1.13.3
kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具. 这个工具能通过两条指令完成一个kubernetes集群的部署: 1. 安装要求 在开始之前,部署Kubernetes集群 ...
- [转帖]CentOS 7 使用kubeadm 部署 Kubernetes
CentOS 7 使用kubeadm 部署 Kubernetes 关闭swap 执行swapoff临时关闭swap. 重启后会失效,若要永久关闭,可以编辑/etc/fstab文件,将其中swap分 ...
- 从0到1使用Kubernetes系列(五):Kubernetes Scheduling
前述文章介绍了Kubernetes基本介绍,搭建Kubernetes集群所需要的工具,如何安装,如何搭建应用.本篇介绍怎么使用Kubernetes进行资源调度. Kubernetes作为一个容器编排调 ...
- scrapy爬虫学习系列三:scrapy部署到scrapyhub上
系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...
随机推荐
- KubeSphere 最佳实战:Kubernetes 部署集群模式 Nacos 实战指南
Nacos 是 Dynamic Naming and Configuration Service 的首字母简称,一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. Nacos 是构建以服 ...
- 分布式应用架构的发展演变RPC
什么是分布式系统? <分布式系统原理与范型>定义: "分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统",分布式系统(distributed s ...
- DRF-Serializers序列化器组件源码分析及改编
1. 源码分析 注意:以下代码片段为方便理解已进行简化,只保留了与序列化功能相关的代码 序列化的源码中涉及到了元类的概念,我在这里简单说明一下:元类(metaclass)是一个高级概念,用于定义类的创 ...
- Quartz集群增强版_00.How to use?(如何使用)
Quartz集群增强版_00.How to use?(如何使用) 转载请著名出处 https://www.cnblogs.com/funnyzpc/p/18540378 开源地址 https://gi ...
- delphi Image32 之 快速入门
官方快速入门,加上了一些注解 [从WORD粘贴后失去了样式] TImage32 类是关键.TImage32 对象包含单个图像,所有图像操作都作用于此对象. uses Img32; //引用单元 .. ...
- ABC240Ex Sequence of Substrings
ABC240Ex Sequence of Substrings LIS 的好题改编. 约定 \(S(l,r)\) 为字符串 \(s\) 中第 \(l\) 位到底 \(r\) 位. \(S(l,r)& ...
- 【一步步开发AI运动小程序】二十一、如果将AI运动项目配置持久化到后端?
说明:本文所涉及的AI运动识别.计时.计数能力,都是基于云智「Ai运动识别引擎」实现.云智「Ai运动识别」插件识别引擎,可以为您的小程序或Uni APP赋于原生.本地.广覆盖.高性能的人体识别.姿态识 ...
- ubuntu的apt源更新后只能装php8新版本,无法安装php7老版本了
新电脑更新apt源以后,发现新装的都是php8.1,而且apt源update后,search也找不到php7了. 于是找到了这篇文章 然后按照他说的做 sudo apt-get update sudo ...
- 五、FreeRTOS学习笔记-任务创建和删除(动态方式)
1任务控制块:保存任务的一些信息 (STM32的栈是由告高地址向低地址延伸的,由上向下生长) (STM32的堆是由告低地址向高地址延伸的,由下向上生长) 第一步申请内存 如下如所示步骤找到xTaskC ...
- JS之Date时间处理
初始化当前时间: // 1. 使用构造函数方式 var newDate = new Date() // 2. 使用函数方式 var date = Date() // 返回的是一个Date对象 cons ...