k8s(01).二进制部署kubernetes

kubernetes的五个组件
master节点的三个组件
kube-apiserver
整个集群的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制。
kube-controller-manager
控制器管理器
负责维护集群的状态,比如故障检测、自动扩展、滚动更新等。保证资源到达期望值。
kube-scheduler
调度器
经过策略调度POD到合适的节点上面运行。分别有预选策略和优选策略。
node节点的两个组件
kubelet
在集群节点上运行的代理,kubelet会通过各种机制来确保容器处于运行状态且健康。kubelet不会管理不是由kubernetes创建的容器。kubelet接收POD的期望状态(副本数、镜像、网络等),并调用容器运行环境来实现预期状态。
kubelet会定时汇报节点的状态给apiserver,作为scheduler调度的基础。kubelet会对镜像和容器进行清理,避免不必要的文件资源占用。
kube-proxy
kube-proxy是集群中节点上运行的网络代理,是实现service资源功能组件之一。kube-proxy建立了POD网络和集群网络之间的关系。不同node上的service流量转发规则会通过kube-proxy来调用apiserver访问etcd进行规则更新。
service流量调度方式有三种方式:userspace(废弃,性能很差)、iptables(性能差,复杂,即将废弃)、ipvs(性能好,转发方式清晰)。
1.集群架构
主机名 IP地址
hdss7-11.host.com 10.4.7.11
hdss7-12.host.com 10.4.7.12
hdss7-21.host.com 10.4.7.21
hdss7-22.host.com 10.4.7.22
hdss7-200.host.com 10.4.7.200
2.基础环境准备
2.1.系统设置
2.1.1.设置主机名
hostnamectl set-hostname hdss7-xx.host.com
2.1.2.关闭防火墙和selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
2.1.3.设置网卡
cat /etc/sysconfig/network-scripts/ifcfg-eth0 
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.4.7.xx
NETMASK=255.255.255.0
GATEWAY=10.4.7.254
DNS1=10.4.7.254
2.1.4.设置yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo  http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo  http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
2.1.5.安装常用工具
yum install wget net-tools telnet tree nmap sysstat lrzsz dos2unix bind-utils -y
2.2.安装bind服务

hdss7-11.host.com 上

2.2.1.安装bind 9
yum install bind -y
2.2.2.配置bind 9

img

vi /etc/named.conf
listen-on port 53 { 10.4.7.11; }; 
allow-query     { any; };
forwarders      { 10.4.7.254; };
recursion yes;
dnssec-enable no;
dnssec-validation no
##########
增加自定义域和对于配置
named-checkconf
vi /etc/named.rfc1912.zones  
 # 添加自定义主机域
zone "host.com" IN {
        type  master;
        file  "host.com.zone";
        allow-update { 10.4.7.11; };
};
# 添加自定义业务域
zone "od.com" IN {
        type  master;
        file  "od.com.zone";
        allow-update { 10.4.7.11; };
};
##########
为自定义域host.com创建配置文件
vi  /var/named/host.com.zone
$ORIGIN host.com.
$TTL 600    ; 10 minutes
@       IN SOA  dns.host.com. dnsadmin.host.com. (
                2020032001 ; serial
                10800      ; refresh (3 hours)
                900        ; retry (15 minutes)
                604800     ; expire (1 week)
                86400      ; minimum (1 day)
                )
            NS   dns.host.com.
$TTL 60 ; 1 minute
dns                A    10.4.7.11
HDSS7-11           A    10.4.7.11
HDSS7-12           A    10.4.7.12
HDSS7-21           A    10.4.7.21
HDSS7-22           A    10.4.7.22
HDSS7-200          A    10.4.7.200
##########
为自定义域od.com创建配置文件
vi  /var/named/od.com.zone
$ORIGIN od.com.
$TTL 600    ; 10 minutes
@           IN SOA  dns.od.com. dnsadmin.od.com. (
                2020032001 ; serial
                10800      ; refresh (3 hours)
                900        ; retry (15 minutes)
                604800     ; expire (1 week)
                86400      ; minimum (1 day)
                )
                NS   dns.od.com.
$TTL 60 ; 1 minute
dns                A    10.4.7.11
2.2.3.检查配置并启动bind 9
named-checkconf
systemctl start named
netstat -lntup|grep 53
2.2.4.检查
[root@hdss7-11 ~]# dig -t A hdss7-11.host.com @10.4.7.11 +short
10.4.7.11
[root@hdss7-11 ~]# dig -t A hdss7-12.host.com @10.4.7.11  +short
10.4.7.12
[root@hdss7-11 ~]# dig -t A hdss7-21.host.com @10.4.7.11  +short
10.4.7.21
[root@hdss7-11 ~]# dig -t A hdss7-22.host.com @10.4.7.11  +short
10.4.7.22
[root@hdss7-11 ~]# dig -t A hdss7-200.host.com @10.4.7.11  +short
10.4.7.200
2.2.5.配置DNS客户端

Linux所有主机

vi /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=10.4.7.11
##########
vi /etc/resolv.conf
search host.com
nameserver 10.4.7.11
##########
systemctl restart network

Windows主机

wmnet8网卡更改DNS:10.4.7.11
2.2.6.检查

Linux

ping www.baidu.com
ping hdss7-200

Windows

ping hdss7-200.host.com
2.3.准备签发证书环境

hdss7-200.host.com 上

2.3.1.安装cfssl
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.3.2.创建生成ca证书csr的json配置文件
mkdir /opt/certs
vi  /opt/certs/ca-csr.json
{
    "CN": "OldboyEdu",
    "hosts": [
    ],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "ST": "beijing",
            "L": "beijing",
            "O": "od",
            "OU": "ops"
        }
    ],
    "ca": {
        "expiry": "175200h"
    }
}

CN: Common Name,浏览器使用该字段验证网站是否合法,一般写的是域名。非常重要。浏览器使用该字段验证网站是否合法

C: Country, 国家

ST: State,州,省

L: Locality,地区,城市

O: Organization Name,组织名称,公司名称

OU: Organization Unit Name,组织单位名称,公司部门

2.3.3.生成ca证书文件
cd /opt/certs
cfssl gencert -initca ca-csr.json | cfssl-json -bare ca
ll
ca.csr  
ca-csr.json  
ca-key.pem
ca.pem
2.4.部署docker

hdss7-21.host.com,hdss7-22.host.com,hdss7-200.host.com上

2.4.1.安装
[root@hdss7-21 ~]# curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
2.4.2.配置
mkdir  /etc/docker
vi  /etc/docker/daemon.json
{
  "graph": "/data/docker",
  "storage-driver": "overlay2",
  "insecure-registries": ["registry.access.redhat.com","quay.io","harbor.od.com"],
  "registry-mirrors": ["https://q2gr04ke.mirror.aliyuncs.com"],
  "bip": "172.7.21.1/24",
  "exec-opts": ["native.cgroupdriver=systemd"],
  "live-restore": true
}
{ "insecure-registries":["10.4.7.200:443"] }

##########
bip要根据宿主机ip变化 
注意:hdss7-21.host.com   bip 172.7.21.1/24
     hdss7-22.host.com   bip 172.7.22.1/24
     hdss7-200.host.com  bip 172.7.200.1/24
     
{ "insecure-registries":["10.4.7.11:53"] }

2.4.3.启动
mkdir -p /data/docker
systemctl start docker
systemctl enable docker
docker --version
2.5.部署docker镜像私有仓库harbor

hdss7-200.host.com 上

2.5.1.下载软件并解压
harbor官网github地址
https://github.com/goharbor/harbor/releases/download/v1.8.5/harbor-offline-installer-v1.8.5.tgz

[root@hdss7-200 src]# tar xf harbor-offline-installer-v1.8.3.tgz -C /opt/
[root@hdss7-200 opt]# mv /opt/harbor/ harbor-v1.8.3
[root@hdss7-200 opt]# ln -s /opt/harbor-v1.8.3/ /opt/harbor
2.5.2.配置
# 以下是修改项,手动在配置文件中更改
[root@hdss7-200 opt]# vi /opt/harbor/harbor.yml
hostname: harbor.od.com
http:
  port: 180
 harbor_admin_password:Harbor12345
data_volume: /data/harbor
log:
    level:  info
    rotate_count:  50
    rotate_size:200M
    location: /data/harbor/logs

[root@hdss7-200 opt]# mkdir -p /data/harbor/logs
2.5.3.安装docker-compose
[root@hdss7-200 opt]# yum install docker-compose -y
2.5.4.安装harbor
[root@hdss7-200 harbor]# ./install.sh 
2.5.5.检查harbor启动情况
[root@hdss7-200 harbor]# docker-compose ps
[root@hdss7-200 harbor]# docker ps -a
2.5.6. 在7.11配置harbor的dns内网解析
[root@hdss7-11 ~]# vi /var/named/od.com.zone
2020032002 ; serial   #每次修改DNS解析后,都要滚动此ID
harbor             A    10.4.7.200
[root@hdss7-11 ~]# systemctl restart named
[root@hdss7-11 ~]# dig -t A harbor.od.com +short
10.4.7.200
2.5.7.安装NGINX并配置 (使用nginx反向代理harbor)

回到7.200运维机上操作

[root@hdss7-200 harbor]# yum install nginx -y
[root@hdss7-200 harbor]# vi /etc/nginx/conf.d/harbor.od.com.conf
server {
    listen       80;
    server_name  harbor.od.com;

    client_max_body_size 1000m;

    location / {
        proxy_pass http://127.0.0.1:180;
    }
}
[root@hdss7-200 harbor]# nginx -t
[root@hdss7-200 harbor]# systemctl start nginx
[root@hdss7-200 harbor]# systemctl enable nginx
2.5.8.浏览器打开harbor.od.com并测试
[root@hdss7-11 ~]# curl harbor.od.com

1、浏览器输入:harbor.od.com 用户名:admin 密码:Harbor12345

2、新建项目:public 访问级别:公开

3、下载镜像并给镜像打tag

[root@hdss7-200 harbor]# docker pull nginx:1.7.9
[root@hdss7-200 harbor]# docker images |grep 1.7.9
[root@hdss7-200 harbor]# docker tag 84581e99d807 harbor.od.com/public/nginx:v1.7.9

4、登录harbor并上传到仓库

[root@hdss7-200 harbor]# docker login harbor.od.com
[root@hdss7-200 harbor]# docker push harbor.od.com/public/nginx:v1.7.9

pauser镜像是k8s启动pod时,预先用来创建相关资源(如名称空间)的

nginx镜像是k8s部署好以后,我们测试pod创建所用的

docker login harbor.od.com -uadmin -pHarbor12345
docker pull kubernetes/pause
docker pull nginx:1.7.9
docker tag kubernetes/pause:latest harbor.od.com/public/pause:latest
docker tag nginx:1.17.9 harbor.od.com/public/nginx:v1.17.9
docker push harbor.od.com/public/pause:latest
docker push harbor.od.com/public/nginx:v1.17.9

注意:无法登陆harbor

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VvkzQpN0-1659773331249)(C:\Users\Sulemon\AppData\Roaming\Typora\typora-user-images\1611306849866.png)]

在 200 的/etc/hosts 添加harbor.od.com的地址

  1. 4.7.200 harbor.odcom
2.5.9.检查**

可以看到NGINX镜像已经上传到public下

2.6 准备nginx文件服务

创建一个nginx虚拟主机,用来提供文件访问访问,主要依赖nginx的autoindex属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值