[网络搭建]Centos8 + Docker-CE + K8S(kubeadm)

https://www.kubernetes.org.cn/7189.html

使用kubeadm在Centos8上部署kubernetes1.18(三台机)

https://www.jianshu.com/p/ceaba6a87086

k8s1.20.1 集群安装(三台机)

https://blog.csdn.net/weixin_38320674/article/details/105781372

k8s1.18高可用集群安装-超详细中文官方文档(两台机)

 

安装Centos

  1. 打开“编辑-虚拟网络编辑器”,桥接至真实网卡

  2. 在VMware上安装Centos
    选稍后安装,避开VMware的执行简易安装

  3. 设置硬件(按需设置),载入ISO文件,选VMnet0网络


    必须安装英文语言包(进入安装界面时会要求选语言,选了非英语时就不会安装英文包
  4. 进入系统,测试网络(可选)
    查看本机ip addr(可以在真实主机上ping)ping外网测试

 

修改服务器配置(先配置master)

  1. 设置主机名
    hostnamectl set-hostname k8s-master --static
  2. vi /etc/sysconfig/network-scripts/ifcfg-ens33
    PS:DNS是可选

    BOOTPROTO="static"
    ONBOOT="yes"
    IPADDR="192.168.0.80"
    NETMASK="255.255.255.0"
    GATEWAY="192.168.0.1"
    DNS1="119.29.29.29" # 腾讯DNS
    DNS2="180.76.76.76" # 百度DNS
  3. vi /etc/hosts
    添加映射主机:
    192.168.0.80 k8s-master
  4. 重启

    shutdown -r now

 

准备

  1. 升级所有包
    yum update -y
  2. 关闭防火墙(可选)

    systemctl stop firewalld && systemctl disable firewalld
  3. 关闭 dnsmasq(可选)

    service dnsmasq stop && systemctl disable dnsmasq
  4. 关闭/注释swap
    swapoff -a

    vi /etc/fstab

    注释行:/dev/mapper/cl-swap

  5. 安装工具
    yum install -y wget

 

安装docker-ce

  1. 删除冲突包(如有)

    yum erase podman buildah

    删除旧docker(如有)

    yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
  2. 下载/安装docker-ce
    参考:https://docs.docker.com/engine/install/centos/

    yum install -y yum-utils
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    yum install -y docker-ce docker-ce-cli containerd.io
    systemctl enable --now docker
    
    docker run hello-world # 测试(可选)
  3. 配置内核参数,将桥接的IPv4流量传递到iptables的链

    cat > /etc/sysctl.d/k8s.conf <<EOF
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    sysctl --system

 

安装k8s

参考:https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

参考:https://www.kubernetes.org.cn/7189.html

  1. 添加阿里kubernetes源
    cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-\$basearch
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    exclude=kubelet kubeadm kubectl
    EOF
  2. 将 SELinux 设置为 permissive 模式(相当于将其禁用)
    PS:如SELINUX=disabled可以跳过此步
    setenforce 0
    
    sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

    官方原话:

    通过运行命令 setenforce 0 和 sed ... 将 SELinux 设置为 permissive 模式 可以有效地将其禁用。 这是允许容器访问主机文件系统所必需的,而这些操作时为了例如 Pod 网络工作正常。你必须这么做,直到 kubelet 做出对 SELinux 的支持进行升级为止。

    如果你知道如何配置 SELinux 则可以将其保持启用状态,但可能需要设定 kubeadm 不支持的部分配置

  3. 安装 kubeadm、kubelet 和 kubectl
    yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
    
    systemctl enable --now kubelet

    PS:kubelet 现在每隔几秒就会重启,因为它陷入了一个等待 kubeadm 指令的死循环。

  4. 配置 Docker 守护程序,尤其是使用 systemd 来管理容器的 cgroup
    参考:https://kubernetes.io/zh/docs/setup/production-environment/container-runtimes/#docker
    mkdir /etc/docker
    cat > /etc/docker/daemon.json <<EOF
    {
      "exec-opts": ["native.cgroupdriver=systemd"],
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "100m"
      },
      "storage-driver": "overlay2"
    }
    EOF
    
    systemctl daemon-reload
    systemctl restart docker
  5. 初始化k8s集群
    yum install -y tc
    
    kubeadm init \
    --apiserver-advertise-address=192.168.0.80 \
    --image-repository registry.aliyuncs.com/google_containers \
    --service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16

    kubeadm init出错参考:https://stackoverflow.com/a/67610920

  6. 根据kubeadm init完成提示执行命令
    mkdir -p $HOME/.kube
    cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    chown $(id -u):$(id -g) $HOME/.kube/config

    vi /etc/profile
    在底部添加:export KUBECONFIG=/etc/kubernetes/admin.conf

    source /etc/profile
  7. 执行下面命令,使kubectl可以自动补充
    source <(kubectl completion bash)

 

安装kubernetes-dashboard

  1. 下载文件(去https://github.com/kubernetes/dashboard/releases找个版本下载,master就是最新版)
    PS:可能要FQ
    参考:https://segmentfault.com/a/1190000023130407
    参考:https://computingforgeeks.com/how-to-install-kubernetes-dashboard-with-nodeport/
    wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml
  2. 在文件最底部添加nodeport
    vi recommended.yaml
    PS:官方部署dashboard的服务没使用nodeport,将yaml文件下载到本地,在service里添加nodeport

    ---
    kind: Service
    apiVersion: v1
    metadata:
      labels:
        k8s-app: kubernetes-dashboard
      name: kubernetes-dashboard
      namespace: kubernetes-dashboard
    spec:
      type: NodePort
      ports:
        - port: 443
          targetPort: 8443
          nodePort: 30000
      selector:
        k8s-app: kubernetes-dashboard

    保存,执行下面命令

    kubectl apply -f recommended.yaml
    PS:执行命令错误时运行命令删除重建
    kubectl delete -f recommended.yaml

 

安装calico

  1. 安装
    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

     

在真实主机上打开kubernetes-dashboard

  1. 确认是否全部是Running
    kubectl get pod --all-namespaces
  2. 获取登录token
    # 查看凭证
    kubectl -n kubernetes-dashboard get secret
    
    # 获取token(注意替换)
    kubectl describe secrets -n kubernetes-dashboard kubernetes-dashboard-token-t4hxz | grep token | awk 'NR==3{print $2}'
  3. 在真实主机打开浏览器:https://192.168.0.80:30000/,粘贴上面复制的token登录

posted @ 2021-10-23 15:19  炎峰森林影  阅读(282)  评论(0编辑  收藏  举报