Kubernetes实录-第一篇-集群部署配置(1) CentOS7配置docker环境

该文档在CentOS7.6系统下进行操作系统的初始化配置以及docker环境,为之后的Kubernetes环境配置提供基础依赖

主机名称ip地址操作系统角色软件版本备注
opsharbor-shqs-110.99.73.38CentOS 7.6docker宿主机

一、更新并初始操作系统

1. 关闭防火墙[所有节点执行]

systemctl stop firewalld.service
systemctl disable firewalld.service

2. 禁用selinux[所有节点执行]

sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0

3. 关闭系统交换空间swap[所有节点执行]

swap不关闭kubelet可能会出错,如果不关闭也可以修改kubelet的配置

# 我使用的是KVM虚拟机,本身就没有使用swap空间,这里记录下设置方式[来自网络文章]
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab

4. 配置内核参数(网络相关)[所有节点执行]

# 我使用的虚拟机模板配置了很多内核参数,这里就不列出来了,只关心相关的。
yum install bridge-utils -y
modprobe br_netfilter

cat <<EOF >  /etc/sysctl.d/container.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

# 使配置生效
sysctl --system

# 设置ulimit,根据需要设置,这里验证环境如此设置足够了。
cat <<EOF > /etc/security/limits.d/90-nproc.conf
*          soft    nproc     20480
*          hard    nproc     20480
*          soft    nofile    102400
*          hard    nofile    102400
root       soft    nproc     unlimited
EOF

5. 设置主机名称并配置hosts文件[所有节点执行]

# 在节点执行
hostnamectl set-hostname opsharbor-shqs-1

# 添加解析记录(这里使用cat命令展示设置后的内容)
# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.99.73.38  opsharbor-shqs-1

6. 配置时钟服务器[所有节点执行]

设置自己的时钟源,采用默认公共的也可以

# master 配置
	vi /etc/chrony.conf 
	...
	server 10.99.73.5 iburst
	server 10.99.73.6 iburst
	
	# 启动chronyd 
	systemctl enable chronyd.service
	systemctl restart chronyd.service

7. 系统更新并重启[所有节点执行]

yum -y install epel-release
yum -y update
# 更新完成后重启操作系统
reboot

二、安装docker-ce

1. 安装依赖[所有节点执行]

# 我使用的虚拟机模版默认已经配置了很多系统工具,这里是从文档查阅需要的。
yum -y install yum-utils device-mapper-persistent-data lvm2 conntrack-tools bridge-utils ipvsadm

2. 添加docker软件源(使用国内)[所有节点执行]

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 查看docker-ce版本列表
yum list docker-ce --showduplicates|sort -r
    docker-ce.x86_64   3:19.03.9-3.el7    docker-ce-stable
    docker-ce.x86_64   3:19.03.8-3.el7    docker-ce-stable
    docker-ce.x86_64   3:19.03.7-3.el7    docker-ce-stable
    docker-ce.x86_64   3:19.03.6-3.el7    docker-ce-stable
    docker-ce.x86_64   3:19.03.5-3.el7    docker-ce-stable
    docker-ce.x86_64   3:19.03.4-3.el7    docker-ce-stable
    docker-ce.x86_64   3:19.03.3-3.el7    docker-ce-stable
    docker-ce.x86_64   3:19.03.2-3.el7    docker-ce-stable
    docker-ce.x86_64   3:19.03.1-3.el7    docker-ce-stable
    docker-ce.x86_64   3:19.03.11-3.el7   docker-ce-stable  ## 用这个版本(当前最新版本)
    docker-ce.x86_64   3:19.03.10-3.el7   docker-ce-stable
    docker-ce.x86_64   3:19.03.0-3.el7    docker-ce-stable
    docker-ce.x86_64   3:18.09.9-3.el7    docker-ce-stable
    docker-ce.x86_64   3:18.09.8-3.el7    docker-ce-stable
    docker-ce.x86_64   3:18.09.7-3.el7    docker-ce-stable
    docker-ce.x86_64   3:18.09.6-3.el7    docker-ce-stable
    docker-ce.x86_64   3:18.09.5-3.el7    docker-ce-stable
    docker-ce.x86_64   3:18.09.4-3.el7    docker-ce-stable
    docker-ce.x86_64   3:18.09.3-3.el7    docker-ce-stable
    docker-ce.x86_64   3:18.09.2-3.el7    docker-ce-stable
    docker-ce.x86_64   3:18.09.1-3.el7    docker-ce-stable
    docker-ce.x86_64   3:18.09.0-3.el7    docker-ce-stable
    docker-ce.x86_64   18.06.3.ce-3.el7   docker-ce-stable
    docker-ce.x86_64   18.06.2.ce-3.el7   docker-ce-stable
    docker-ce.x86_64   18.06.1.ce-3.el7   docker-ce-stable
    docker-ce.x86_64   18.06.0.ce-3.el7   docker-ce-stable

3. 安装指定版本docker-ce

yum -y install docker-ce-19.03.11

#会自动安装依赖docker-ce-cli containerd.io

4. 安装yum插件,用来固定docker版本[所有节点执行]

yum -y install yum-plugin-versionlock
yum versionlock docker-ce
yum versionlock list
	Loaded plugins: fastestmirror, priorities, versionlock
	3:docker-ce-19.03.11-3.el7.*
	versionlock list done

5. 配置docker自启动[所有节点执行]

systemctl enable docker.service
systemctl start docker.service

6. 验证安装

# docker version
    Client: Docker Engine - Community
     Version:           19.03.11
     API version:       1.40
     Go version:        go1.13.10
     Git commit:        42e35e61f3
     Built:             Mon Jun  1 09:13:48 2020
     OS/Arch:           linux/amd64
     Experimental:      false

    Server: Docker Engine - Community
     Engine:
      Version:          19.03.11
      API version:      1.40 (minimum version 1.12)
      Go version:       go1.13.10
      Git commit:       42e35e61f3
      Built:            Mon Jun  1 09:12:26 2020
      OS/Arch:          linux/amd64
      Experimental:     false
     containerd:
      Version:          1.2.13
      GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
     runc:
      Version:          1.0.0-rc10
      GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
     docker-init:
      Version:          0.18.0
      GitCommit:        fec3683
 
# docker images
null

# docker run hello-worlddocke
    Unable to find image 'hello-world:latest' locally
    latest: Pulling from library/hello-world
    0e03bdcc26d7: Pull complete 
    Digest: sha256:d58e752213a51785838f9eed2b7a498ffa1cb3aa7f946dda11af39286c3db9a9
    Status: Downloaded newer image for hello-world:latest

    Hello from Docker!
    This message shows that your installation appears to be working correctly.

    To generate this message, Docker took the following steps:
     1. The Docker client contacted the Docker daemon.
     2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
        (amd64)
     3. The Docker daemon created a new container from that image which runs the
        executable that produces the output you are currently reading.
     4. The Docker daemon streamed that output to the Docker client, which sent it
        to your terminal.

    To try something more ambitious, you can run an Ubuntu container with:
     $ docker run -it ubuntu bash

    Share images, automate workflows, and more with a free Docker ID:
     https://hub.docker.com/

    For more examples and ideas, visit:
     https://docs.docker.com/get-started/

# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    hello-world         latest              bf756fb1ae65        5 months ago        13.3kB

----------------到这里就结束了,下面的配置是使用自签证书的私有仓库(https)的配置----------------

三. 配置docker使用私有仓库自签证书

docker使用自签证书的私有仓库需要配置自签证书根证书到docker环境,使用openssl配置自签证书的方式有所不同,这里使用的方式参考 配置企业级镜像仓库Harbor 生成自签证书相关内容
docker环境配置使用自签证书的方式有多种。这里列出2中方式

私有仓库地址自签证书
https://csrepo.ejuops.comcsrepo.ejuops.com.crt
certs]# ll
-rw-r--r-- 1 root root 1212 Jun 19 10:40 csrepo.ejuops.com.crt       #这个就是我们需要的证书文件
-rw-r--r-- 1 root root 1009 Jun 19 10:40 csrepo.ejuops.com.csr
-rw-r--r-- 1 root root 1675 Jun 19 10:40 csrepo.ejuops.com.key
-rw-r--r-- 1 root root 1743 Jun 19 10:40 csrepo.ejuops.com.pass.key

方法一. 配置系统全局使用该自签证书

# 安装ca-certificates
yum -y install ca-certificates

# 证书文件放入 /usr/share/pki/ca-trust-source/anchors
cp csrepo.ejuops.com.crt   /usr/share/pki/ca-trust-source/anchors/

# 更细系统支持证书列表
update-ca-trust

# 查看是否更细追加成功
tail -n23 /etc/ssl/certs/ca-bundle.trust.crt

# csrepo.ejuops.com                   #看到这一行说明更新成功了
-----BEGIN TRUSTED CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  [这里是省略的意思]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END TRUSTED CERTIFICATE-----

#如果docker守护进程已经启动,需要重启下docker守护进程
systemctl restart docker

# 验证
docker pull csrepo.ejuops.com/library/hello-world:latest
	latest: Pulling from library/hello-world
	Digest: sha256:90659bf80b44ce6be8234e6ff90a1ac34acbeb826903b02cfa0da11c82cbc042
	Status: Image is up to date for csrepo.ejuops.com/library/hello-world:latest
	csrepo.ejuops.com/library/hello-world:latest

以上说明配置成功了。

方法二. 配置docker服务自己使用自签证书

这里测试的私有仓库域名是: csrepo.ejuops.com

# 配置
DOCKER_REGISTRY=csrepo.ejuops.com 
mkdir  -p /etc/docker/certs.d/${DOCKER_REGISTRY}
cp ${DOCKER_REGISTRY}.crt /etc/docker/certs.d/${DOCKER_REGISTRY}/ca.crt

#验证,这种方式docker守护进程不需要重启
docker pull csrepo.ejuops.com/library/hello-world:latest
	latest: Pulling from library/hello-world
	Digest: sha256:90659bf80b44ce6be8234e6ff90a1ac34acbeb826903b02cfa0da11c82cbc042
	Status: Image is up to date for csrepo.ejuops.com/library/hello-world:latest
	csrepo.ejuops.com/library/hello-world:latest
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值