我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么使用kubeadm安装kubernetes 1.13高可用集群

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么使用kubeadm安装kubernetes 1.13高可用集群

小编给大家分享一下怎么使用kubeadm安装kubernetes 1.13高可用集群,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

kubeadm安装kubernetes 1.13高可用集群

初始化集群:

配置hosts文件

vim /etc/hosts

192.168.3.147test-master01192.168.3.148test-master02192.168.3.149test-master03192.168.3.150test-work01
配置免密登录
ssh-keygenssh-copy-id test-master01ssh-copy-id test-master02ssh-copy-id test-master03ssh-copy-id test-work01
设置参数
  • 关闭防火墙

systemctl stop firewalldsystemctl disable firewalld
  • 关闭swap

swapoff -ased -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

修改 /etc/fstab 文件,注释掉 SWAP 的自动挂载,使用free -m确认swap已经关闭。

  • 关闭selinux

sed-i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinuxsetenforce0
  • 配置转发相关参数,否则可能会出错

cat <<EOF > /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward=1net.ipv4.tcp_tw_recycle=0vm.swappiness=0vm.overcommit_memory=1vm.panic_on_oom=0fs.inotify.max_user_watches=89100fs.file-max=52706963fs.nr_open=52706963net.ipv6.conf.all.disable_ipv6=1net.netfilter.nf_conntrack_max=2310720EOFsysctl --system

以上在所有的Kubernetes节点执行命令使修改生效

  • kube-proxy开启ipvs

在所有work节点执行:

cat > /etc/sysconfig/modules/ipvs.modules <<EOF#!/bin/bashmodprobe -- ip_vsmodprobe -- ip_vs_rrmodprobe -- ip_vs_wrrmodprobe -- ip_vs_shmodprobe -- nf_conntrack_ipv4EOFchmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

       上面脚本创建了的/etc/sysconfig/modules/ipvs.modules文件,保证在节点重启后能自动加载所需模块。 使用lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令查看是否已经正确加载所需的内核模块.

       接下来还需要确保各个节点上已经安装了ipset软件包yum install ipset。 为了便于查看ipvs的代理规则,最好安装一下管理工具ipvsadm yum install ipvsadm

yum install ipset -yyum install ipvsadm -y

如果以上前提条件如果不满足,则即使kube-proxy的配置开启了ipvs模式,也会退回到iptables模式

  • 系统优化参数

systemctl enable ntpdate.serviceecho '*/30 * * * * /usr/sbin/ntpdate time7.aliyun.com >/dev/null 2>&1'> /tmp/crontab2.tmpcrontab /tmp/crontab2.tmpsystemctl start ntpdate.service
echo "* soft nofile 65536" >> /etc/security/limits.confecho "* hard nofile 65536" >> /etc/security/limits.confecho "* soft nproc 65536"  >>/etc/security/limits.confecho "* hard nproc 65536"  >>/etc/security/limits.confecho "* soft  memlock  unlimited"  >> /etc/security/limits.confecho "* hard memlock unlimited"  >>/etc/security/limits.conf

安装docker

yum install -y epel-releaseyum install -y yum-utils device-mapper-persistent-data lvm2 net-tools conntrack-toolswget vim  ntpdate libseccomp libtool-ltdltelnet rsync bind-utilsyum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-18.06.1.ce-3.el7.x86_64.rpm
配置docker国内镜像:

所有节点安装docker

编辑/etc/docker/daemon.json,添加以下一行

{"registry-mirrors":["https://registry.docker-cn.com"]}

重启docker

systemctl daemon-reloadsystemctl enable dockersystemctl start docker

注:如果使用overlay2的写法:

daemon.json{    "log-driver": "json-file",    "log-opts": {        "max-size": "100m",        "max-file": "10"    },    "registry-mirrors": ["https://pqbap4ya.mirror.aliyuncs.com"],        "storage-driver": "overlay2",    "storage-opts":["overlay2.override_kernel_check=true"]}

如果要使用overlay2,前提条件为使用ext4,如果使用xfs,需要格式化磁盘加上参数 mkfs.xfs -n ftype=1 /path/to/your/device  ,ftype=1这个参数需要配置为1

安装keepalived+haproxy

三台master 节点

VIP : 192.168.3.80

安装 kubeadm, kubelet 和 kubectl

所有节点都执行

设置yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF
安装组件
yum install -y kubelet-1.13.1 kubeadm-1.13.1 kubectl-1.13.1
开机启动
systemctl enable kubelet.service

初始化K8S集群

编辑kubeadm配置文件:

下面配置是kubeadm安装etcd写法:

cat > kubeadm-config.yaml << EOF apiVersion: kubeadm.k8s.io/v1beta1 kind: ClusterConfiguration kubernetesVersion: v1.13.1 apiServer:   certSANs:     - "192.168.3.80" controlPlaneEndpoint: "192.168.3.80:8443" networking:   podSubnet: "10.50.0.0/16" imageRepository: "harbor.oneitfarm.com/k8s-cluster-images" EOF

CNI使用Calico,设置podSubnet: “10.50.0.0/16”

192.168.3.80是刚才安装haproxy+keepalived的VIP

初始化第一个master
kubeadm init --config kubeadm-config.yaml ... [root@master01 ~]# mkdir -p $HOME/.kube [root@master01 ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config [root@master01 ~]# chown $(id -u):$(id -g) $HOME/.kube/config
安装网络插件

按官网方式:

Installing with the Kubernetes API datastore—50 nodes or less:

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

以上建议先wget下来,需要根据自己网络修改配置 :

- name: CALICO_IPV4POOL_CIDR   value: "10.50.0.0/16"
复制相关文件到其他master节点
ssh root@master02 mkdir -p /etc/kubernetes/pki/etcd scp /etc/kubernetes/admin.conf root@master02:/etc/kubernetes scp /etc/kubernetes/pki/{ca.*,sa.*,front-proxy-ca.*} root@master02:/etc/kubernetes/pki scp /etc/kubernetes/pki/etcd/ca.* root@master02:/etc/kubernetes/pki/etcd
部署master-other

在其它slave节点上执行下面命令,加入集群

kubeadm join 192.168.3.80:8443 --token pv2a9n.uh3yx1082ffpdf7n --discovery-token-ca-cert-hash sha256:872cac35b0bfec28fab8f626a727afa6529e2a63e3b7b75a3397e6412c06ebc5 --experimental-control-plane
kube-proxy开启ipvs

修改ConfigMap的kube-system/kube-proxy中的config.conf,mode: “ipvs”:

kubectl edit configmap kube-proxy -n kube-system kubectl get pod -n kube-system | grep kube-proxy | awk '{system("kubectl delete pod "$1" -- grace-period=0 --force -n kube-system")}'

检查测试

查看kubernetes集群状态
kubectl get nodes -o wide kubectl get cs     NAME                 STATUS    MESSAGE              ERROR     controller-manager   Healthy   ok     scheduler            Healthy   ok     etcd-0               Healthy   {"health": "true"}
查看etcd集群状态

本文通过kubeadm自动安装etcd,也就是docker方式安装的etcd,可以exec进去容器内检查:

kubectl exec -ti -n kube-system etcd-an-master01 sh / # export ETCDCTL_API=3 / # etcdctl --endpoints=https://[127.0.0.1]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key member list
安装失败清理集群

集群初始化如果遇到问题,可以使用下面的命令进行清理:

kubeadm reset systemctl stop kubelet systemctl stop docker rm -rf /var/lib/cni/ rm -rf /var/lib/kubelet/* rm -rf /etc/cni/ ifconfig cni0 down ifconfig flannel.1 down ifconfig docker0 down ip link delete cni0 ip link delete flannel.1 systemctl start docker

设置资源调度

使用kubeadm初始化的集群,出于安全考虑Pod不会被调度到Master Node上,也就是说Master Node不参与工作负载。这是因为当前的master节点被打上了node-role.kubernetes.io/master:NoSchedule的污点:

kubectl describe node master01 | grep Taint Taints:             node-role.kubernetes.io/master:NoSchedule

检查join进集群的master和work节点,如果调度不对,可以通过如下方式设置:

[root@an-master01 ~]# kubectl get nodes NAME          STATUS   ROLES    AGE     VERSION an-master01   Ready    master   4h49m   v1.13.1 an-master02   Ready    <none>   4h42m   v1.13.1 an-master03   Ready    master   86m     v1.13.1 an-work01     Ready    <none>   85m     v1.13.1 查看当前状态: kubectl describe nodes/an-master02 |grep -E '(Roles|Taints)' Roles:              <none> Taints:             <none> 设置为master节点且不调度: kubectl label node an-master02 node-role.kubernetes.io/master= kubectl taint nodes an-master02 node-role.kubernetes.io/master=:NoSchedule 如果想去除限制的话: kubectl taint nodes an-master03 node-role.kubernetes.io/master- work节点设置: kubectl label node an-work01 node-role.kubernetes.io/work= kubectl describe nodes/an-work01 |grep -E '(Roles|Taints)' Roles:              work Taints:             <none>

看完了这篇文章,相信你对“怎么使用kubeadm安装kubernetes 1.13高可用集群”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么使用kubeadm安装kubernetes 1.13高可用集群

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么使用kubeadm安装kubernetes 1.13高可用集群

小编给大家分享一下怎么使用kubeadm安装kubernetes 1.13高可用集群,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!kubeadm安装kubernetes 1.13高可用集群初始化集群:配置hosts文件vi
2023-06-04

kubernetes中如何使用 kubeadm 创建高可用集群

本篇文章为大家展示了kubernetes中如何使用 kubeadm 创建高可用集群,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一. 环境和版本信息OS: CentOS 7.6.1810HAPro
2023-06-19

Kubernetes​怎么部署高可用kube-apiserver集群

这篇文章主要讲解了“Kubernetes怎么部署高可用kube-apiserver集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Kubernetes怎么部署高可用kube-apiserv
2023-06-29

怎么实现Kubernetes跨集群服务应用的高可用

本篇文章给大家分享的是有关怎么实现Kubernetes跨集群服务应用的高可用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在Kubernetes 1.3版本,我们希望降低跨集群
2023-06-05

kubernetes集群怎么搭建和使用

要搭建和使用Kubernetes集群,可以按照以下步骤进行操作:1. 安装Docker:Kubernetes需要在每个节点上安装Docker来运行容器。2. 安装Kubernetes Control Plane:可以使用Kubeadm、Mi
2023-08-24

使用Redis5怎么搭建一个高可用集群

本篇文章为大家展示了使用Redis5怎么搭建一个高可用集群,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、安装redis1、安装gccyum install gcc2、下载redis-5.0.8.
2023-06-14

mysql高可用集群怎么搭建

mysql 高可用集群是一种数据库架构,提供高可用性、容错性和可扩展性。搭建步骤包括:1. 准备基础设施;2. 安装 mysql 并配置集群模式;3. 配置复制,设置主从节点;4. 配置 galera 集群,启用多主机复制;5. 配置监控和
mysql高可用集群怎么搭建
2024-05-22

CentOS7怎么搭建高可用集群

这篇文章主要讲解了“CentOS7怎么搭建高可用集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CentOS7怎么搭建高可用集群”吧!一、安装集群软件必须软件pcs,pacemaker,c
2023-06-28

kolla-ansible如何安装openstack企业级高可用集群

这篇文章主要介绍了kolla-ansible如何安装openstack企业级高可用集群,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一.环境准备1.hosts设置每台设备两块
2023-06-04

怎么用Keepalived+HAProxy高可用集群K8S实现

今天小编给大家分享一下怎么用Keepalived+HAProxy高可用集群K8S实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一
2023-06-29

怎么在CentOS 7下搭建高可用集群

本篇内容主要讲解“怎么在CentOS 7下搭建高可用集群”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在CentOS 7下搭建高可用集群”吧!一、安装集群软件必须软件pcs,pacemake
2023-06-16

Linux上怎么部署高可用的MySQL集群

在Linux上部署高可用的MySQL集群通常可以通过使用MySQL官方提供的MySQL Group Replication或者Percona XtraDB Cluster来实现。以下是一个基本的步骤:配置MySQL集群节点:首先在每个节点上
Linux上怎么部署高可用的MySQL集群
2024-05-06

Kubernetes 上安装 EMQ X 系列文章之三 :使用 Helm 管理、部署 EMQ X 集群

Helm 介绍Helm 是管理 Kubernetes 包的工具,Helm 能提供下面的能力:创建新的 charts将 charts 打包成 tgz 文件与 chart 仓库交互安装和卸载 Kubernetes 的应用管理使用 Helm 安装
2023-06-03

ZooKeeper在单机和集群环境下怎么安装搭建及使用

这篇文章主要讲解了“ZooKeeper在单机和集群环境下怎么安装搭建及使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ZooKeeper在单机和集群环境下怎么安装搭建及使用”吧!1、下载首
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录