惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
Google DeepMind News
Google DeepMind News
云风的 BLOG
云风的 BLOG
WordPress大学
WordPress大学
Vercel News
Vercel News
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
I
InfoQ
小众软件
小众软件
Recent Announcements
Recent Announcements
博客园 - 【当耐特】
The GitHub Blog
The GitHub Blog
大猫的无限游戏
大猫的无限游戏
美团技术团队
T
The Blog of Author Tim Ferriss
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
MongoDB | Blog
MongoDB | Blog
V
V2EX
J
Java Code Geeks
有赞技术团队
有赞技术团队
博客园 - 聂微东
B
Blog RSS Feed
博客园 - 司徒正美

博客园 - 炎峰森林影

安装 OpenClaw(PowerShell) 安装卸载 WSL 基于Windows,Docker用法 [SSL]免费SSL证书,自动续期 [Python, PHP]存储单位转换 [MySQL]递归生成数据行 解决CSDN不登录就不能复制代码的问题 [JS]判断值为空 [BAT]批量提交到Git [Vue]对Vue,Vuex.store,mixins理解 [Android]keytool创建密钥 [JS]JavaScript this 的六道坎 [MSSQL]跨数据库查询 [Tensorflow]统计功效解析 [Tensorflow]设置双击打开*.ipynb文件 [MSSQL]刷新全部视图 [Python]if-else的多种简洁的写法 [Python]Python __iter__ 深入理解 [Go]VSCode安装GoLang插件依赖安装失败
[网络搭建]Centos8 + Docker-CE + K8S(kubeadm)
炎峰森林影 · 2021-10-23 · via 博客园 - 炎峰森林影

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
    添加映射主机:
  4. 重启

准备

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

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

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

    vi /etc/fstab

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

  5. 安装工具

安装docker-ce

  1. 删除冲突包(如有)

    删除旧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

  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登录