百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

使用虚拟机在3台centos7系统安装docker和k8s集群

qiyuwang 2024-10-22 16:26 20 浏览 0 评论

一、安装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	

相关推荐

第二十六章 Bat文件(bat文件百科)

第二十六章Bat文件bat文件是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为.bat或.cmd。在命令提示下输入批处理文件的名称,或者双击该批处理...

自媒体良器:音频文件批处理,FFmpeg一行搞定!果断收藏

引言FFMpeg是众多多媒体应用程序的核心,但该程序本身不具备一次转换多个文件的能力。但也拦不住,FFMpeg本身是命令行程序,可编写脚本,借助Bash轻松快速地构建自动化程序。...

批处理:创建和删除文件夹命令(批处理命令 删除文件夹)

上一期,我们学习了文件夹的查看命令:tree和dir,以及文件夹切换命令:cd,今天,我继续给大家讲解下批处理的目录(文件夹)操作命令:创建和删除。一.md:创建目录(文件夹)可以在当前文件夹下创建...

利用VBA创建新的工作簿(vba 创建工作簿)

【分享成果,随喜正能量】我告诫自己:你的话说得太多,你听别人倾诉得太多,你咖啡喝得太多,你在陌生的房间里坐的时间太长,你的睡眠质量太差,你醒着的时间太长,你平庸的事想得太多,你希望过多,你安慰自己太频...

实用小工具,注册表文件快速转换.bat文件

关于注册表注册表是Windows操作系统中的一个核心数据库,它用于存储系统和应用程序的设置信息。这个数据库文件控制着Windows操作系统的外观和如何响应外来事件的工作方式。注册表包含了各种参数,直接...

如何给自己的电脑做一个截图工具?现场教会你具体流程和步骤

做自媒体,经常要用到一些图片,有时候图片上有水印去不掉,这时候要是有一个能随意截图的工具该有多少呀!今天教授让大家自己设计一个截图工具。下面就是流程和步骤:1、在电脑页面的任意位置,点击鼠标右键,新建...

Windows使用批处理文件更改目录下的文件名(含序号)

从网上下载的图片,默认的名字是由许多字母和数字组成的比较长的一个字符串,不便于人记忆,使用起来比较麻烦。如下图所示:本文的目的是写一个批处理文件,将该目录中的所有扩展名为jpeg的文件改名为日期加序号...

学习VB编程第35天,如何调用bat批处理

今天学习了刘金玉老师零基础VB教程的第43期,学习的主要内容是如何调用bat批处理登录。一、什么是批处理1.什么是命令提示符(cmd)?在Windows开始菜单运行(windows+r键也可调出)中输...

利用bat让文件在指定时间自动进行备份

在很多时候,我们需要备份电脑中的一些文件,特别是企业服务器的备份,可能是有一些文件每天都会有更新,或者定期更新,而文件又是相对比较重要的,需要我们定时去备份。可有时候文件比较大,备份时间比较长,或者在...

BAT 批处理脚本教程(批处理脚本编写教程)

BAT批处理脚本教程第一章批处理基础第一节常用批处理内部命令简介批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD。这些命令统称批处...

Windows系统bat批处理常用命令(一)

一、批处理中常用的命令:@命令:加在每个命令行的最前面,表示运行时不显示这一行的命令行。eg:@echooff//不显示后续命令行及当前命令行...

编写bat文件在windows上自动执行cmd命令

windows电脑上直接新建txt记事本文件,编写好要执行的命令后,将后缀修改成.bat,然后直接点击文件就可以执行里面的命令了#打开命令窗口startcmd#/k执行完命令不关...

不会C语言写bat脚本代码批量修改文件名,DeepSeek帮你解决!

哈喽大家好,我是小飞。今天给大家讲一下DeepSeek做了一个批量修改文件夹的bat脚本。·首先先让它这样修改一下,因为之前已经做过一个,然后它没有改,现在让它修改一下,把它修改一个很智能的BAT脚本...

BAT批处理命令之ren/rename(与Excel合作批量修改文件名)

写在前面一鸽就是半年...

使用批处理文件——autoexec.bat(批处理more)

1、dblspace.sys磁盘压缩。  drvspace.sys、dblspace和drvspace是Microsoft公司推出的磁盘压缩工具,可以将磁盘的空间增加许多,但由于它依靠对文件进行压...

取消回复欢迎 发表评论: