Centos7 k8s v1.5.2二进制部署安装-基本准备

一、实验
 1、实验架构图

 2、实验架构图

 3、安装方式
Minkube 单节点微型k8s(仅供学习、预览使用)
  二进制安装部署(生产首选,新手推荐)
使用kubeadmin进行部署,k8s的部署工具,跑在k8s里(相对简单,熟手推荐)

 4、本实验使用的三条网络规划

二、部署k8s(所有主机上)
 1、准备工作(所有主机上)
1)关闭防火墙
systemctl stop firewalld
备注:必须关闭

 2)关闭selinux

setenforce 0 临时关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 永久关闭

 3)关闭swap
swapoff -a && sysctl -w vm.swappiness=0 临时关闭
free -h 可以通过这个命令查看swap是否关闭了

 4)在各节点中关闭自动挂载swap交换分区
[root@ k8s-masters01 ~]#vim /etc/fstab 把swap注释掉: 永久关闭
#UUID=a11cdd2a-eeed-4ed7-af6b-779094652766 swap swap defaults 0 0

 2、安装源(所有主机上)

yum install epel-release -y
yum install wget net-tools telnet tree nmap sysstat lrzsz dos2unix bind-utils -y

 3、安装bind9软件(dns服务器20)

 yum install -y bind

 4、修改配置文件(dns服务器20)

复制代码

vim /etc/named.conf
listen-on port 53 { 192.168.112.20; }; #将127.0.0.1修改为当前主机IP
//listen-on-v6 port 53 { ::1; }; 
allow-query { any; }; #为哪些服务器提供解析服务
forwarders { 192.168.112.1; }; #用来指定上一层DNS地址,一般指定网关,确保服务能够访问公网
recursion yes;
dnssec-enable no; # 是否支持DNSSEC开关 PS:dnssec作用:1.为DNS数据提供来源验证 2.为数据提供完整性性验证 3.为查询提供否定存在验证
dnssec-validation no; #是否进行DNSSEC确认开关

复制代码

5、检查配置文件(dns服务器20)

named-checkconf

6、修改区域配置文件(dns服务器20)

复制代码

vim /etc/named.rfc1912.zones
zone "host.com" IN {
        type master;
        file "host.com.zone";
        allow-update { 192.168.112.20; };
};

zone "od.com" IN {
        type master;
        file "od.com.zone";
        allow-update { 192.168.112.20; };
};

复制代码

7、配置区域数据文件(dns服务器20)

复制代码

vim /var/named/host.com.zone
$ORIGIN host.com.
$TTL 600    ; 10 minutes
@       IN SOA  dns.host.com. dnsadmin.host.com. (
                2021020701 ; serial
                10800      ; refresh (3 hours)
                900        ; retry (15 minutes)
                604800     ; expire (1 week)
                86400      ; minimum (1 day)
                )
            NS   dns.host.com.
$TTL 60 ; minute
dns                A    192.168.112.20
k8s-nginx-proxy1   A    192.168.112.20
k8s-nginx-proxy2   A    192.168.112.21
kubectl1           A    192.168.112.22
kubectl2           A    192.168.112.23
operations         A    192.168.112.24

vim /var/named/od.com.zone
$ORIGIN od.com.
$TTL 600        ; 10 minutes
@               IN SOA  dnsod.com. dnsadmin.od.com. (
                               2021020701 ; serial
                               10800      ; refresh (3 hours)
                               900        ; retry (15 minutes)
                               604800     ; expire (1 week)
                               86400      ; minimum (1 day)
                               )
                               NS   dns.host.com.
$TTL 60 ; minute
dns                A    192.168.112.20
harbor             A    192.168.112.24

复制代码

8、启动服务(dns服务器20)

systemctl start named
systemctl enable named
dig -t A k8s-nginx-proxy1.host.com @192.168.112.20 +short

9、客户端配置(所有主机)
修改网卡dns为dns服务器

vim /etc/resolv.conf
search host.com
nameserver 10.4.7.11

10、修改网卡配置:PS:如果网卡指定了DNS1配置(所有主机)

vim /etc/sysconfig/network-scripts/ifcfg-ens192
DNS1=192.168.112.20

三、签发证书(在运维主机上操作)

1、、在运维节点中安装证书生成工具cfssl:

cd /usr/bin
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/bin/cfssl
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/bin/cfssl-json
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /usr/bin/cfssl-certinfo
chmod +x /usr/bin/cfssl*

2、查看验证

which cfssl
which cfssl-json
which cfssl-certinfo

3、创建自签证书目录

mkdir /opt/certs
cd /opt/certs

4、创建根证书

复制代码

vi /opt/certs/ca-csr.json
{
    "CN": "OldboyEdu",
    "hosts":[
    ],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Beijing",
            "ST": "Beijing"
        }
    ],
    "ca":{
        "expiry": "175200h"
    }
}

复制代码

CN:Common Name,浏览器使用该字段验证网站是否合法,一般写的是域名。非常重要。浏览器使用该字段验证网站是否合法
C:Country,国家
ST:State ,州,省
L:Locality,地区,城市
O:Organization Name:组织名称,公司名称
OU:Organization Unit Name 组织单位名称,公司部门
expiry:过期时间,如果使用kubeadmin安装,默认证书有效期是1年,我们这里手动部署为20年,这里如果证书失效,会导致整个k8s集群瘫痪。

生成证书:

cfssl gencert -initca ca-csr.json | cfssl-json -bare ca 做成承载式证书

四、部署docker环境
1、安装docker(在22、23、24上操作)

复制代码

方法一:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

方法二:
1)安装必要的系统工具
yum install –y yum-utils device-mapper-persistent-data lvm2

2)添加docker的yum
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3)更新yum缓存
yum makecache fas
yum makecache fast

4)安装docker-ce
yum -y install docker-ce

复制代码

2、设置docker国内镜像加速

复制代码

sudo mkdir -p /etc/docker /data/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "graph": "/data/docker",
  "storage-driver": "overlay2",
  "insecure-registries": ["registry.access.redhat.com","quay.io","harbor.od.com"],
  "registry-mirrors": ["https://blcknu57.mirror.aliyuncs.com"],
  "bip": "172.7.22.1/24",
  "exec-opts": ["native.cgroupdriver=systemd"],
  "live-restore": true
}
EOF

复制代码

bip:和你规划的IP地址有关,每台需自行修改

3、启动docker并设置成后台启动

systemctl restart docker && systemctl enable docker

  4、安装本地仓库(docker私有仓库服务器上)

复制代码

harbor私有仓库下载地址:https://github.com/goharbor/harbor/releases/tag/

wget https://github.com/goharbor/harbor/releases/download/v1.9.2/harbor-offline-installer-v1.9.2.tgz
tar -zxf harbor-offline-installer-v1.9.2.tgz -C /opt/
cd /opt/
mv harbor harbor-1.9.2
ln -s /opt/harbor-1.9.2 /opt/harbor  #方便版本管理

编辑harbor配置文件:
vim /opt/harbor/harbor.yml
hostname: harbor.od.com #这里添加的是我们开始在hdss7-11的自建dns上添加的域名解析
port: 180 #避免和nginx端口冲突
data_volume: /data/harbor
location: /data/harbor/logs
创建数据目录和日志目录
mkdir -p /data/harbor/logs

复制代码

5、接下来安装docker-compose

Docker Compose是 docker 提供的一个命令行工具,用来定义和运行由多个容器组成的应用。使用 compose,我们可以通过 YAML 文件声明式的定义应用程序的各个服务,并由单个命令完成应用的创建和启动。

yum install docker-compose -y   #根据网络情况不同,可能需要一些时间
执行harbor脚本:
sh /opt/harbor/install.sh #根据网络情况不同,可能需要一些时间
cd /opt/harbor
docker-compose ps

 

6、安装nginx

复制代码

yum install nginx -y #可是直接yum,也可以安装源码安装
编辑nginx配置文件:
vi /etc/nginx/conf.d/harbor.od.com.conf
反代harbor:

server {
    listen       80;
    server_name  harbor.od.com;
 
    client_max_body_size 1000m;
 
    location / {
        proxy_pass http://127.0.0.1:180;
    }
}

启动nginx并设置开机启动:

systemctl start nginx
systemctl enable nginx

试着访问harbor,使用宿主机浏览器打开harbor.od.com,如果访问不了,检查dns是否是10.4.7.11,也就是部署bind服务的服务器IP,也可以做host解析:harbor.od.com
默认账号:admin
默认密码:Harbor12345
登录后创建一个新的仓库,一会测试用

复制代码

6、私有仓库推镜像

docker pull nginx:1.7.9
docker login harbor.od.com
docker tag 84581e99d807 harbor.od.com/public/nginx:v1.7.9
docker push harbor.od.com/public/nginx:v1.7.9

然后去私有仓库上看下:

五、搭建etcd集群

1、签发证书

复制代码

vim /opt/certs/ca-config.json
{
  "signing": {
    "default": {
      "expiry": "175200h"
    },
    "profiles": {
      "server": {
         "expiry": "175200h",
         "usages": [
            "signing",
            "key encipherment",
            "server auth"          
        ]
      },
      "client": {
          "expiry": "175200h",
          "usages": [
              "signing",
              "key encipherment",
              "client auth"
          ]
      },
      "peer": {
          "expiry": "175200h",
          "usages": [
               "signing",
               "key encipherment",
               "server auth",
               "client auth"
          ]
      }
    }
  }
}     
  
vim /opt/certs/etcd-peer-csr.json
{
  "CN": "k8s-etcd",
  "hosts": [
    "192.168.112.20",
    "192.168.112.21",
    "192.168.112.22",
    "192.168.112.23"
  ],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "L": "BeiJing",
      "ST": "BeiJing",
      "O": "od",
      "OU": "ops"
    }
  ]
}
   
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=peer etcd-peer-csr.json | cfssl-json -bare etcd-peer

复制代码

2、在需要安装etcd服务得主机上创建etcd用户
按照架构设计,在21,22, 23三台上部署etcd服务:

首先创建etcd用户:

useradd -s /sbin/nologin -M etcd
id etcd

3、安装etcd

wget https://github.com/etcd-io/etcd/releases/download/v3.1.20/etcd-v3.1.20-linux-amd64.tar.gz
tar -zxvf etcd-v3.1.20-linux-amd64.tar.gz
ln -s /opt/etcd-v3.1.20-linux-amd64 /opt/etcd
mkdir -p /opt/etcd/certs /data/etcd /data/logs/etcd-server

4、编写启动脚本

复制代码

scp operations:/opt/certs/ca.pem .
scp operations:/opt/certs/etcd-peer.pem .
scp operations:/opt/certs/etcd-peer-key.pem .

vim /opt/etcd/etcd-server-startup.sh
#!/bin/sh
./etcd --name etcd-server-112-21 \
--data-dir /data/etcd/etcd-server \
--listen-peer-urls https://192.168.112.21:2380 \
--listen-client-urls https://192.168.112.21:2379,http://127.0.0.1:2379 \
--quota-backend-bytes 8000000000 \
--initial-advertise-peer-urls https://192.168.112.21:2380 \
--advertise-client-urls https://192.168.112.21:2379,http://127.0.0.1:2379 \
--initial-cluster etcd-server-112-21=https://192.168.112.21:2380,etcd-server-112-22=https://192.168.112.22:2380,etcd-server-112-23=https://192.168.112.23:2380 \
--ca-file ./certs/ca.pem \
--cert-file ./certs/etcd-peer.pem \
--key-file ./certs/etcd-peer-key.pem \
--client-cert-auth \
--trusted-ca-file ./certs/ca.pem \
--peer-ca-file ./certs/ca.pem \
--peer-cert-file ./certs/etcd-peer.pem \
--peer-key-file ./certs/etcd-peer-key.pem \
--peer-client-cert-auth \
--peer-trusted-ca-file ./certs/ca.pem \
--log-output stdout

chmod +x /opt/etcd/etcd-server-startup.sh
chown -R etcd.etcd /data/etcd/
chown -R etcd.etcd /data/logs/etcd-server/
chown -R etcd.etcd /opt/etcd-v3.1.20-linux-amd64/
chown -R etcd.etcd /opt/etcd/
chown -R etcd.etcd /opt/etcd/certs

复制代码

六、安装etcdkeeper工具

etcd服务搭建完成后,里面其实存储了很多的key,如何查看和管理这些key,需要使用一个小工具,叫做etcdkeeper:

下载etcd,在etcd节点选一台

复制代码

mkdir  /opt/src && cd /opt/src
wget https://github.com/evildecay/etcdkeeper/releases/download/v0.7.5/etcdkeeper-v0.7.5-linux_x86_64.zip
解开压缩包,需安装unzip:  yum install unzip -y
unzip etcdkeeper-*-linux_x86_64.zip
rm etcdkeeper-*-linux_x86_64.zip
mv etcdkeeper ../etcdkeeper-0.7.5
ln -s /opt/etcdkeeper-0.7.5/ /opt/etcdkeeper
cd /opt/etcdkeeper
chmod +x etcdkeeper

复制代码

编写一个服务文件,该服务文件主要用于在后台运行etcd程序,用以提供http服务

复制代码

cd /lib/systemd/system
vim etcdkeeper.service

[Unit]
Description=etcdkeeper service
After=network.target
[Service]
Type=simple
ExecStart=/opt/etcdkeeper/etcdkeeper -h 192.168.112.21 -p 8800
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
PrivateTmp=true
[Install]
WantedBy=multi-user.target

-h 指定etcdkeeper http监听的地址,这里监听的是IPV4地址10.4.7.12
-p 指定etcdkeeper http监听的端口

# systemctl start etcdkeeper                   启动etcdkeeper服务
# systemctl stop etcdkeeper                    停止etcdkeeper服务
# systemctl enable etcdkeeper.service          设置开机自启动
# systemctl disable etcdkeeper.service         停止开机自启动

访问安全
如果启用了etcd自身的授权,无需特别关心
如果没有自动,可以考虑使用Nginx反代,使用base auth授权.

遗留的问题
当发布到公网环境时,v2可以查看到数据,v3查看不到数据。 目前没查到原因.

测试访问
http://192.168.112.20:8800/etcdkeeper/

复制代码

华为云开年送福利:

福利1:免费试用海外云主机和云原生容器

进入免费试用专区 【实名才可领取】:

 

福利2:超低折扣

原价1244.76元一年的1C2G1M带宽的服务器现在只需要:99元,赠送主机安全

福利三:

终极大奖,华为云永久VIP(实名注册第59、119、189...以此类推)

购买华为云永久8折权限(除云专线,硬件产品,混托类产品,域名,竞价实例,储值卡,云市场产品,国际云联盟节点,HCS Online解决文案以上特定产品),均可享永久8折。

参与攻略:

1,长按识别下方二维码关联注册即可
    

2,实名认证

接下来,就可以静等开奖了,此活动持续到月底结束,我们会每隔五个工作日后进行开奖,请小伙伴注意查收。


版权声明:本文为qq_33648367原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。