CentOS上安装部署Kubernetes

不设置国外代理的情况下,使用kubeadm安装部署Kubernetes集群(非高可用),1个master、2个node

一、准备工作

关于机器:

1. 准备的主机可以连接外网,对于私有云场景,需要做好前期准备(例如:配置yum源、镜像仓库源等)

2. 满足安装 Docker 项目所需的要求,比如 64 位的 Linux 操作系统、3.10 及以上的内核版本;

3. x86 或者 ARM 架构均可;

4. 机器之间网络互通,这是将来容器之间网络互通的前提;

关于Linux操作系统:

1. 建议开启 root权限(我这里是已经开启了root权限,以root用户登录节点)

2. 修改各节点的hostname:打开终端输入 hostnamectlset-hostname master8088,这里的命名需要有一定的规范

3. 建议: systemd不低于234,否则执行 df 命令的时候,据说会有一定几率卡死,使用 systemctl--version查看版本信息

4. 建议关闭 swap输入 swapoff-a:如果不满足,据说系统会有一定几率出现 io 飙升,造成 docker 卡死

5.关闭防火墙,终端输入 systemctl stop firewalld&&systemctl disable firewalld

6. 关闭selinux: vi/etc/selinux/config 设置SELINUX=disabled

7. 修改hosts文件, vi/etc/hosts

  1. 192.168.0.1 node2 # ip+hostname格式

  2. 192.168.0.2 node1 #ip是自己主机的ip地址,可以使用ifconfig命令查看

  3. 192.168.0.3 master

8. 添加相关设置 vim/etc/sysctl.conf需要修改的内容如下所示:

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

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

  3. net.ipv4.ip_forward = 1

  4. vm.max_map_count=262144

输入 sysctl-p使设置生效

9. 设置三台机器之间可以使用 ssh+hostname互相登录,

节点之间无密码互相访问设置:

  1. ssh-keygen

  2. cat /root/.ssh/id_rsa.pub >> authorized_keys

  3. #将每个节点的id_rsa.pub写入每个节点的authorized_keys

  4. #最后生成的authorized_keys复制到集群中的每一台计算机的.ssh目录下,覆盖掉之前的authorized_keys

二、安装部署Kubernetes

安装之前需要配置一下 kubernetes这个yum源,否则下面的命令可能失效

1. 在每个节点上安装kubeadm、kubelet、kubectl,这里选择的是CentOS系统,所以使用命令

  1. yum install -y kubelet kubeadm kubectl

安装的kubeadm、kubectl、kubelet默认都是最新的版本(1.13版本),也可以指定版本,比如目前是stable版的1.11

  1. # 查看版本

  2. kubeadm version

  3. kubectl version

  4. kubelet --version

  5. # 下载指定版本

  6. yum list --showduplicates | grep \\\'kubeadm\\\' #查看有哪些版本

  7. yum install -y kubeadm-1.10.5-0.x86_64 # 安装指定版本,这里选择的是1.10.5

2. 部署master节点: 这里需要注意的是,直接使用 kubeadm init会发现需要的官方镜像获取不了(原因就不多说了),不过可以指定镜像仓库源,这里可以选择阿里云杭州的源(感谢^_^):

  1. # kubernetes-version=v1.13.1指定了安装1.13.1版本的kubernetes

  2. # pod-network-cidr是为了后续安装calico这样的网络插件

  3. kubeadm init --kubernetes-version=v1.13.1 --pod-network-cidr=192.168.0.0/16 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers`

可能出现kubelet和kubeapi-server失联的情况,注意排查master部署完成后,会生成一个指令: kubeadm join....这个是后续加入node用的kubeadm还会在部署好master后,最后提示我们第一次使用kubernetes集群需要的配置命令: mkdir...sudo cp...sudo chown...

3. 部署node节点:参照master部署完毕生成的kubeadm join提示,在每个node上执行以下命令

kubeadm join ${master_ip}:6443--token ${kubeadm_token}--discovery-token-ca-cert-hash ${hash_value} 使用 kubectlgetno查看node是否已经添加,并且处于Ready状态,由于网络插件还没安装,应该不会Ready

4. 安装CNI插件calico

  1. $ kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml

  2. $ kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml

5. 删除master上的Taint标签,使之也可以被调度 kubectl taint nodes--all node-role.kubernetes.io/master-

至此,一个kubernetes集群已经可以使用了,接下来还可以部署Dashboard、CSI插件

三、问题记录

Q1:kubeadm一次运行没有通过,但是部分static Pod已经启动?

打开终端输入: kubeadm reset,即可重置集群,修改必要的参数后,再次使用 kubeadm init...命令部署K8s集群。

Q2: 需要事先下载好国内镜像源吗?

不需要

由于 kubeadm在部署 K8s集群时,需要从 k8s.gcr.io上拉取镜像,一些博客里提出先下载好一样的镜像再修改tag以此绕开从国外拉取镜像的问题,但实际上现在已经没有必要这样做了;即便如此,还是记录一下吧…

镜像下载脚本 image_download.sh

  1. #! bin/bash


  2. source=registry.cn-hangzhou.aliyuncs.com/google_containers


  3. images=(


  4. kube-apiserver:v1.13.1


  5. kube-controller-manager:v1.13.1


  6. kube-scheduler:v1.13.1


  7. kube-proxy:v1.13.1


  8. pause:3.1


  9. etcd:3.2.24



  10. coredns:1.2.6


  11. )


  12. for imageName in ${images[@]} ; do

  13. echo $imageName

  14. echo \\\"------------------------------------\\\"

  15. docker pull $source/$imageName

  16. docker tag $source/$imageName k8s.gcr.io/$imageName

  17. done

四、参考资料

  1. 张磊-深入剖析Kubernetes

  2. kubeadm

  3. Creating a single master cluster with kubeadm

原创文章,作者:EBCloud,如若转载,请注明出处:https://www.sudun.com/ask/33235.html

Like (0)
EBCloud的头像EBCloud
Previous 2024年4月2日 下午3:28
Next 2024年4月2日 下午3:28

相关推荐

  • ps4 dns错误,ps4 dns发生错误

    (2) 保持软件最新 PlayStation 4系统和游戏软件更新通常会修复一些安全漏洞,因此我们建议及时更新以确保安全。 (3)使用防火墙 在路由器或PS4 上设置防火墙可以帮助…

    行业资讯 2024年5月7日
    0
  • seoul festa2023

    近年来,随着互联网的快速发展,搜索引擎优化(SEO)行业也备受关注。而在韩国,SEO已经成为一项重要的网络营销策略。但是,你知道吗?2023年,韩国将举办一场盛大的活动——seou…

    行业资讯 2024年3月20日
    0
  • dns污染违法吗,dns清洗机

    DNS污染是一种威胁互联网安全稳定的恶意行为。这会导致用户无法访问正确的网站,增加网络安全风险,影响网络速度和稳定性等问题。为了解决这些问题,需要使用专业的DNS污染清理工具并采取…

    行业资讯 2024年5月10日
    0
  • 设计公司网站的公司,企业设计网站公司排行榜

    随着互联网的快速发展,越来越多的企业开始意识到拥有一个专业设计的企业网站的重要性。但如何选择适合自己企业的网站设计公司?设计网站需要做哪些准备?需要多少钱?这些问题是每个企业主面临…

    行业资讯 2024年4月6日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注