2020最新最详细K8s安装教程_kubernetes-程序员宅基地

技术标签: kubernetes  centos  docker  

1. 环境准备

准备好4台centos7 一个为master,两个node,一个harbor(私有仓库)
Master内存大小为4g,其余都为2g,这里可以先安装一台最小版,再克隆其他3台
将4台的ip设置为静态ip,互相,本地和虚拟机,虚拟机和外网都可以ping通,且保证网络畅通。

  1. 设置系统主机名以及 Host 文件的相互解析
    每一台都设置
    vim /etc/hostname vim /etc/hosts
    192.168.137.10 k8s-master
    192.168.137.20 k8s-node1
    192.168.137.30 k8s-node2
    192.168.137.40 k8s-admin

2.安装依赖包
yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vimnet-tools git

3.设置防火墙为 Iptables 并设置空规则
systemctl stop firewalld && systemctl disable firewalld
yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save

4.关闭 SELINUX
swapoff -a && sed -i ‘/ swap / s/^(.)$/#\1/g’ /etc/fstab
setenforce 0 && sed -i 's/^SELINUX=.
/SELINUX=disabled/’ /etc/selinux/config

5.调整内核参数,对于k8s
cat > kubernetes.conf << EOF
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

6.调整系统时区
rm -f /etc/localtime
ln -sf /usr/share/zoneinfo/Asia/Shanghai
reboot

7.关闭系统不需要服务
systemctl stop postfix && systemctl disable postfix

8.设置 rsyslogd 和 systemd journald
mkdir /var/log/journal # 持久化保存日志的目录
mkdir /etc/systemd/journald.conf.d
cat > /etc/systemd/journald.conf.d/99-prophet.conf << EOF
[Journal]
Storage=persistent
Compress=yes
SyncIntervalSec=5m
RateLimitInterval=30s
RateLimitBurst=1000
SystemMaxUse=10G
SystemMaxFileSize=200M
MaxRetentionSec=2week
ForwardToSyslog=no
EOF
systemctl restart systemd-journald

9.升级系统内核为 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

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) 7 (Core)’

uname -r 检查一下

在这里插入图片描述

2. 部署k8s

  1. kube-proxy开启ipvs的前置条件
    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
    Chmod755 /etc/sysconfig/modules/ipvs.modules &&
    bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

2.安装 Docker 软件
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 update -y && yum install -y docker-ce

#创建 /etc/docker 目录

mkdir /etc/docker

#配置 daemon.
cat > /etc/docker/daemon.json <<EOF
{
“exec-opts”: [“native.cgroupdriver=systemd”],
“log-driver”: “json-file”,
“log-opts”: {
“max-size”: “100m”
}
}
EOF
mkdir -p /etc/systemd/system/docker.service.d

#重启docker服务
systemctl daemon-reload && systemctl restart docker && systemctl enable docker
安装完后
docker –version
在这里插入图片描述

即表示安装成功

  1. 安装 Kubeadm (主从配置)
    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
    yum -y install kubeadm-1.19.1 kubectl-1.19.1 kubelet-1.19.1
    systemctl enable kubelet.service
    注:如何更换kubeadm版本
    yum list installed | grep kube
    yum remove kubeadm.x86_64 kubectl.x86_64 kubelet.x86_64 -y
    yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0(版本随意)

上面步骤需要在master,node1,node2上执行
下面步骤只需要在master上执行
4.初始化主节点
kubeadm config print init-defaults > kubeadm-config.yaml

然后修改 kubeadm-config.yaml配置
下面有注释的地方就是要修改的地方!!!
[root@docker-server1 ~]# vi kubeadm-config.yaml

apiVersion: kubeadm.k8s.io/v1beta2

bootstrapTokens:

  • groups:

    • system:bootstrappers:kubeadm:default-node-token

    token: abcdef.0123456789abcdef

    ttl: 24h0m0s

    usages:

    • signing

    • authentication

kind: InitConfiguration

localAPIEndpoint:

advertiseAddress: 192.168.127.10 #master节点的IP

bindPort: 6443

nodeRegistration:

criSocket: /var/run/dockershim.sock

name: 192.168.137.10 #修改为IP地址,如果使用域名,必须保证解析正常

taints:

  • effect: NoSchedule

    key: node-role.kubernetes.io/master


apiServer:

timeoutForControlPlane: 4m0s

apiVersion: kubeadm.k8s.io/v1beta2

certificatesDir: /etc/kubernetes/pki

clusterName: kubernetes

controllerManager: {}

dns:

type: CoreDNS

etcd:

local:

dataDir: /var/lib/etcd #把etcd容器的目录挂载到本地的/var/lib/etcd目录下,防止数据丢失

imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers #镜像仓库地址,可以修改为gcr.azk8s.cn/google_containers

kind: ClusterConfiguration

kubernetesVersion: v1.19.1 #Kubernetes软件版本

networking:

dnsDomain: cluster.local

serviceSubnet: 10.96.0.0/12

podSubnet: 10.244.0.0/16 #添加这个内容

scheduler: {}


apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
featureGates:
SupportIPVSProxyMode: true
mode: ipvs

预先下载镜像
kubeadm config images pull --config kubeadm-config.yaml

初始化节点
kubeadm init --config=kubeadm-config.yaml | tee kubeadm-init.log

安装成功后注意看console上运行的信息

1.会显示如下的信息 按步执行即可

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

  1. 会显示加入到master的命令,保存下来,拿到其他节点执行
    kubeadm join 192.168.137.10:6443 --token abcdef.0123456789abcdef
    –discovery-token-ca-cert-hash sha256:028fc1e2a324415e0c96895c1f5d74b91c61576c2bc574fe4199d531de3a46cd

都添加完后执行kubectl get nodes
会发现所有节点的状态都是NotReady,因为没有安装网络插件

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yaml
这里如果githubusercontent访问不到可以添加hosts

151.101.76.133 raw.githubusercontent.com

等待k8s 把 pod:flannel生效 可以用命令查看状态进度:

kubectl get pods -n kube-system
等 flannel 状态显示 Running后

执行查看k8s集群运行状态命令:

sudo kubectl get nodes

在这里插入图片描述

到这里,恭喜你k8s已经部署完成!!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37240450/article/details/108601319

智能推荐

前端开发之vue-grid-layout的使用和实例-程序员宅基地

文章浏览阅读1.1w次,点赞7次,收藏34次。vue-grid-layout的使用、实例、遇到的问题和解决方案_vue-grid-layout

Power Apps-上传附件控件_powerapps点击按钮上传附件-程序员宅基地

文章浏览阅读218次。然后连接一个数据源,就会在下面自动产生一个添加附件的组件。把这个控件复制粘贴到页面里,就可以单独使用来上传了。插入一个“编辑”窗体。_powerapps点击按钮上传附件

C++ 面向对象(Object-Oriented)的特征 & 构造函数& 析构函数_"object(cnofd[\"ofdrender\"])十条"-程序员宅基地

文章浏览阅读264次。(1) Abstraction (抽象)(2) Polymorphism (多态)(3) Inheritance (继承)(4) Encapsulation (封装)_"object(cnofd[\"ofdrender\"])十条"

修改node_modules源码,并保存,使用patch-package打补丁,git提交代码后,所有人可以用到修改后的_修改 node_modules-程序员宅基地

文章浏览阅读133次。删除node_modules,重新npm install看是否成功。在 package.json 文件中的 scripts 中加入。修改你的第三方库的bug等。然后目录会多出一个目录文件。_修改 node_modules

【】kali--password:su的 Authentication failure问题,&sudo passwd root输入密码时Sorry, try again._password: su: authentication failure-程序员宅基地

文章浏览阅读883次。【代码】【】kali--password:su的 Authentication failure问题,&sudo passwd root输入密码时Sorry, try again._password: su: authentication failure

整理5个优秀的微信小程序开源项目_微信小程序开源模板-程序员宅基地

文章浏览阅读1w次,点赞13次,收藏97次。整理5个优秀的微信小程序开源项目。收集了微信小程序开发过程中会使用到的资料、问题以及第三方组件库。_微信小程序开源模板

随便推点

Centos7最简搭建NFS服务器_centos7 搭建nfs server-程序员宅基地

文章浏览阅读128次。Centos7最简搭建NFS服务器_centos7 搭建nfs server

Springboot整合Mybatis-Plus使用总结(mybatis 坑补充)_mybaitis-plus ruledataobjectattributemapper' and '-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏3次。前言mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的解决了这个问题。..._mybaitis-plus ruledataobjectattributemapper' and 'com.picc.rule.management.d

EECE 1080C / Programming for ECESummer 2022 Laboratory 4: Global Functions Practice_eece1080c-程序员宅基地

文章浏览阅读325次。EECE 1080C / Programming for ECESummer 2022Laboratory 4: Global Functions PracticePlagiarism will not be tolerated:Topics covered:function creation and call statements (emphasis on global functions)Objective:To practice program development b_eece1080c

洛谷p4777 【模板】扩展中国剩余定理-程序员宅基地

文章浏览阅读53次。被同机房早就1年前就学过的东西我现在才学,wtcl。设要求的数为\(x\)。设当前处理到第\(k\)个同余式,设\(M = LCM ^ {k - 1} _ {i - 1}\) ,前\(k - 1\)个的通解就是\(x + i * M\)。那么其实第\(k\)个来说,其实就是求一个\(y\)使得\(x + y * M ≡ a_k(mod b_k)\)转化一下就是\(y * M ...

android 退出应用没有走ondestory方法,[Android基础论]为何Activity退出之后,系统没有调用onDestroy方法?...-程序员宅基地

文章浏览阅读1.3k次。首先,问题是如何出现的?晚上复查代码,发现一个activity没有调用自己的ondestroy方法我表示非常的费解,于是我检查了下代码。发现再finish代码之后接了如下代码finish();System.exit(0);//这就是罪魁祸首为什么这样写会出现问题System.exit(0);////看一下函数的原型public static void exit (int code)//Added ..._android 手动杀死app,activity不执行ondestroy

SylixOS快问快答_select函数 导致堆栈溢出 sylixos-程序员宅基地

文章浏览阅读894次。Q: SylixOS 版权是什么形式, 是否分为<开发版税>和<运行时版税>.A: SylixOS 是开源并免费的操作系统, 支持 BSD/GPL 协议(GPL 版本暂未确定). 没有任何的运行时版税. 您可以用她来做任何 您喜欢做的项目. 也可以修改 SylixOS 的源代码, 不需要支付任何费用. 当然笔者希望您可以将使用 SylixOS 开发的项目 (不需要开源)或对 SylixOS 源码的修改及时告知笔者.需要指出: SylixOS 本身仅是笔者用来提升自己水平而开发的_select函数 导致堆栈溢出 sylixos

推荐文章

热门文章

相关标签