一、安装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. c++中“::”和“:”啥意思

    c++中"::"和":"啥意思 (1)"::"  1)类作用域操作符."::"指明了成员函数所属的类.如:M::f(s) ...

  2. oracle 序列的使用

    序列: 是oacle提供的用于产生一系列唯一数字的数据库对象. 自动提供自增的唯一的数值. 共享的数据 主要用于提供主键值 将序列装入内存可以提高访问效率 1.创建序列: 1.  要有创建序列的权限 ...

  3. MEVN 架构(MongoDB + Express + Vue + NODEJS)搭建

    一个完整的网站服务架构包括:1.web frame ---这里应用express框架2.web server ---这里应用nodejs3.Database ---这里应用monggoDB4.前端展示 ...

  4. Vue小说阅读器(仿追书神器)

    一个vue阅读器项目,目前已升级到2.0,阅读器支持横向分页并滑动翻页(没有动画,需要动画的可以自己设置,增加transitionDuration即可) 技术栈 vue全家桶+mint-ui gith ...

  5. python-班级人员信息统计

    输入a,b班的名单,并进行如下统计. 输入格式: 第1行::a班名单,一串字符串,每个字符代表一个学生,无空格,可能有重复字符.第2行::b班名单,一串字符串,每个学生名称以1个或多个空格分隔,可能有 ...

  6. java中什么是局部内部类Local inner class?

    5.局部内部类Local inner class 马克-to-win:什么叫局部内部类?内部类声明位置:1.它的外部类的范围之内.2.在几个程序块的范围之内.例如,由方法定义的块中或甚至在for循环体 ...

  7. Oracle中between 和 in

    select * from test_s where id between 2 and 12; between 就是左右全闭区间. SELECT columnsFROM tablesWHERE col ...

  8. 自己对kmp算法的理解,借由 28. 实现 strStr() 为例

    做题思路 or 感想 : 就借由这道题来理解一下kmp算法吧 kmp算法的操作过程我觉得有句话很合适 :KMP 算法永不回退 目标字符串 的指针 i,不走回头路(不会重复扫描 目标字符串),而是借助 ...

  9. linux系统从pci.ids文件获取硬件设备详细厂商信息

    机器采样: [root@ht24 hwdata]# cat /etc/redhat-release ; uname -r CentOS Linux release 7.9.2009 (Core) 3. ...

  10. Java 使用-安装

    Java 使用-安装 官方网站 JDK 下载地址 JDK 历史版本 参考资料 CentOS7系统卸载自带的OpenJDK并安装SUNJDK CentOS7卸载 OpenJDK 安装Sun的JDK8 安 ...