系统:  Ubuntu 18.04.2 LTS

内存:  8G

机器:

属性   IP         Hostname      ssh      
 Master          192.168.91.48     blackray-pc         
 node1  192.168.91.221     node1-VirtualBox  node1@192.168.91.221  
 node2  192.168.91.222 node1-VirtualBox  node2@192.168.91.222

1  安装前准备
    1.1 关闭系统swap分区(需要重启系统)
            vi /etc/fstab,注释swap行的UUID信息   

    
    1.2 /etc/apt/source.list中配置阿里云k8s源
            # kubeadm及kubernetes组件安装源
            deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main

        
    1.3 安装kubeadm kubectl kubelet

     apt-get update
            apt-get install kubeadm kubelet kubectl -y

2 下载k8s需要的镜像,由于k8s.gcr.io国内访问不了,可以从docker.io上下载相同版本镜像,再重新打tag为源版本(可以先执行第三部,从报错信息中查看需要下载的镜像版本)
    2.1
        docker pull docker.io/mirrorgooglecontainers/kube-apiserver:v1.13.4
        docker pull docker.io/mirrorgooglecontainers/kube-controller-manager:v1.13.4
        docker pull docker.io/mirrorgooglecontainers/kube-scheduler:v1.13.4
        docker pull docker.io/mirrorgooglecontainers/kube-proxy:v1.13.4
        docker pull docker.io/mirrorgooglecontainers/pause:3.1
        docker pull docker.io/mirrorgooglecontainers/etcd:3.2.24
        docker pull docker.io/coredns/coredns:1.2.6
    2.2 将镜像重新打tag回k8s.gcr.io
        docker tag docker.io/mirrorgooglecontainers/kube-apiserver:v1.13.4 k8s.gcr.io/kube-apiserver:v1.13.4
        docker tag docker.io/mirrorgooglecontainers/kube-controller-manager:v1.13.4 k8s.gcr.io/kube-controller-manager:v1.13.4
        docker tag docker.io/mirrorgooglecontainers/kube-scheduler:v1.13.4 k8s.gcr.io/kube-scheduler:v1.13.4
        docker tag docker.io/mirrorgooglecontainers/kube-proxy:v1.13.4 k8s.gcr.io/kube-proxy:v1.13.4
        docker tag docker.io/mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
        docker tag docker.io/mirrorgooglecontainers/etcd:3.2.24 k8s.gcr.io/etcd:3.2.24
        docker tag docker.io/coredns/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6

  

3 初始化Master 使用flannel网络方案(执行第二步镜像的版本号从这一步的提示信息中获取)
   3.1 kubeadm init --apiserver-advertise-address 192.168.91.48 --pod-network-cidr=10.244.0.0/16
    执行完毕,在提示信息中提示工作节点如何加入集群的命令,如:
    kubeadm join 192.168.91.48:6443 --token kt3n05.2kckopgl445znxir --discovery-token-ca-cert-hash sha256:34bf00baef51f48991e3eb6a9f898d2c93daf53d272d886c2b7b8417eb567f65

 3.2 执行命令

  sudo cp /etc/kubernetes/admin.conf $HOME/
  sudo chown $(id -u):$(id -g) $HOME/admin.conf
  export KUBECONFIG=$HOME/admin.conf (临时生效)

  在/etc/profile文件中加入export KUBECONFIG=$HOME/admin.conf

3.3 安装flannel网络: kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    
    token过期(24小时过期)后可重新生成token:
        kubeadm token create --ttl 0 (--ttl 0代表永不过期)
    查看token:  kubeadm token list
    获取ca证书sha256编码hash值
        openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
        回显值:34bf00baef51f48991e3eb6a9f898d2c93daf53d272d886c2b7b8417eb567f65
    新的加入命令
        kubeadm join 192.168.91.48:6443 --token enzyy3.3v8g89erxgs33rzt --discovery-token-ca-cert-hash sha256:34bf00baef51f48991e3eb6a9f898d2c93daf53d272d886c2b7b8417eb567f65

4 node节点安装以下镜像(被墙,需要手动安装)
        k8s.gcr.io/kube-proxy    v1.13.4             fadcc5d2b066        2 weeks ago         80.3MB
        k8s.gcr.io/pause         3.1                 da86e6ba6ca1        15 months ago       742kB
    镜像安装与第二步一致
    
5 工作几点加入集群,执行命令
    kubeadm join 192.168.91.48:6443 --token kt3n05.2kckopgl445znxir --discovery-token-ca-cert-hash sha256:34bf00baef51f48991e3eb6a9f898d2c93daf53d272d886c2b7b8417eb567f65
    
6 在Master节点上查看节点状态
    kubectl get node
   

  STATUS状态值为READY时表示工作节点加入k8s集群成功并可正常工作

7 编写yaml文件,测试服务是否可正常调度(Master节点上)

nginx-service.yaml

apiVersion: v1
kind: Service
metadata:
labels:
app: nginx
name: nginx
spec:
ports:
- port: 80 #服务暴露的端口
protocol: TCP
targetPort: 80 #容器暴露的端口
nodePort: 30008 #节点暴露的端口
selector:
app: nginx
type: NodePort
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80

在yaml文件所在的工作目录执行 kubectl apply -f nginx-service.yaml

访问http://192.168.91.221:30008 或 http://192.168.91.222:30008出现nginx首页即表示正常运行

kubeadm方式安装kubernetes的更多相关文章

  1. 企业运维实践-还不会部署高可用的kubernetes集群?使用kubeadm方式安装高可用k8s集群v1.23.7

    关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 文章目录: 0x00 前言简述 ...

  2. 使用kubeadm方式安装K8S

    Kubeadm安装 kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实 ...

  3. linux(centos8):kubeadm单机安装kubernetes(kubernetes 1.18.3)

    一,kubernetes安装的准备工作: 1,准备工作的各步骤请参见: https://www.cnblogs.com/architectforest/p/13141743.html   2,  ma ...

  4. yum方式安装kubernetes

    环境准备 master01 node01 node02,连通网络,修改hosts文件,确认3台主机相互解析 vim /etc/hosts 127.0.0.1 localhost localhost.l ...

  5. 从centos7镜像到搭建kubernetes集群(kubeadm方式安装)

    在网上看了不少关于Kubernetes的视频,虽然现在还未用上,但是也是时候总结记录一下,父亲常教我的一句话:学到手的东西总有一天会有用!我也相信在将来的某一天会用到现在所学的技术.废话不多扯了... ...

  6. 二进制文件方式安装kubernetes集群

    所有操作全部用root使用者进行,高可用一般建议大于等于3台的奇数,我们使用3台master来做高可用 练习环境说明: 参考GitHub master: kube-apiserver,kube-con ...

  7. [转] CentOS7 用 kubeadm 快速安装 Kubernetes v1.13.4 最新教程

    [转 + 编辑][From] https://www.jianshu.com/p/4d61f18bc62d  , https://www.jianshu.com/p/5ff6e26d1912 时间是2 ...

  8. 二进制方式安装Kubernetes 1.14.2高可用详细步骤

    00.组件版本和配置策略 组件版本 Kubernetes 1.14.2 Docker 18.09.6-ce Etcd 3.3.13 Flanneld 0.11.0 插件: Coredns Dashbo ...

  9. 使用kubeadm安装kubernetes 1.21

    文章原文 配置要求 至少2台 2核4G 的服务器 本文档中,CPU必须为 x86架构 CentOS 7.8 或 CentOS Stream 8 安装后的软件版本为 Kubernetes v1.21.x ...

随机推荐

  1. 圆角带箭头的提示框css实现

    css是一个很强大的东西,很多网页效果,我们可以通过css直接实现.今天给大家分享的是一个用css实现的圆角带箭头的提示框. 效果如下图: 这一个样式主要涉及到了css的边框样式border的运用和定 ...

  2. JAVA源文件中是否可以包括多个类,有什么限制

    JAVA源文件中是否可以包括多个类,有什么限制 解答:一个java源文件中可以包含多个类,每个源文件中至多有一个public类,如果有的话,那么源文件的名字必须与之相同.如果源文件中没有public类 ...

  3. db2 reorg pending

    通常在数据库上线之前,我们都会对数据库做周密的规划,无论在测试阶段还是上线之初,也难免由于需求的更改会对数据中的表做一些更改.而某些alter table语句则会导致该表处于reorg-pending ...

  4. raw_input() 与 input()对比

    转载来自http://www.cnblogs.com/way_testlife/archive/2011/03/29/1999283.html 这两个均是 python 的内建函数,通过读取控制台的输 ...

  5. Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0下面)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40411921.本文出自:[张鸿洋的博客] 1.概述 之前写过一篇博文:Andro ...

  6. Jmeter常用函数

    一._csvRead 函数 _cvsRead函数是从外部读取参数,csvRead函数可以从一个文件中读取多个参数. 步骤: 1.先新建一个文件,例如c.txt,里面的数据存放为 web@qq.com, ...

  7. 基础知识《三》java修饰符

    一.修饰符 private 成员随时都是“私有”的,任何人不得访问.但在实际应用中,经常想把某些东西深深地藏起来,但同时允许访问衍生类的成员. protected 关键字可帮助我们做到这一点.它的意思 ...

  8. [Go语言]从Docker源码学习Go——结构和函数的定义

    Docker在最近很火,而作为Docker的开发语言-Go也再次被大家提到. 已经使用Docker一段时间了,但是对于源码,尤其是其开发语言Go却一直是一知半解. 最近准备利用空余时间从Docker源 ...

  9. resin配置

    第一种方式:      在本机调试Resin服务,一般是在Eclipse IDE中进行,这样即可以快速的在开发环境中启动/终止Resin,又可以很方便的Debug程序.跟踪异常栈.    在任何版本的 ...

  10. 滚动监听: bootstrap 的scrollspy

    滚动监听 bootstrap 的scrollspy,需要借助.nav样式,活动的部分是加 .active类.本身导航没有position:fixed,需要自己加入 滚动监听.只有滚动和监听,只有默认锚 ...