zoukankan      html  css  js  c++  java
  • 2020年3月16日第一天,今天计划学习:K8S Kubeadm 1.14的完美部署

    ------------恢复内容开始------------

    一、部署docker

    1. 1.   部署docker容器虚拟化平台并配置docker的环境

    下载新的yum配置文件

    wget http://mirrors.aliyun.com/repo/Centos-7.repo

    [root@mater ~]# cd /etc/yum.repos.d

    [root@mater yum.repos.d]# ll

     

    1. 2.   安装docker的环境依赖

    [root@mater yum.repos.d]# yum install -y yum-utils device-mapper-persistent-data lvm2

    [root@mater yum.repos.d]# yum -y install device-mapper-persistent-data lvm2

    1. 3.   配置docker的国内yum源

    [root@mater yum.repos.d]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

     

    [root@mater yum.repos.d]#ll

     

     

    4.安装docker-ce并启动同时设置成开机自启动

     

    [root@mater ~]# yum install docker-ce docker-ce-cli containerd.io -y

    [root@mater ~]# systemctl start docker

    [root@mater ~]# systemctl enable docker

     

    5.查看docker版本信息

    [root@mater ~]# docker version

     

     

    [root@mater ~]# docker info

     

     

     

     

    6.使用国内aliyun的docker镜像加速器,提升pull的速度;

    https://cr.console.aliyun.com/

     

     

    7.创建配置文件deamon.json

    [root@mater ~]# vim /etc/docker/daemon.json

     

    {

    "registry-mirrors":["https://8w3y99jm.mirror.aliyuncs.com"]

    }

    [root@mater ~]# systemctl daemon-reload

    [root@mater ~]# systemctl restart docker

     

     

     

    8.下载docker镜像

    [root@mater ~]# docker pull centos

    [root@mater ~]# docker images

     

     

    9.开启网络转发功能

    [root@mater ~]# vim /etc/sysctl.conf

    net.ipv4.ip_forward =1

     

     

    10.关闭防火墙并重新启动docker

    [root@mater ~]# systemctl stop firewalld

    Failed to stop firewall.service: Unit firewall.service not loaded.

    [root@mater ~]# systemctl restart docker

     

    11.运行docker:

     

    [root@mater ~]# docker run -it centos:latest bash

    [root@55faa3007fa6 /]# cat /etc/redhat-release

    CentOS Linux release 8.0.1905 (Core)

     

    12.安装HTTPD的docker容器

    [root@mater ~]# docker run -it centos:latest /bin/bash

    [root@8a1643dcfea5 /]# yum -y install httpd

    方法一.制作含HTTP的docker容器

    [root@mater ~]# docker ps -a

     

    [root@mater ~]# docker commit 1e7039d965d5 centos:apache

     

     

    方法二.通过docker build创建一个基于centos的http web 服务镜像

    [root@mater ~]# mkdir /docker-build

    [root@mater docker-build]# touch Dockerfile

    编辑Dockerfile文件;

     

    编辑start.sh文件

     

    Docker-build目录下的文件

     

    制作docker镜像

    [root@mater docker-build]# docker build -t centos:httpd ./

     

    启动制作好的docker镜像并端口转发

    [root@mater docker-build]# docker run -d -p 80:80 centos:httpd

     

    二、配置好基础网络及防火墙关闭

    1、配置hostname主机名称:

    [root@m1 ~]# vim /etc/hostname

    #修改主机名称的方法:

    [root@m1 ~]#hostnamectl set-hostname m1

    # 配置host,使所有节点之间可以通过hostname互相访问

    $ vi /etc/hosts

    # <node-ip> <node-hostname>

    #配置hosts 让所有节点之间可以通过hostname互相访问

    [root@m1 ~]# vim /etc/hosts

    192.168.23.10 m1

    192.168.23.11 m2

    192.168.23.12 m3

    2 、安装依赖包

    [root@m1 ~]# yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp

    3 、关闭防火墙、swap,重置iptables

    @ 关闭防火墙

    [root@m1 ~]# systemctl stop firewalld && systemctl disable firewalld

    @ 重置iptables

    [root@m1 ~]# iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT

    @ 关闭swap

    [root@m1 ~]# swapoff -a

    [root@m1 ~]# sed -i '/swap/s/^(.*)$/#1/g' /etc/fstab

    @  关闭selinux

    [root@m1 ~]# setenforce 0

    [root@m1 ~]# cd /etc/selinux

    [root@m1 selinux]# vim config

    SELINUX=Permissive

    @ 关闭dnsmasq(否则可能导致docker容器无法解析域名)

    [root@m1 ~]# systemctl stop dnsmasq && systemctl disable dnsmasq

    三、配置免密登录其他服务器

    [root@m1 ~]# ssh-keygen -t rsa -f y

    配置免密码登录其他节点

    [root@m1 ~]# for i in m1 m2 m3;do ssh-copy-id -i .ssh/id_rsa.pub $i;done

     

     

    四、对m1 m2 m3进行做快照

    五、下载k8s 1.14版本

    1、系统参数设置

    # 制作配置文件

    [root@m1 ~]# cat > /etc/sysctl.d/kubernetes.conf <<EOF

    net.bridge.bridge-nf-call-iptables=1

    net.bridge.bridge-nf-call-ip6tables=1

    net.ipv4.ip_forward=1

    vm.swappiness=0

    vm.overcommit_memory=1

    vm.panic_on_oom=0

    fs.inotify.max_user_watches=89100

    EOF

    # 生效文件

    [root@m1 ~]#sysctl -p /etc/sysctl.d/kubernetes.conf

    2 安装方法

    # 配置yum源(mirrors.aliyun.com)

    [root@m1 ~]#cat <<EOF > /etc/yum.repos.d/k8s.repo

    [k8s]

    name=Kubernetes

    baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

    enabled=1

    gpgcheck=0

    EOF

     

    # 安装工具

    # 找到要安装的版本号

    [root@m1 ~]# yum list kubeadm --showduplicates | sort -r

     

    # 安装指定版本(这里用的是1.14.0)

    [root@m1 ~]# yum install -y kubeadm-1.14.0-0 kubelet-1.14.0-0 kubectl-1.14.0-0 --disableexcludes=kubernetes

     

     

    [root@m1 ~]#yum install -y kubeadm-1.14.9-0 kubelet-1.14.9-0 kubectl-1.14.9-0 --disableexcludes=kubernetes

     

    # 设置kubelet的cgroupdriver(kubelet的cgroupdriver默认为systemd,如果上面没有设置docker的exec-opts为systemd,这里就需要将kubelet的设置为cgroupfs)

     

    # 启动kubelet

    [root@m1 ~]#systemctl enable kubelet && systemctl start kubelet

    3 开始部署

    K8S v1.14.9的版本需要部署的IMAGES

    k8s.gcr.io/kube-apiserver:v1.14.9

    k8s.gcr.io/kube-controller-manager:v1.14.9

    k8s.gcr.io/kube-scheduler:v1.14.9

    k8s.gcr.io/kube-proxy:v1.14.9

    k8s.gcr.io/pause:3.1

    k8s.gcr.io/etcd:3.3.10

    k8s.gcr.io/coredns:1.3.1

     

    制作好下载镜像的.sh文件

    #!/bin/bash
    KUBE_VERSION=v1.14.9
    KUBE_PAUSE_VERSION=3.1
    ETCD_VERSION=3.3.10
    DNS_VERSION=1.3.1
    username=registry.cn-hangzhou.aliyuncs.com/google_containers

    images=(kube-proxy-amd64:${KUBE_VERSION}
    kube-scheduler-amd64:${KUBE_VERSION}
    kube-controller-manager-amd64:${KUBE_VERSION}
    kube-apiserver-amd64:${KUBE_VERSION}
    pause:${KUBE_PAUSE_VERSION}
    etcd-amd64:${ETCD_VERSION}
    coredns:${DNS_VERSION}
        )

    for image in ${images[@]}
    do
        docker pull ${username}/${image}
        docker tag ${username}/${image} k8s.gcr.io/${image}
        #docker tag ${username}/${image} gcr.io/google_containers/${image}
        docker rmi ${username}/${image}
    done

     

    imageRepository: k8s.gcr.io     #镜像仓库地址,在国内的话,可以修改为gcr.azk8s.cn/google_containers

    [root@m1 ~]# kubeadm config images pull --config=init-config.yaml

     

    # kubeadm config print init-defaults > init.default.yaml

    # vim init-config.yaml

    # kubeadm images list

    Available Commands:

      init-defaults Print default init configuration, that can be used for 'kubeadm init'

      join-defaults Print default join configuration, that can be used for 'kubeadm join'

    join-defaults文件:

    apiVersion: kubeadm.k8s.io/v1beta1

    caCertPath: /etc/kubernetes/pki/ca.crt

    discovery:

      bootstrapToken:

        apiServerEndpoint: kube-apiserver:6443

        token: abcdef.0123456789abcdef

        unsafeSkipCAVerification: true

      timeout: 5m0s

      tlsBootstrapToken: abcdef.0123456789abcdef

    kind: JoinConfiguration

    nodeRegistration:

      criSocket: /var/run/dockershim.sock

      name: m2

    修改好的join-confing.yaml文件:

    apiVersion: kubeadm.k8s.io/v1beta1

    kind: JoinConfiguration

    discovery:

      bootstrapToken:

        apiServerEndpoint: 192.168.23.10:6443

        token: abcdef.0123456789abcdef

        unsafeSkipCAVerification: true

      tlsBootstrapToken: abcdef.0123456789abcdef

    nodeRegistration:

      name: m2

     

    安装Node 节点

    [root@m2 ~]# kubeadm join --config=jion-config.yaml

    ------------恢复内容结束------------

  • 相关阅读:
    观察者设计模式
    JSP中用jsp:param传递中文参数出现乱码
    使用.msi进行安装mysql程序(超详细)
    扒来的lstdc++.6.0.9有效解决方案
    HTML响应状态码
    砸壳
    ipv6
    犀利的文章
    安装ReactNative开发IDE
    创建ReactNative的iOS项目
  • 原文地址:https://www.cnblogs.com/yyuuee/p/12505363.html
Copyright © 2011-2022 走看看