文章目录

  • 前言
  • 一、环境准备说明
  • 二、开始部署
  • 1.部署Harbor
  • 2.部署k8s集群
  • 3.k8s集群和Harbor构建连接,从Harbor上传下载镜像
  • 总结



一、环境准备说明

*本试验是实现kubeadm方式部署k8s的方式,连接Harbor实现容器镜像管理

*试验准备: 四台Centos7虚拟机,同一网段,四台同时操作如下步骤

1.关闭firewalld,并设置开机禁止启动

     systemctl stop  firewalld;  systemctl disable firewalld

2.关闭selinux

      vim /etc/selinux/config , 设置 SELINUX=disabled

3.关闭swap缓存

    vim /etc/fstab   把最后一行注释掉

4.升级内核,原始的Centos是内核3版本,对k8s支持不是很好,因此需要升级内核

     1.  wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

      2. rpm  -Uvh  http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
          yum --enablerepo=elrepo-kernel install -y kernel-lt

      3. 内核升级完成之后reboot

二、部署Harbor,选择四台机器的其中一台为Harbor仓库部署

  *环境部署

install docker:
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    yum -y install yum-utils
    yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
    yum -y install docker-ce
    systemctl enable docker
    systemctl start docker
    systemctl status docker
    docker --version
install docker-compose:
    curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip2.py
    python get-pip2.py
    pip install docker-compose
    docker-compose --version
download:Harbor_install package              
    https:///goharbor/harbor/releases/harbor-offline-installer-v2.3.4.tgz
    tar zxvf harbor-offline-installer-v2.3.4.tgz

 *生成ca证书

*生成ca证书私钥
 cd /root/
 mkdir certs
  cd certs
  openssl genrsa -out ca.key 4096*生成CA证书
 openssl req -x509 -new -nodes -sha512 -days 3650 \
  -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=hub.zyz.com" \
  -key ca.key \
  -out ca.crt*配置Harbor:
     mkdir -p /data/certs
     cp hub.leffss.com.crt /data/certs
     cp hub.leffss.com.key /data/certs
     cd harbor
     cp harbor.yml.tmpl harbor.yml
*修改Harbor配置    vi harbor.yml
     1.注释http  模式,添加https模式和生成的证书路径,不懂自行百度
     2 .初始密码修改
     3.保存退出wq;
     4../prepare;  ./   部署完成。。。。。。。。。。。。。。。。
*harbor的停止与启动
 cd harbor
 docker-compose stop  
 docker-compose start
 docker-compose down:停止并删除容器(慎用)
 docker-compose up -d:创建并启动浏览器访问 https://ip   提示网站不安全是正常的,继续浏览就可以了
其他docker访问Harbor仓库需要进行授权,在/etc/docker/daemon.json中添加
"registry-mirrors": ["https://ip"]
重新加载配置
     systemctl  daemon-reload
     systemctl restart docker
***************************************************************************************************
*使用Kubeadm方式部署k8s 一主两从集群操作如下:
*安装K8s的节点必须是大于1核心的CPU
 步骤:
     1.设置系统主机名以及Host文件的互相解析
     2.安装依赖包:
        yum install -y conntrack ntpdate ntp ipvsadm  iptables curl sysstat libseccomp wget vim net-tools git
     3.k8s初始化的时候会检测系统中有没有虚拟化内存,如果有就报错
         
     4.调整内核参数,对于K8S
     cat > kubernetes.conf <<EOF
     net.bridge.bridge-nf-call-ip6tables=1
     net.bridge.bridge-nf-call-iptables=1
     net.ipv4.ip_forward = 1
     net.ipv6.conf.all.disable_ipv6=1 
     EOF
     5.设置k8s配置开机能被调用:
         cp kubernetes.conf /etc/sysctl.d/kubernetes.conf
         sysctl -p /etc/sysctl.d/kubernetes.conf
     调整系统时区为上海:系统本身就是:不需要
     6.关闭系统不需要的服务:
          systemctl  stop postfix && systemctl disable postfix
     7:设置 rsyslogd 和 systemdjournald
    
     mkdir /var/log/journal 
     mkdir /etc/systemd/journald.conf.d
     cat > /etc/systemd/journald.conf.d/99-prophet.conf <<EOF
     [Journal]
     #持久化保存到磁盘
     Storage=persistent
     #压缩历史日志
     Compress=yes
     SyncIntervalSec=5m
     RateLimitInterval=30s
     RateLimitBurst=1000
     #最大占用空间10G
     SystemMaxUse=10G
     #单日志文件最大200M
     SystemMaxFileSize=200M
     #日志保存时间2周
     MaxRetentionSec=2week
     #不将日志转发到 syslog
     ForwardToSyslog=no
     EOF
     systemctl  restart  systemd-journald
 *设置开机从新内核启动
     grub2-set-default "CentOS Linux (4.4.182-1.el7.elrepo.x86_64) 7 (Core)"
 *安装docker软件
     wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
     yum install -y yum-utils device-mapper-persistent-data lvm2
     yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
     yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7  -y 指定docker版本安装,否则初始化报错
 *设置启动docker和开机自启
 *创建/etc/docker 目录
  mkdir  -p /etc/docker
  #配置daemon  docker子配置文件
  cat > /etc/docker/daemon.json <<EOF
  {
      "registry-mirrors": ["https://hl5vjt48.mirror.aliyuncs.com"],
      "exec-opts": ["native.cgroupdriver=systemd"], 
      "log-driver": "json-file",  存储日志的方式改为json格式
      "log-opts": {
          "max-size": "100m"   存储日志的大小为100MB ,可以通过/var/log/xxx 来查看容器的信息
      }
  }
  EOF
  *创建目录用于存放docker的配置文件
  mkdir -p /etc/systemd/system/docker.service.d
  *重启docker服务:
  systemctl daemon-reload && systemctl restart docker && systemctl enable docker
 *************************
 安装Kubeadm(主从配置)
 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 EOFyum -y install kubeadm-1.15.1 kubectl-1.15.1  kubelet-1.15.1
 systemctl enable kubelet.service  设置开机自启初始化主节点:
    *先下载需要的镜像,配置/etc/docker/daemon.json  配置aliyun的docker仓库,然后查看本架构需要的包:kubeadm config images list
 使用脚本去批量下载:
 images=(
         kube-apiserver:v1.15.12
         kube-controller-manager:v1.15.12
         kube-scheduler:v1.15.12
         kube-proxy:v1.15.12
         pause:3.1
         etcd:3.3.10
         coredns:1.3.1
         )for imageName in ${images[@]}; do
     docker pull /google_containers/$imageName
     docker tag /google_containers/$imageName  /$imageName
     docker rmi /google_containers/$imageName
 done#初始化主节点:  只在master上执行
       kubeadm  config print init-defaults >kubeadm-config.yml  把k8s默认的初始化模版导入kubeadm-config.yml中apiVersion: /v1beta2
 bootstrapTokens:
 - groups:
   - system:bootstrappers:kubeadm:default-node-token
   token: abcdef.0123456789abcdef
   ttl: 24h0m0s
   usages:
   - signing
   - authentication
 kind: InitConfiguration
 localAPIEndpoint:
   advertiseAddress: 1.2.3.4    #修改为当前的服务器节点地址::注意: 修改为当前服务器地址,修改为当前服务器地址
   bindPort: 6443
 nodeRegistration:
   criSocket: /var/run/dockershim.sock
   name: master01
   taints:
   - effect: NoSchedule
     key: /master
 ---
 apiServer:
   timeoutForControlPlane: 4m0s
 apiVersion: /v1beta2
 certificatesDir: /etc/kubernetes/pki
 clusterName: kubernetes
 controllerManager: {}
 dns:
   type: CoreDNS
 etcd:
   local:
     dataDir: /var/lib/etcd
 imageRepository: 
 kind: ClusterConfiguration
 kubernetesVersion: v1.14.0  #修改为当前k8s的版本
 networking:
   dnsDomain: cluster.local
  #添加一个配置
   podSubnet: "10.244.0.0/16"
   serviceSubnet: 10.96.0.0/12
 scheduler: {}
#把k8s的调度方式改为ipvs的调度方式
 ---
 apiVersion: /v1alpha1
 kind: KubeProxyConfiguration
 featureGates:
     SupportIPVSProxyMode: True
 mode: ipvs
# 进行kubead的初始化
 kubeadm init --config=kubeadm-config.yml --experimental-upload-certs | tee kubeadm-init.log      --experimental-upload-certs:用于给其他主节点自动颁发证书,适用于高可用架构
 #部署flannel网络:
 下载kube-flannel.yml
 * 创建网络:kubectl create -f kube-flannel.yml
 * 查看pod下命名空间为kube-system的信息
 kubectl get pod -n kube-system,如果不加kube-system默认是default命名空间,k8s所有的组件都在kube-system命名空间中
 *把node节点加入到master中
 *如果还是NoReady:是因为网络还没有在其他新加入的节点初始化,等一会,也可以运行:kubectl get pod -n kube-system -o wide查看详细的至此:K8S-kubeadm + Harbor(https) 搭建完成。