一、安装docker

环境:准备3台centos7系统,都安装上docker环境,具体安装步骤和流程如下

参考:

https://docs.docker.com/install/linux/docker-ce/centos/

https://yeasy.gitbooks.io/docker_practice/content/install/

1.1 centos7配置yum源

> cd /etc/yum.repos.d/
> mkdir repo_bak
> mv *.repo repo_bak/
> wget http://mirrors.aliyun.com/repo/Centos-7.repo
> wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
> yum clean all
> yum makecache

1.2 卸载旧版本docker

sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

1.3 使用存储库安装docker

安装所需的包

 sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

使用以下命令设置稳定存储库。

# 阿里源,国内速度快
sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.4 安装DOCKER CE

安装最新docker

sudo yum install docker-ce docker-ce-cli containerd.io

或者yum列出docker再进行安装

yum list docker-ce --showduplicates | sort -r

sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

例如,docker-ce-18.09.1

1.5 建立 加入docker 用户组

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

sudo groupadd docker
sudo usermod -aG docker $USER

1.5 启动Docker

sudo systemctl start docker #启动
sudo systemctl enable docker #开机启动

查看有关Docker安装的更多详细信息

docker --version
docker version
docker info

测试hello-world

docker run hello-world

List Docker images

docker image ls

List Docker containers (running, all, all in quiet mode)

docker container ls
docker container ls --all
docker container ls -aq

1.6 卸载Docker CE

sudo yum remove docker-ce
sudo rm -rf /var/lib/docker

1.7 国内加速

vim /etc/docker/daemon.json

加入:

{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}

重启:

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

二、安装Kubernetes集群

参考:

https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

https://blog.csdn.net/MssGuo/article/details/122773155

2.1 系统设置

systemctl stop firewalld			#关闭防火墙
systemctl disable firewalld #设置开机不启动 [root@master ~]# vim /etc/selinux/config #永久关闭selinux
SELINUX=disabled #关闭swap(k8s禁止虚拟内存以提高性能)
[root@master ~]#
#永久禁用swap,注释掉/etc/fstab里的swap配置
#/dev/mapper/centos-swap swap swap defaults 0 0
#free -h #可查看

kubernetes1.14之后的版本推荐使用systemd,但docker默认的Cgroup Driver 是Cgroup,会使得kubelet部署报错(集群都这样修改)


[root@master ~]# docker info | grep -i "Cgroup Driver" #查看一下docker使用的Cgroup Driver,还真是cgroupfs
Cgroup Driver: cgroupfs #处理办法:修改/etc/docker/daemon.json 文件,添加如下参数:
[root@master ~]# vim /etc/docker/daemon.json #为了保持所有节点docker配置一致,所以其它节点的docker也改了
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"], #这句是之前就配置了的,但要注意加一个道号
"exec-opts": ["native.cgroupdriver=systemd"] #添加这一句
}
[root@master ~]# systemctl restart docker
[root@master ~]# docker info | grep -i "Cgroup Driver" #查看验证
Cgroup Driver: systemd

2.2 安装kubelet、kubeadm、kubectl

kubelet (真正的k8s服务) 运行在Cluster所有节点上,负责启动Pod和容器。

kubeadm (只是工具)用于初始化Cluster。

kubectl (只是工具)是Kubernetes命令行工具。通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件。

配置kubernetes的阿里云yum源(所有节点服务器都需要执行)

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装kubelet等服务、工具(所有节点服务器都需要执行)

yum install -y kubeadm-1.23.1-0 kubectl-1.23.1-0 kubelet-1.23.1-0

设置k8s服务kubelet开机启动(所有节点服务器都需要执行)

# 设置开机启动
systemctl enable kubelet # 启动命令
systemctl start kubelet

2.3 设置网桥参数

#往k8s.conf文件添加内容
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
vm.swappiness=0
EOF #生效
sysctl --system

2.4 设置主机名

cat >> /etc/hosts <<EOF
192.168.1.20 master
192.168.1.21 node1
192.168.1.22 node2
EOF

2.5 使用kubeadm安装k8s

1、创建一个master节点,kubeadm init。

2、将node节点加入kubernetes集群,kubeadm join <master_IP:port >。

初始化【master节点】的控制面板

# kubeadm init --help可以查看命令的具体参数用法
kubeadm init \
--apiserver-advertise-address=192.168.1.20 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.1 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 #再开一个窗口,执行docker images可以看到,其实执行kubeadm init时k8s去拉取了好多镜像
  • --apiserver-advertise-address=192.168.1.20 即master节点的IP
  • --image-repository registry.aliyuncs.com/google_containers 设置镜像仓库为国内的阿里云镜像
  • --kubernetes-version v1.23.1 设置k8s的版本
  • --service-cidr=10.96.0.0/12 设置node节点的网络
  • --pod-network-cidr指定Pod网络的范围。Kubernetes支持多种网络方案,而且不同网络方案对--pod-network-cidr有自己的要求,这里设置为10.244.0.0/16是因为我们将使用flannel网络方案,必须设置成这个CIDR。

2.6 成功后的返回以及操作

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config Alternatively, if you are the root user, you can run: export KUBECONFIG=/etc/kubernetes/admin.conf You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/ Then you can join any number of worker nodes by running the following on each as root: kubeadm join 192.168.1.20:6443 --token deg1pk.88lgg93hqh74mbcg \
--discovery-token-ca-cert-hash sha256:81eeac318c2eba7a06cdabb2b4cb30bfedd4359a7c1cd7b508b68f9f74fddbe5

2.7 将node节点加入集群

使用mater init 返回的命令。这段kubeamd join命令的token只有24h,24h就过期,需要执行kubeadm token create --print-join-command 重新生成。

kubeadm join 192.168.1.20:6443 --token deg1pk.88lgg93hqh74mbcg \
--discovery-token-ca-cert-hash sha256:81eeac318c2eba7a06cdabb2b4cb30bfedd4359a7c1cd7b508b68f9f74fddbe5

2.8 在master节点配置pod网络创建(部署容器网络,CNI网络插件)

  • node节点加入k8s集群后,在master上执行kubectl get nodes发现状态是NotReady,因为还没有部署CNI网络插件,其实在步骤四初始化完成master节点的时候k8s已经叫我们去配置pod网络了。
  • 在k8s系统上Pod网络的实现依赖于第三方插件进行,这类插件有近数十种之多,较为著名的有flannel、calico、canal和kube-router等,简单易用的实现是为CoreOS提供的flannel项目。
#执行下面这条命令在线配置pod网络,因为是国外网站,所以可能报错,测试去http://ip.tool.chinaz.com/网站查到
#域名raw.githubusercontent.com对应的IP,把域名解析配置到/etc/hosts文件,然后执行在线配置pod网络,多尝试几次即可成功。 kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

查看pod状态:

kubectl get pods -n kube-system

使用虚拟机在3台centos7系统安装docker和k8s集群的更多相关文章

  1. centos7.8 安装部署 k8s 集群

    centos7.8 安装部署 k8s 集群 目录 centos7.8 安装部署 k8s 集群 环境说明 Docker 安装 k8s 安装准备工作 Master 节点安装 k8s 版本查看 安装 kub ...

  2. CentOS7 使用 kubeadm 搭建 k8s 集群

    一 安装Docker-CE 前言 Docker 使用越来越多,安装也很简单,本次记录一下基本的步骤. Docker 目前支持 CentOS 7 及以后的版本,内核要求至少为 3.10. Docker ...

  3. Centos7 安装部署Kubernetes(k8s)集群

    目录 一.系统环境 二.前言 三.Kubernetes 3.1 概述 3.2 Kubernetes 组件 3.2.1 控制平面组件 3.2.2 Node组件 四.安装部署Kubernetes集群 4. ...

  4. windows 10下启用docker的k8s集群

    安装Docker Desktop后,由于国内无法下载到Kubernete的文件,在Docker Desktop设置里勾选启用Kubernete一直显示”Kubernete is starting”状态 ...

  5. 从0到1搭建k8s集群系列1:安装虚拟机及docker

    前言 本系列文章记录了本人学习k8s集群搭建的过程,从k8s基本组件的安装.到部署mysql服务到k8s集群.部署web项目到k8s集群以及安装可视化界面管理工具kuboard. 因为k8s的组件安装 ...

  6. Docker部署Hadoop集群

    Docker部署Hadoop集群 2016-09-27 杜亦舒 前几天写了文章"Hadoop 集群搭建"之后,一个朋友留言说希望介绍下如何使用Docker部署,这个建议很好,Doc ...

  7. Docker学习-Kubernetes - 集群部署

    Docker学习 Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通搭建 Docker学习-Docker搭建Consul集群 Docker学习-简单的私有Dock ...

  8. 使用Docker搭建Hadoop集群(伪分布式与完全分布式)

    之前用虚拟机搭建Hadoop集群(包括伪分布式和完全分布式:Hadoop之伪分布式安装),但是这样太消耗资源了,自学了Docker也来操练一把,用Docker来构建Hadoop集群,这里搭建的Hado ...

  9. docker安装hadoop集群

    docker安装hadoop集群?图啥呢?不图啥,就是图好玩.本篇博客主要是来教大家如何搭建一个docker的hadoop集群.不要问 为什么我要做这么无聊的事情,答案你也许知道,因为没有女票.... ...

随机推荐

  1. 从零开始开发一款H5小游戏(二) 创造游戏世界,启动发条

    本系列文章对应游戏代码已开源 Sinuous game 上一节介绍了canvas的基础用法,了解了游戏开发所要用到的API.这篇文章开始,我将介绍怎么运用这些API来完成各种各样的游戏效果.这个过程更 ...

  2. android:text 文字阴影设置

    <SPAN style="FONT-SIZE: 16px"><TextView  android:id="@+id/text"       a ...

  3. CentOS系统Tomcat 8.5或9部署SSL证书

    本文档介绍了CentOS系统下Tomcat 8.5或9部署SSL证书的操作说明. 环境准备 操作系统:CentOS 7.6 64位 Web服务器:Tomcat 8.5或9 前提条件 已从阿里云SSL证 ...

  4. CSS简单样式练习(一)

    运行效果: 源代码: 1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta char ...

  5. 鸿蒙JS 开发整理

    目录 一.前言: 二.鸿蒙 JS UI框架 2.1 JS UI特性 2.2 架构 2.3 新的UI框架结构 三.API 四.最后 一.前言: 5月25日,华为对外宣布计划在6月2日正式举办鸿蒙手机发布 ...

  6. FastAPI(六十六)实战开发《在线课程学习系统》接口开发--用户注册接口开发

    在前面我们分析了接口的设计,那么我们现在做接口的开发. 我们先去设计下pydantic用户参数的校验 from pydantic import BaseModel from typing import ...

  7. vue项目中连接MySQL时,报错ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'localhost' (using password:YES)

    一.前言 我们前端很多时候在写vue项目的时候,会把后端的数据拿到本地来跑,在连接MySQL数据库的时候,可能出现一些问题,如: ER_ACCESS_DENIED_ERROR: Access deni ...

  8. zabbix使用自带模板监控MySQL

    监控mysql不能直接使用zabbix自带模板,还需要到被监控的mysql客户端做配置. 1.在zabbix   web配置步骤如下图: 2.配置完之后去看mysql主机监控项的时候看到mysql的监 ...

  9. re模块补充与其他模块介绍

    注:昨日写了re单个模块几个重要的点需要补充 一.re模块补充 1.findall独有的优先级别展示 res = re.findall('abc', 'abcabcabcabc') print(res ...

  10. kali下安装docker

    前期准备 物理机:win10 虚拟机:kali 2021 网络连接方式:桥接 一.简介 Vulhub: 是一个面向大众的开源漏洞靶场,无需docker知识,简单执行两条命令即可编译.运行一个完整的漏洞 ...