目录

1. 节点规划

2. 系统属性设置

2.1 属性配置脚本

3. 安装docker

3.1 联网方式安装docker

3.2 离线方式安装docker

3.3 查看docker版本信息

4. 部署单个master节点的kubernetes集群

4.1 安装kubelet、kubeadm、kubectl

4.2 下载kubernetes镜像

4.3 初始化master节点

4.3.1 导出初始化配置文件

4.3.2 修改初始化配置文件

4.3.3 初始化master节点

4.3.4 配置kubeconfig环境变量

4.4 配置kubectl

4.5 部署Node节点

5. 安装calico网络插件

5.1 下载calico.yaml文件

5.2 下载calico镜像文件

5.3 创建calico网络

6. 添加Node节点

6.1 添加node

6.2 查看node信息

6.3 检查pod状态

6.4 检查集群状态

7. 安装kubectl命令自动补全

7.1 下载rpm包

7.2 安装命令补全rpm包

7.3 添加配置

8. 重置集群


1. 节点规划

Hostname IP地址 系统版本 内核版本 安装组件 备注
master01 192.168.0.201 CentOS7.6 1810 3.10.0

kubernetes 19.03.8

docker 1.18.4

master节点
node01 192.168.0.211 CentOS7.6 1810 3.10.0

kubernetes 19.03.8

docker 1.18.4

worker节点

(Node)

node02 192.168.0.212 CentOS7.6 1810 3.10.0

kubernetes 19.03.8

docker 1.18.4

worker节点
(Node)

2. 系统属性设置

以下基础属性需要在kubernetes的master和node节点器上进行配置。

如果采用虚拟机进行集群组件,要注意每个虚拟机的MAC地址需要设置为不同的地址。

2.1 属性配置脚本

由于所有的系统属性配置都要在master和worker节点上均操作一遍。为了省事,我们可以将操作的内容写在脚本里一键执行:01-env-init.sh 

#!/bin/bashecho "----------------关闭防火墙------------------"
systemctl stop firewalld && systemctl disable firewalldecho "----------------关闭selinux-----------------"
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux && sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/configecho "----------------关闭swap--------------------"
swapoff -a && sed -ri 's/.*swap.*/#&/' /etc/fstabecho "----------------设置主机名------------------"
# 在master01节点上执行该脚本时,hostnamectl set-hostname master01
hostnamectl set-hostname master01# 在node01节点上执行该脚本时, hostnamectl set-hostname node01
#hostnamectl set-hostname node01# 在node02节点上执行该脚本时,hostnamectl set-hostname node02
#hostnamectl set-hostname node02echo "----------------添加hosys------------------"
cat <<EOF>> /etc/hosts
192.168.6.201  master01
192.168.6.211  node01
192.168.6.212  node02
EOFecho "----------------配置ip_forward-------------"
cat <<EOF>> /etc/sysctl.conf
net.ipv4.ip_forward=1
EOFecho "----------------修改内核参数----------------"
cat <<EOF>> /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness = 0
EOFecho "----------------设置K8S源------------------"
cat <<EOF>> /etc/yum.repos.d/kubernetes.repo
[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
EOFyum clean all && yum -y makecacheecho "----------------重启本机------------------"
seleep 5
reboot -f

3. 安装docker

3.1 联网方式安装docker

执行脚本:02-install-docker.sh 

#!/bin/bashecho "----------------安装依赖包----------------"
yum install yum-utils device-mapper-persistent-data lvm2 -y echo "----------------设置dokcer源--------------"
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoecho "----------------docker版本列表------------"
yum list docker-ce --showduplicates | sort -recho "----------------安装docker-19.03.8-------"
yum install docker-ce-19.03.8 docker-ce-cli-19.03.8 containerd.io -yecho "---------重启并设置docker开机启动--------"
systemctl daemon-reload && systemctl enable docker && systemctl restart dockerecho "----------------修改docker镜像源----------"
cat <<EOF>> /etc/docker/demon.json
{"registry-mirrors": ["https://v16stybc.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"graph": "/data/docker"
}
EOF

3.2 离线方式安装docker

【1】预先下载docker相关的安装包:

【2】执行安装命令:

yum –y install *.rpm或者rpm –ivh *.rpm

【3】设置开机启动

systemctl daemon-reload && systemctl restart docker

【4】配置docker镜像源

修改文件: vi /etc/docker/demon.json

{"registry-mirrors": ["https://v16stybc.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"graph": "/data/docker"
}

3.3 查看docker版本信息


4. 部署单个master节点的kubernetes集群

4.1 安装kubelet、kubeadm、kubectl

注意:

  • 以下操作无论是master节点和worker节点均执行。

[root@master01 bin]# cat 03-install-k8s-tool.sh

#!/bin/bashecho "----------------安装kubelet、kubeadm、kubectl--------------"echo "----------------kubelet版本信息列表------------------------"
yum list kubelet --showduplicates | sort -recho "----------------安装kubelet1.18.4版本----------------------"
yum install kubelet-1.18.4 kubeadm-1.18.4 kubectl-1.18.4 -y 设置开机启动
systemc daemon-reload
systemctl start kubelet.service
systemctl enable kubelet.service

4.2 下载kubernetes镜像

注意:

  • 以下操作无论是master节点和worker节点均执行。
#!/bin/bashecho "----------------下载kubernetes镜像-----------------"
url=registry.cn-hangzhou.aliyuncs.com/google_containers
version=v1.18.4
images=(`kubeadm config images list --kubernetes-version=$version|awk -F '/' '{print $2}'`)
for imagename in ${images[@]} ; dodocker pull $url/$imagenamedocker tag $url/$imagename k8s.gcr.io/$imagenamedocker rmi -f $url/$imagename
done

kubernetes镜像:


4.3 初始化master节点

注意:

  • 仅仅在master节点上执行初始化操作,切勿在node上操作。

4.3.1 导出初始化配置文件

kubeadm config print init-defaults > kubeadm-init-master.yaml

4.3.2 修改初始化配置文件

注意:

  • advertiseAddress改成主节点的物理IP,
  • kubernetesVersion版本号改为实际安装的版本号。

4.3.3 初始化master节点

kubeadm init --config=kubeadm-init-master.yaml --upload-certs --ignore-preflight-errors=all 

这里重点关注红框内容:

  • 红框-1:用于kubelet操作权限
  • 红框-2:将node节点添加到kubernetes的执行命令

4.3.4 配置kubeconfig环境变量

export KUBECONFIG=/etc/kubernetes/admin.conf

或者

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

source ~/.bash_profile


4.4 配置kubectl

在master节点上执行下边命令:

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

注意:

这里kubelet服务开机启动在前边安装k8s工具组件的脚本里已执行。

其次,关于node节点问题

1-当node节点上执行kubectl get nodes –o wide –A失败,出现以下异常提示时:

The connection to the server localhost:8080 was refused - did you specify the right host or port?

2-将master的/etc/kubernetes/admin.conf文件复制一份到node节点的相同路径下,然后执行

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile && source ~/.bash_profile


4.5 部署Node节点

Node节点基础安装需要以下:

  • 安装docker
  • 安装kubelet、kubeadm、kubectl
  • 下载kubernetes镜像

上述3步安装方式和前边安装内容方式一致的,这里不再赘述,在node节点机器上再操作一把即可。

注意:

此时,master节点和worker节点之间是各自独立的节点,彼此网络不通的,接下来,我们需要在各个节点上安装calico网络插件。


5. 安装calico网络插件

5.1 下载calico.yaml文件

curl https://docs.projectcalico.org/v3.14/manifests/calico.yaml -o calico.yaml

参考官网教程:

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network


5.2 下载calico镜像文件

注意:

  • 以下操作无论是master节点和worker节点均下载calico镜像
  • 创建网络时,只需在master上操作一次即可。
  • 这里仅下载镜像,并为创建网络。放在后边初始化master节点时将执行网络创建,这里暂时跳过。
docker pull calico/node:v3.14.2
docker pull calico/pod2daemon-flexvol:v3.14.2
docker pull calico/cni:v3.14.2
docker pull calico/kube-controllers:v3.14.2

calico镜像如下图所示:


5.3 创建calico网络

集群必须安装网络插件以实现Pod间通信,在Master节点上操作calico.yml文件,其他Node节点会自动创建相关Pod;而且,其他Node节点只需加载calico镜像即可。

kubectl create -f calico.yaml

查看节点状态已经是Ready状态了。


6. 添加Node节点

6.1 添加node

登录worker节点机器,执行命令获取添加节点的证书数据。

获取join命令参数,并保存输出结果:

kubeadm token create --print-join-command > node-join.sh

添加Node节点,则直接在对应的node节点上执行:sh node-join.sh


6.2 查看node信息

此时,通过Master上查看Node信息:


6.3 检查pod状态


6.4 检查集群状态


7. 安装kubectl命令自动补全

为了方便使用TAB键快速补全操作指令,我们可以安装kubectl命令自动补全rpm包。

7.1 下载rpm包

yum install --downloadonly --downloaddir=./ -y bash-completion

7.2 安装命令补全rpm包

rpm -ivh bash-completion-2.1-8.el7.noarch.rpm

7.3 添加配置

source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

8. 重置集群

如果需要还原通过kubeadm init创建的cluster,执行重置命令:kubeadm reset 

注意:需要在Master和Node节点上都执行一次重置命令

Centos7.6环境使用kubeadm部署kubernetes1.18.4相关推荐

  1. Kubeadm部署Kubernetes1.18.6集群1

    Kubeadm 部署 Kubernetes1.18.6 集群 一.环境说明 主机名 IP地址 角色 系统 k8s-node-1 192.168.120.128 k8s-master Centos7.6 ...

  2. Kubeadm部署-Kubernetes-1.18.6集群

    环境配置 IP hostname 操作系统 10.11.66.44 k8s-master centos7.6 10.11.66.27 k8s-node1 centos7.7 10.11.66.28 k ...

  3. 逃脱只会部署集群系列 —— Kubeadm部署v1.18.0与ETCD操作

    目录 一.Kubeadm部署K8s1.18.0版本 1. 安装要求 2.环境准备 3. docker安装[所有节点都需要安装] 4.docker配置cgroup驱动[所有节点] 5.镜像加速[所有节点 ...

  4. Kubeadm 部署 Kubernetes1.20.4集群

    Kubeadm 部署 Kubernetes1.20.4集群(2021-02-19) 一.环境说明 主机名 IP地址 角色 系统 Kubernetes 192.168.144.156 k8s-maste ...

  5. 基于Kubeadm部署Kubernetes1.13.3 HA 高可用集群

    Table of Contents 目录 基于Kubeadm部署Kubernetes1.13.3 HA 高可用集群 01. 部署目的 1.1 Kubernetes的特性 1.2 贴微服务,开发环境快速 ...

  6. 基于Cri-dockerd使用Kubeadm部署Kubernetes1.25集群

    1. 前言介绍 关于Kuebernetes的部署 常用于部署K8s集群的工具和部署方式 minikube kubeadm 二进制包 本文使用kubeadm部署方式 K8s集群的部署有多种方式,而使用K ...

  7. CentOS7.5 使用二进制程序部署Kubernetes1.12.2(三)

    一.安装方式介绍 1.yum 安装 目前CentOS官方已经把Kubernetes源放入到自己的默认 extras 仓库里面,使用 yum 安装,好处是简单,坏处也很明显,需要官方更新 yum 源才能 ...

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

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

  9. K8S实战之环境部署1.18(一)

    安装要求,准备环境 #系统centos7.6 #硬件:2个CPU,2G内存 #可以访问外网,禁用swap #提前安装docker环境 准备三台服务器 初始化系统环境,以下命令三台服务器全部执行 1.1 ...

  10. 项目四 CentOS使用kubeadm部署工具部署测试环境的K8s集群---Kubectl命令使用以及安装dashboard界面

    大家好,我是SuieKa.在之前呢有幸学习了马哥教育提供的K8s入门指南以及视频.初来乍到,写一篇关于K8s的介绍以及部署测试环境使用的K8s集群. 树 @·K8s入门简单介绍 一.K8s(Kuber ...

最新文章

  1. python图像锐化_opencv实现图片模糊和锐化操作
  2. oracle带输出参数存储,oracle带输入输出参数存储过程(包括sql分页功能)
  3. 店招模块终于可以进行后台换图片了
  4. python OSError: [Errno 24] Too many open files | HTTPConnectionPool(host=‘‘, port=80): Max retries e
  5. 纹个鸡儿天才小熊猫_给熊猫用户的5个提示
  6. 支付宝 android 2.3,app被拒记录-2.3-包含支付宝
  7. java与平台无关的原因
  8. [WPF]根据显示区域宽度裁剪字符串
  9. java 获取当前年_java中的反射(三) - kelexin
  10. (转)利用个人电脑搭建网站WEB服务器域名访问
  11. python抓取网页图片教程_Python实现简单网页图片抓取完整代码实例
  12. 布袋除尘器过滤风速多少_布袋除尘器处理风量、过滤风速、过滤面积怎么算?这篇全了...
  13. 【数据结构】-顺序栈(初始化栈顶指针为-1)
  14. 临近毕业,图像类SCI源刊哪本审稿快?
  15. AI人工智能学习之激活函数
  16. 数据推荐 | 人体行为识别数据集
  17. VC6.0 通过ado连接access数据库
  18. 科学计算机自动显示小数,卡西欧计算器FX-82MS怎么能让计算器永久显示小数计数而不是科学技术法啊?好烦啊,每次都是显示科学技术法,我试过SHI...
  19. 游戏平台系统云游戏实现
  20. 计算机英语教学模式,基于计算机和课堂英语教学模式探讨.doc

热门文章

  1. ue4是什么意思_UE4 C++基础教程 - 资源常见名词解释
  2. 【Hoxton.SR1版本】Spring Cloud Bus消息总线
  3. 在struts中实现验证码
  4. Dynamics CRM 2013 初体验(5):Business Rule
  5. conduit 安装试用
  6. Yann LeCun说是时候放弃概率论了,因果关系才是理解世界的基石
  7. (转) QImage总结
  8. ORA29902执行ODCIIndexStart()例行程序中出错 SQL空间查询ST_Geometry配置
  9. 19_完成“我的订单”
  10. Why does getView return wrong convertView objects on BaseAdapter?