1. 关闭swap并关闭防火墙

首先,我们需要先关闭swap和防火墙,否则在安装Kubernetes时会导致不成功:

# 临时关闭
swapoff -a# 编辑/etc/fstab,注释掉包含swap的那一行即可,重启后可永久关闭ufw disable

2.配置阿里源

sudo echo "deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list

然后更新下:

sudo apt update

如果遇到以下问题:

可以记下提示的PUBKEY的最后8位,这里是BA07F4FB,然后执行:

gpg --keyserver keyserver.ubuntu.com --recv-keys BA07F4FB
gpg --export --armor BA07F4FB | sudo apt-key add -
sudo apt-get update

3. 安装组件

sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl #确保不会被自动更新

4. 配置kubelet的cgroup drive

需要确保kubelet的cgroup drive在docker的一致。
分别可以通过以下命令查看:

docker info | grep -i cgroupcat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

若显示不一样,则添加或修改Environment="KUBELET_CGROUP_ARGS=--cgroup-dirver=cgroupfs"

systemctl daemon-reload
systemctl restart kubelet

5. 启动kubelet

systemctl enable kubelet && systemctl start kubelet

6. 下载K8S的Docker镜像

/etc/apt/sources.list中添加阿里源:


deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial maindeb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates maindeb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universedeb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe

sudo apt update更新下源。

首先使用kubeadm config images list显示我们需要下载的镜像。
uploading-image-472461.png

然后从mirrorgooglecontainers上把这些镜像都拉下来,以免在初始化的时候从k8s.gcr.io拉取:

docker pull mirrorgooglecontainers/kube-apiserver:v1.14.2
docker pull mirrorgooglecontainers/kube-controller-manager:v1.14.2
docker pull mirrorgooglecontainers/kube-scheduler:v1.14.2
docker pull mirrorgooglecontainers/kube-proxy:v1.14.2
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd:3.3.10
docker pull coredns/coredns:1.3.1

具体版本请自行修改。

然后修改tag成k8s执行init检查的镜像:


docker tag mirrorgooglecontainers/kube-apiserver:v1.14.2 k8s.gcr.io/kube-apiserver:v1.14.2
docker tag mirrorgooglecontainers/kube-controller-manager:v1.14.2 k8s.gcr.io/kube-controller-manager:v1.14.2
docker tag mirrorgooglecontainers/kube-scheduler:v1.14.2 k8s.gcr.io/kube-scheduler:v1.14.2
docker tag mirrorgooglecontainers/kube-proxy:v1.14.2 k8s.gcr.io/kube-proxy:v1.14.2
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag mirrorgooglecontainers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1

注意,至此基础的组件都安装完成,接下来要根据是master节点还是普通node节点来分别配置。

7. master节点配置

在master节点上运行:

kubeadm init --pod-network-cidr=10.0.0.0/24 --kubernetes-version=v1.14.2 --apiserver-advertise-address=10.0.2.15

注意:

pod-network-cidr: 选项--pod-network-cidr=10.0.0.0/24表示集群将使用网络的子网范围;选项--kubernetes-version=v1.14.2指定K8S版本,必须和前面导入的镜像一致。选项--apiserver-advertise-address表示绑定的网卡IP,这里是指定所用网络的网卡。若执行kubeadm init出错或强制终止,则再需要执行该命令时,需要先执行kubeadm reset重置。

执行成功后,它提示还需要执行:

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

此外最后还会提示其他节点加入集群时的命令:

kubeadm join 10.0.2.15:6443 --token zuhiop.bmxq2jofv1j68o9o \--discovery-token-ca-cert-hash sha256:b65ca09d1f18ef0af3ded2c831c609dfe48b19c5dc53a8398af5b735603828fb

不过需要注意的是这里的token值24小时后会失效,因此,当以后还想加入节点时,可以先用kubeadm token list命令查看当前的token表,并在master节点上执行openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'来查看hash。

此时我们查看网络状态kubectl get pod -n kube-system,可以发现都处于Pending阻塞状态,此时,我们需要配置网络,直接使用Calico,即执行:

kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml

(注意这里也是有版本号的,如果不是很清楚是多少,可以直接访问官网获取最新的进行尝试:https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/)

过段时间,再执行kubectl get pod -n kube-system就会发现都处于running状态了。

最后将master设为工作节点:

kubectl taint nodes --all node-role.kubernetes.io/master-

执行成功时会显示

node/xl-virtualbox untainted

对于mater至此配置成功,可以使用kubectl get nodes命令查看节点状态。当然目前只有一个master节点。

8.普通工作节点

对于普通的node节点,只需执行:

kubeadm join 10.0.2.15:6443 --token zuhiop.bmxq2jofv1j68o9o \--discovery-token-ca-cert-hash sha256:b65ca09d1f18ef0af3ded2c831c609dfe48b19c5dc53a8398af5b735603828fb

就可以了。

如果此时在master节点上使用kubectl get nodes查看节点的状态时'NotReady',请在对应主机上重启docker服务即可:

 systemctl restart docker

最后,可以看到两个节点都能正常工作了:

PS:
为了每台节点显示名称不一样,最好是给每个节点设置不同的hostname,可以通过以下命令修改:

hostnamectl set-hostname new-name

转载于:https://www.cnblogs.com/xl2432/p/10933022.html

Ubuntu下搭建Kubernetes集群(3)--k8s部署相关推荐

  1. ubuntu下搭建redis集群

    前言 ubuntu下搭建redis集群步骤 步骤 准备工作 redis的集群管理工具依赖于ruby,先安装 sudo apt-get install ruby 上传redis和ruby的接口配置文件 ...

  2. k8s学习(2)- 虚拟机搭建搭建Kubernetes集群(1.24.2)

    虚拟机搭建搭建Kubernetes集群 环境 规划 虚拟机搭建 配置网络 解决和主机复制粘贴的问题 使用MobaXterm连接虚拟机 安装vmware tools(建议使用MobaXterm) 配置y ...

  3. Kubernetes入门--搭建Kubernetes集群,并启动容器服务

    英文原作者:Ben Cane  翻译作者:Miazzy 翻译&转载:https://blog.codeship.com/getting-started-with-kubernetes/ Kub ...

  4. Kubeadm介绍与使用Kubeadm搭建kubernetes集群环境

    文章目录 1.Kubeadm介绍 2.使用Kubeamd搭建kubernetes集群环境 2.1.首先准备一个三台的centos机器 2.2.yum -y update [在三台机器上执行更新包] 2 ...

  5. 使用VirtualBox【四步】搭建Kubernetes集群(2023-02-13)

    文章内容: 使用VirtualBox.Containerd.Kubeadm等在本地搭建一个用于测试的3节点Kubernetes集群. 搭建过程中踩过的坑以及解决方案说明. 搭建环境:MacOS Mon ...

  6. Centos7搭建Kubernetes集群

    @Author:By Runsen Kubernetes Kubernetes 及其整个生态系统(工具.模块.插件等)均使用 Go 语言编写,从而构成一套面向 API.可高速运行的程序集合,这些程序文 ...

  7. 中通快递关键业务和复杂架构挑战下的 Kubernetes 集群服务暴露实践

    本文是上海站 Meetup 讲师王文虎根据其分享内容整理的文章. KubeSphere 社区的小伙伴们,大家好.我是中通快递容器云平台的研发工程师王文虎,主要负责中通快递容器云平台开发.应用容器化推广 ...

  8. 如何在零停机的情况下迁移 Kubernetes 集群

    作者:顾静(子白)|阿里云高级研发工程师:谢瑶瑶(初扬)|阿里云技术专家 导语: 随着云原生理念在企业中的深入和践行,应用容器化的比例大幅提升.是否可以保证应用容器化迁移过程中的平稳切换,保证应用不停 ...

  9. Redis集群搭建(转自一菲聪天的“Windows下搭建Redis集群”)

    配置Redis参考:http://blog.csdn.net/zsg88/article/details/73715947 使用Ruby配置集群参考:https://www.cnblogs.com/t ...

最新文章

  1. Activit流程部署、删除
  2. 农商互联农民丰收节交易会-万祥军:产销对接谋定功能农业
  3. php 7连接mysql数据库
  4. Error opening terminal: xterm-256color
  5. MSP432P401R TI Drivers 库函数学习笔记(六)UART 串口
  6. 不断迭代,严苛细节,最终性能如何满足? 基于ELK的大数据平台实践分享
  7. 白话(whitening)
  8. 诗与远方:无题(六十三)- 杂诗,然,矣
  9. pandownload 替代品_Pandownload倒下了,找一款替代品
  10. Altium Designer--多层线路的PDF文件输出
  11. 关于Sentaurus的日常(二)(Carrier Transport Models)
  12. 南京大学LANDS组
  13. 【WLAN】【基础知识】WIFI那些事儿之DFS
  14. OPPO VIVO 三星 小米破网络锁,改全网通与案例分析
  15. 简单七个步骤写一份策划方案(上)
  16. 100%BIM学员的疑惑:不会CAD可以学Revit吗?
  17. 重庆SEO优化高手更新网站文章的窍门
  18. 白盒测试方法|白盒测试的六种方法比较分析
  19. 用友软件T3版本不同的开账时间,期初余额应该如何录入?
  20. 计算机字符格式化集体备课教案,集体备课教案范文

热门文章

  1. 【网址收藏】kubebuiler中文文档
  2. 重置mysql密码的命令
  3. CDH 版本Hadoop Yarn配置容量调度器(默认是公平调度器)
  4. Kafka 2.7.0服务器允许客户端远程连接
  5. helm values使用示例:变量定义及使用
  6. Hadoop hdfs文件操作常用命令
  7. Python Django 正向查询与逆向查询
  8. Lua脚本式编程示例
  9. java new 多线程_Java多线程:Java多线程执行框架
  10. 数据结构与算法 / 排序算法(2)