• docker version:19.03.14
  • kubernetes version:1.19.4

本文介绍使用kubeadm安装Kubernetes集群的简单过程。

使用kubeadm安装k8s过程

各节点安装的软件及操作:

  1. master,nodes:安装docker、kubelet、kubeadm、kubectl
  2. master:kubeadm init
  3. nodes:kubadm join

安装

基本配置

  1. 关闭iptables、firewalld、selinux
  2. br_filter
# 未启用模块则无此目录及文件;通过modprobe br_netfilter命令启用
# 查看值是否均为1
cat /proc/sys/net/bridge/bridge-nf-call-iptables
cat /proc/sys/net/bridge/bridge-nf-call-ip6tables
  1. 替换安装源

    替换安装源为国内速度较快的源

使用阿里云docker源安装docker

# step 1: 安装必要的一些系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装Docker-CE
yum makecache fast
yum -y install docker-ce
# Step 4: 开启Docker服务
service docker start # 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ee.repo
# 将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
# Loading mirror speeds from cached hostfile
# Loaded plugins: branch, fastestmirror, langpacks
# docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
# docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
# docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
# Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# yum -y install docker-ce-[VERSION]

使用阿里云kebernetes源安装kubernetes

# 由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时请用 yum install -y --nogpgcheck kubelet kubeadm kubectl 安装
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
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
EOF
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet
  1. 时间一致

    确认服务器间时间同步一致
  2. 更换docker仓库
# 使用aliyun docker仓库或其它
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://4bu92zt0.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

初始化kubernetes master

初始化命令

# 指定网络信息;10.244.0.0/16是flannel的默认地址段,学习使用期间为了省事建议不修改。
kubeadm init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.0.0.0/12

错误解决

[ERROR Swap]: running with swap on is not supported

# 关闭Swap或添加ignore选项参数忽略
# 更改配置文件
cat /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
# 使用错误忽略参数再次执行
kubeadm init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.0.0.0/12 --ignore-preflight-errors=Swap

初始化过程会拉取一些相关docker镜像包,也可以通过命令提前拉取,减少等待

kubeadm config images pull

初始化中的一些问题

安装kubernetes必须组件的一些镜像存储于google镜像站点,无法正常访问,可以通过网络上其他人已经共享的同步好的仓库来拉取这些必要的镜像

# 查看所要拉取的镜像
kubeadm config images list # 通过网络上其他人已共享的仓库拉取;指定仓库地址
kubeadm init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.0.0.0/12 --ignore-preflight-errors=Swap --image-repository="registry.cn-hangzhou.aliyuncs.com/google_containers"

初始化完成后的一些操作

按照提示进行以下操作

# 配置kubectl向API服务器请求时的验证信息
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

初始化完成后记得保存以下信息,然后在nodes节点上执行以下命令使其加入kubernetes集群

kubeadm join 172.16.25.130:6443 --token ****** \
--discovery-token-ca-cert-hash ******

确认可用

# 执行此命令会显示client和server版本,能够显示则表示两者均正常
kubectl version # 查看当前kubernetes namespaces
kubectl get ns # 查看当前pods,指定查看namespace为kube-system中的pods
kubectl get pods -n kube-system # 查看当前集群中的nodes
kubectl get nodes # 查看组件状态
# 查看组件状态时scheduler和controller-manager可能显示为unhealthy
# 由于默认这两个pod的非安全端口没有开启,健康检查时报错,但是由于本身服务是正常的,只是健康检查的端口没启,所以不影响正常使用。
# 若启用则修改/etc/kubernetes/manifests/kube-controller-manager.yaml和/etc/kubernetes/manifests/kube-scheduler.yaml中--port=0选项,将此行注释或删除后restart kubelet即可
kubectl get cs

node节点

  1. 安装docker、kubectl、kubelet、kubeadm
  2. 使用命令加入kubernetes集群
kubeadm join 172.16.25.130:6443 --token ****** \
--discovery-token-ca-cert-hash ******

部署flannel


# 安装完成后可通过kubectl get pod -n kube-system查看到flannel已经running
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

最新文章

  1. Understanding the Uncertain Geographic Context Problem
  2. Nginx的fastcgi_cache
  3. xhr dojo load
  4. MYSQL的存储引擎一般只要哪些?
  5. scjp考试准备 - 3 - 关于Arrays
  6. LNMP系列网站零基础开发记录(三)
  7. poj1459
  8. ACM YTU 1012 u Calculate e
  9. SQL SERVER2005事务日志已满 解决方法
  10. java 添加一个线程、创建响应的用户界面 。 演示示例代码
  11. [Python]网络爬虫(四):Opener与Handler的介绍和实例应用
  12. js原生之scrollTop、offsetHeight和offsetTop等属性用法详解
  13. 遍历文件 创建XML对象 方法 python解析XML文件 提取坐标计存入文件
  14. Java 锁优化
  15. 查询SQLSERVER执行过的SQL记录(测试通过)
  16. Node 7.6默认支持Async/Await
  17. Ubuntu下登陆远程postgresql数据库
  18. SQL 2008 R2 收缩日志,不用修改简单模式
  19. yum &amp;&amp; 编译 安装mysql 5.7 多实例
  20. 查询(sqlSuger)

热门文章

  1. 回文树(回文自动机PAM)小结
  2. 2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest (9/12)
  3. [Golang]-6 超时处理、非阻塞通道操作、通道的关闭和遍历
  4. MySQL 主从复制(上)
  5. 鸟哥的linux私房菜——第六章学习(Linux文件与目录管理)
  6. Verilog基础语法总结
  7. Node.js require 模块加载原理 All In One
  8. live chat for website UX
  9. 新三板 &amp; 挂牌费用
  10. React Native Apps