• k8s安装——ubuntu


    目录

    一、环境准备

    二、安装docker(所有机器——是指所有的节点包含master和node,后面也一样单独装的会说明)

    三、设置k8s环境准备条件(所有机器)

    四、安装与配置k8s

            1 安装 kubelet kubeadm kubectl(master上执行)

            2 部署 master (master上执行)

    (1)首先查看kubeadm config 依赖的images有哪些:

    (2)然后从国内镜像拉取这些镜像(有些是可以直接拉取的,比如 k8s.gcr.io/coredns/coredns:v1.8.6)

     (3)然后根据(1)中的依赖对这些镜像进行重命名(这里要注意重命名的版本号有的是带v的,有的是不带的)注意看清楚。

        3 执行初始化操作

        4 获取加入集群的命令

        5 部署工作节点(在node上执行)

         (1)安装环境

         (2)加入集群

    五、部署 Calico(master机器)

    六、完成


    一、环境准备

    本次安装的docker和k8s版本为:

    ubuntu -v20.04

    k8s -v1.23.1

    主机

    内网地址

    说明

    47.200.162.6

    172.31.186.226

    master节点,能连外网,至少2核CPU,2G内存

    47.200.168.250

    172.31.186.227

    node节点,能连外网,至少2核CPU,2G内存

    二、安装docker(所有机器——是指所有的节点包含master和node,后面也一样单独装的会说明)

    1. # 安装docker所需的工具(安装最新版即可)
    2. apt-get update
    3. apt-get install docker.io -y
    4. # 设置开机启动并启动docker  
    5. sudo systemctl start docker
    6. sudo systemctl enble docker

    三、设置k8s环境准备条件(所有机器)

    1. # 禁用交换分区(在旧版的 k8s 中 kubelet 都要求关闭 swapoff ,但最新版的 kubelet 其实已经支持 swap ,因此这一步其实可以不做。)
    2. swapoff -a
    3. # 永久禁用,打开/etc/fstab注释掉swap那一行。  
    4. sudo vim /etc/fstab
    5. # 修改内核参数(首先确认你的系统已经加载了 br_netfilter 模块,默认是没有该模块的,需要你先安装 bridge-utils)
    6. apt-get install -y bridge-utils
    7. modprobe br_netfilter
    8. lsmod | grep br_netfilter
    9. # 如果报错找不到包,需要先更新 apt-get update -y

    四、安装与配置k8s

            1 安装 kubelet kubeadm kubectl(master上执行)

    1. # 安装基础环境
    2. apt-get install -y ca-certificates curl software-properties-common apt-transport-https curl
    3. curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
    4. # 执行配置k8s阿里云源  
    5. vim /etc/apt/sources.list.d/kubernetes.list
    6. #加入以下内容
    7. deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
    8. # 执行更新
    9. apt-get update -y
    10. # 安装kubeadm、kubectl、kubelet  
    11. apt-get install -y kubelet=1.23.1-00 kubeadm=1.23.1-00 kubectl=1.23.1-00
    12. # 阻止自动更新(apt upgrade时忽略)。所以更新的时候先unhold,更新完再hold。
    13. apt-mark hold kubelet kubeadm kubectl

    安装如果报错的话,需要先卸载原有的kubectl、kubeadm、kubelet 然后再执行安装       

            2 部署 master (master上执行)

            创建kubeadm-config.yaml 配置文件,文件内容如下:

    1. apiVersion: kubeadm.k8s.io/v1beta3
    2. bootstrapTokens:
    3. - groups:
    4. - system:bootstrappers:kubeadm:default-node-token
    5. token: abcdef.0123456789abcdef
    6. ttl: 24h0m0s
    7. usages:
    8. - signing
    9. - authentication
    10. kind: InitConfiguration
    11. localAPIEndpoint:
    12. advertiseAddress: 172.31.186.226
    13. bindPort: 6443
    14. nodeRegistration:
    15. criSocket: /var/run/dockershim.sock
    16. imagePullPolicy: IfNotPresent
    17. name: master
    18. taints: null
    19. ---
    20. apiServer:
    21. timeoutForControlPlane: 4m0s
    22. apiVersion: kubeadm.k8s.io/v1beta3
    23. certificatesDir: /etc/kubernetes/pki
    24. clusterName: kubernetes
    25. controllerManager: {}
    26. dns: {}
    27. etcd:
    28. local:
    29. dataDir: /var/lib/etcd
    30. imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
    31. kind: ClusterConfiguration
    32. kubernetesVersion: 1.23.1
    33. networking:
    34. dnsDomain: cluster.local
    35. serviceSubnet: 10.96.0.0/12
    36. scheduler: {}
    37. ---
    38. kind: KubeletConfiguration
    39. apiVersion: kubelet.config.k8s.io/v1beta1
    40. #cgroupDriver: systemd
    41. cgroupDriver: cgroupfs

            修改 文件中的advertiseAddress 参数为当前机器的局域网地址

            在运行 kubeadm init 之前可以先执行 kubeadm config images pull 来测试与 gcr.io 的连接,kubeadm config images pull尝试是否可以拉取镜像,如果你的服务器再国内,由于某些原因,是无法访问"k8s.gcr.io", "gcr.io", "quay.io"

    先测试:

    kubeadm config images pull

    如果不能正常拉取,那么接着往下,如果可以正常拉取,可以直接跳转到 下一步 四.3

    (1)首先查看kubeadm config 依赖的images有哪些:

    1. #查看kubeadm config所需的镜像
    2. kubeadm config images list
    3. #执行结果如下
    4. k8s.gcr.io/kube-apiserver:v1.23.8
    5. k8s.gcr.io/kube-controller-manager:v1.23.8
    6. k8s.gcr.io/kube-scheduler:v1.23.8
    7. k8s.gcr.io/kube-proxy:v1.23.8
    8. k8s.gcr.io/pause:3.6
    9. k8s.gcr.io/etcd:3.5.1-0
    10. k8s.gcr.io/coredns/coredns:v1.8.6

    (2)然后从国内镜像拉取这些镜像(有些是可以直接拉取的,比如 k8s.gcr.io/coredns/coredns:v1.8.6)

    1. #从国内镜像拉取
    2. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.23.8
    3. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.23.8
    4. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.23.8
    5. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.23.8
    6. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6
    7. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.1-0
    8. docker pull coredns/coredns:1.8.6

     (3)然后根据(1)中的依赖对这些镜像进行重命名(这里要注意重命名的版本号有的是带v的,有的是不带的)注意看清楚。

    1. #将拉取下来的images重命名为kubeadm config所需的镜像名字
    2. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.23.8 k8s.gcr.io/kube-apiserver:v1.23.8
    3. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.23.8 k8s.gcr.io/kube-controller-manager:v1.23.8
    4. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.23.8 k8s.gcr.io/kube-scheduler:v1.23.8
    5. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.23.8 k8s.gcr.io/kube-proxy:v1.23.8
    6. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6 k8s.gcr.io/pause:3.6
    7. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.1-0 k8s.gcr.io/etcd:3.5.1-0
    8. docker tag coredns/coredns:1.8.6 k8s.gcr.io/coredns/coredns:v1.8.6

        3 执行初始化操作

    kubeadm init --config kubeadm-config.yaml

    执行成功后会提醒如下三件事

    会提示你输入如下命令,复制粘贴过来,执行即可。

    1. mkdir -p $HOME/.kube
    2. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    3. sudo chown $(id -u):$(id -g) $HOME/.kube/config

        4 获取加入集群的命令

    记住node加入集群的命令 上面kubeadm init执行成功后会返回给你node节点加入集群的命令,等会要在node节点上执行,需要保存下来,如果忘记了,可以使用如下命令获取。

    kubeadm token create --print-join-command

        5 部署工作节点(在node上执行)

         (1)安装环境

    1. # 安装基础环境
    2. apt-get install -y ca-certificates curl software-properties-common apt-transport-https curl
    3. curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
    4. # 执行配置k8s阿里云源  
    5. vim /etc/apt/sources.list.d/kubernetes.list
    6. #加入以下内容
    7. deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
    8. # 执行更新
    9. apt-get update -y
    10. # 安装kubeadm、kubectl、kubelet  
    11. apt-get install -y kubelet=1.23.1-00 kubeadm=1.23.1-00 kubectl=1.23.1-00
    12. # 阻止自动更新(apt upgrade时忽略)。所以更新的时候先unhold,更新完再hold。
    13. apt-mark hold kubelet kubeadm kubectl

         (2)加入集群

            这里加入集群的命令每个人都不一样,可以登录master节点,使用kubeadm token create --print-join-command 来获取。获取后执行如下。

    kubeadm join 172.31.186.200:6443 --token fmty0x.5v15q0m9nzwd8lcy     --discovery-token-ca-cert-hash sha256:604205e4fd92840baa05977e1770cefcd45ebae251761d94144572f66b1f4e1d

            如果此处报错,则需要重启 即可

    kubeadm reset

    加入成功后,可以在master节点上使用kubectl get nodes命令查看到加入的节点

    五、部署 Calico(master机器)

            以上步骤安装完后,机器搭建起来了,但状态还是NotReady状态,如下图,master机器需要安装Calico。

    kubectl apply -f https://docs.projectcalico.org/v3.21/manifests/calico.yaml

    安装完成后需要等待k8s重新拉起节点

    六、完成

    在master执行,即可看到节点已为Ready状态

    kubectl get nodes

  • 相关阅读:
    ubuntu14.04改静态ip
    xilinx的原语的使用
    stable AIDL
    使用新版Maven-mvnd快速构建项目
    突破瓶颈,火力全开!揭秘六西格玛管理培训公司如何助你一臂之力
    【Vue组件间通信】 全局事件总线、订阅与发布
    JVM笔记:GC 日志分析
    Java版企业电子招标采购系统源码—企业战略布局下的采购寻源
    阿里巴巴对裁员谣言报警
    ElasticSearch+MongoDB:搜索-关键字联想
  • 原文地址:https://blog.csdn.net/qq_40279964/article/details/125429233