Kubeadm安装k8s 1.5.1(无坑)

1、Kuberbetes 平台环境规划

机器规划:

主机名 IP地址
Master01 10.0.0.31
Node01 10.0.0.33
Node02 10.0.0.34

Master节点:etcd、api-server、controlor-manager、scheduler
Node节点:kube-proxy、docker

2、系统初始化

所有节点操作

1.设置系统主机名

hostnamectl set-hostname k8s-master01

2.安装依赖包

yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget net-tools vim git

3.关闭selinux和swap
必须防止k8s运行在虚拟内存中,否则会导致运行缓慢

swapoff -a && sed -i ‘/ swap / s/^\(.*\)$/#\1/g‘ /etc/fstab 

setenforce 0 && sed -i ‘s/^SELINUX=.*/SELINUX=disabled/‘ /etc/selinux/config

4.设置防火墙为iptables并设置空规则

systemctl stop firewalld && systemctl disable firewalld && yum -y install iptables-services systemctl start iptables && systemctl enable iptables iptables -F && service iptables save

5.添加主机名与ip对应关系

cat /etc/hosts
10.0.0.31 k8s-master01
10.0.0.32 k8s-master02
10.0.0.33 k8s-node01
10.0.0.34 k8s-node02

6.调整内核参数,对于k8s

cat > kubernetes.conf <<EOF
# 将桥接的ipv4流量传递到iptables链
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1

net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0             # 禁止使用 swap 空间,只有当系统 OOM 时才允许使用它
vm.overcommit_memory=1      # 不检查物理内存是否够用
vm.panic_on_oom=0           # 开启 OOM
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF

cp kubernetes.conf /etc/sysctl.d/kubernetes.conf
sysctl -p /etc/sysctl.d/kubernetes.conf

7.升级系统内核为 4.44
CentOS 7.x 系统自带的 3.10.x 内核存在一些 Bugs,导致运行的 Docker、Kubernetes 不稳定

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

//安装完成后检查 /boot/grub2/grub.cfg 中对应内核 menuentry 中是否包含 initrd16 配置,如果没有,再安装 一次!
yum --enablerepo=elrepo-kernel install -y kernel-lt 

// 设置开机从新内核启动
grub2-set-default ‘CentOS Linux (4.4.189-1.el7.elrepo.x86_64) 8 (Core)‘

8.kube-proxy开启ipvs的前置条件
ipvs:解决svc(service)和pod之间的调度关系,并且性能/功能都比iptables强大很多,

modprobe br_netfilter

cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF

chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

3、安装 Docker 软件

所有节点安装

1.添加yum源以及安装

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install -y docker-ce

// 启动docker(启动后会自动生成/etc/docker目录,否则需要手动创建)
systemctl start docker 

2.配置daemon.json

cat >/etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://hdi5v8p1.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
        "max-size": "100m"
    }
}
EOF

// daemon参数解释
registry-mirrors:Docker镜像加速

log-driver:Docker用来接收来自容器内部stdout/stderr的日志的模块 json-file会将容器日志存储在docker host machine的/var/lib/docker/containers/<container id>/<container id>-json.log(需要root权限才能够读),既然日志是存在磁盘上的,那么就要磁盘消耗的问题。下面介绍两个关键参数:
    - max-size,单个日志文件最大尺寸,当日志文件超过此尺寸时会滚动,即不再往这个文件里写,而是写到一个新的文件里。默认值是-1,代表无限。
    - max-files,最多保留多少个日志文件。默认值是1。

"exec-opts": ["native.cgroupdriver=systemd"]:Docker使用的文件驱动是systemd

3.创建一个存放docker配置文件的目录

mkdir -p /etc/systemd/system/docker.service.d

4.重启docker服务并加入开机启动

systemctl daemon-reload && systemctl restart docker && systemctl enable docker

4、安装Kubeadm

所有节点统一安装kubelet kubeadm kubelectl

1.安装kubelet kubeadm kubelectl
导入阿里云的yum仓库

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

// 指定安装版本(这里统一使用1.15.1)
yum -y install kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1
systemctl enable kubelet.service

2.初始化Kubermetes master

kubeadm init --apiserver-advertise-address=10.0.0.31 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.15.1 --service-cidr=10.1.0.0/16   --pod-network-cidr=10.244.0.0/16

由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。

初始化master节点重要截图:

使用kubectl工具:

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

kubectl get nodes

3.安装Pod网络插件(CNI)

只在master节点操作,当node节点加入的时候也会自动安装该插件

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

确保能够访问到quay.io这个registery。

master的网络插件启动成功:

4.node加入节点
向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:

kubeadm join 10.0.0.31:6443 --token 711bqn.ozruisxvcz1924fg     --discovery-token-ca-cert-hash sha256:295acb22b65296410968d040cfbb326642d2e3b177ccbc3626765a0ada6fa9ff 

所有节点加入完成

[[email protected] ~]# kubectl get nodes
NAME           STATUS     ROLES    AGE     VERSION
k8s-master01   Ready      master   12m     v1.15.1
k8s-node01     Ready      <none>   4m39s   v1.15.1
k8s-node02     Ready   <none>   106s    v1.15.1

如果忘了join的命令咋办?可以使用下面的命令获取

[[email protected] ~]# kubeadm token list
TOKEN                     TTL       EXPIRES                     USAGES                   DESCRIPTION                                                EXTRA GROUPS
711bqn.ozruisxvcz1924fg   23h       2019-11-20T00:19:17+08:00   authentication,signing   The default bootstrap token generated by ‘kubeadm init‘.   system:bootstrappers:kubeadm:default-node-token

5.测试Kubernetes集群
在Kubernetes集群中创建一个rc,验证是否正常运行:

创建一个文件nginx_obj.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: myweb
spec:
  replicas: 3
  selector:
    app: myweb
  template:
    metadata:
      labels:
        app: myweb
    spec:
      containers:
      - name: nginx
        image: nginx:1.13
        ports:
          - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: myweb
spec:
  type: NodePort
  ports:
  - port: 80
    nodePort: 30000
    targetPort: 80
  selector:
    app: myweb

指定该文件并创建rc

kubectl  create -f nginx_obj.yaml

查看pod和svc信息

[[email protected] ~]# kubectl get pods -o wide
NAME          READY   STATUS    RESTARTS   AGE   IP           NODE         NOMINATED NODE   READINESS GATES
myweb-l4vkm   1/1     Running   0          5s    10.244.1.2   k8s-node01   <none>           <none>
myweb-qdxgp   1/1     Running   0          5s    10.244.3.2   k8s-node02   <none>           <none>

[[email protected] ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.1.0.1      <none>        443/TCP        22m
myweb        NodePort    10.1.205.42   <none>        80:30000/TCP   38s

访问地址:http://NodeIP:30000

原文地址:https://blog.51cto.com/12643266/2451401

时间: 2024-11-10 20:13:06

Kubeadm安装k8s 1.5.1(无坑)的相关文章

使用kubeadm安装k8s集群故障处理三则

最近在作安装k8s集群,测试了几种方法,最终觉得用kubeadm应该最规范. 限于公司特别的网络情况,其安装比网上不能访问google的情况还要艰难. 慢慢积累经验吧. 今天遇到的三则故障记下来作参考. 当然,所有方法都是看了log输出后,从网上搜索的方法. =============== Q,如何让kubeadm在安装过程中不联网? A:记得在kubeadm init过程中增加参数 --kubernetes-version=v1.7.0 Q,kubelet cgroup driver参数不一致

CentOS部署Kubernetes1.13集群-1(使用kubeadm安装K8S)

参考:https://www.kubernetes.org.cn/4956.html 1.准备 说明:准备工作需要在集群所有的主机上执行 1.1系统配置 在安装之前,需要先做如下准备.三台CentOS主机如下: cat /etc/hosts 192.168.0.19 tf-01 192.168.0.20 tf-02 192.168.0.21 tf-03 如果各个主机启用了防火墙,需要开放Kubernetes各个组件所需要的端口,可以查看Installing kubeadm中的"Check req

用kubeadm安装k8s集群

1.准备 1.1系统配置 在安装之前,需要先做如下准备.三台CentOS主机如下: 配置yum源(使用腾讯云的) 替换之前先备份旧配置 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup centos各版本的源配置列表 centos5 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/

kubeadm安装k8s

软件版本: kubelet:V1.13.3 docker: 18.06.1 实验环境: Centos 7.5.1804 说明: 初学.安装步骤参考了阿良的文档,并做了部分修改. 步骤如下: 1.关闭防火墙: $ systemctl stop firewalld $ systemctl disable firewalld 2.关闭selinux: $ sed -i 's/enforcing/disabled/' /etc/selinux/config $ setenforce 0 3.关闭swap

kubernetes系列03—kubeadm安装部署K8S集群

1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 1.3 安装kubernetes方法 1.3.1 方法1:使用kubeadm 安装kubernetes(本文演示的就是此方法) 优点:你只要安装kubeadm即可:kubeadm会帮你自动部署安装K8S集群:如:初始化K8S集群.配置各个插件的证书认证.部署集群网络等.安装简易. 缺点:不是自己一步一步安装,可能对K8S的理解不会那么深:并且有那一部分有问题,自己不好修正. 1.3.2 方法2:二进制安装部署k

使用kubeadm安装Kubernete以及常见问题解答

关于K8S: Kubernetes是Google开源的容器集群管理系统.它构建于docker技术之上,为容器化的应用提供资源调度.部署运行.服务发现.扩 容缩容等整一套功能,本质上可看作是基于容器技术的mini-PaaS平台. 相信看过我博客的童鞋应该知道,我在14年的时候就发表了一篇名为Docker容器管理之Kubernetes当时国内Docker刚刚兴起,对于Docker的兴起我很有感触,仿佛一瞬间就火了,当时也是一个偶然的机会了解到K8S,所以当时就写文简单的介绍了下K8S以及如何采用源码

kubernetes实战(二十六):kubeadm 安装 高可用 k8s v1.16.x dashboard 2.x

1.基本配置 基本配置.内核升级.基本服务安装参考https://www.cnblogs.com/dukuan/p/10278637.html,或者参考<再也不踩坑的Kubernetes实战指南>第一章第一节 2.Kubernetes组件安装 所有节点安装Kubeadm.Kubectl.kubelet yum install -y kubeadm-1.16.0-0.x86_64 kubectl-1.16.0-0.x86_64 kubelet-1.16.0-0.x86_64 所有节点启动Dock

Ubuntu16.04安装K8s步骤和踩坑记录【不错】

文章目录环境信息安装步骤系统配置修改安装docker安装kubectl,kubelet,kubeadm配置Master配置Node部署结果检查K8S部署mysql学习新建mysql-rc.yaml创建mysql-svc.yaml安装K8S部署JAVA应用创建deployment创建service更新deployment其他命令参考K8S Deployment 命令环境信息名称: 版本Docker 18.06.1-ce操作系统 Ubuntu16.04K8s v1.13.2机器信息 IP 作用 组件

K8S 之 kubeadm 安装

kubeadm 概述 Kubeadm 是一个工具,它提供了 kubeadm init 以及 kubeadm join 这两个命令作为快速创建 kubernetes 集群的最佳实践. 环境 阿里云两台CentOS 7.7 64位 ECS 安装 K8S v1.16.3 版本 pod-network-cidr 地址段划分为 10.96.0.0/12 service-cluster-ip-range 地址段划分为 10.244.0.0/16 名称 内部IP 系统配制 k8s-master1 172.17