Ubuntu19.04部署kubernetes-master

19 篇文章 0 订阅
7 篇文章 0 订阅

Ubuntu19.04部署kubernetes-master⎈


先来聊聊☁云计算是什么吧~

云概念☁

  • Iaas 基础设施即服务

    阿里云,主要提供硬件信息

  • Paas平台即服务

    容器:主要提供开发环境,测试环境等

  • Saas软件即服务

    百度云盘

云类☁

  • 公有云
  • 私有云
  • 混合云
  • 多重云(multi-cloud)

Kubernetes⎈简介

  • kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。
    是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
  • kubernetes原名:borg伯格,编排引擎,原名

kubernetes⎈部署过程

基础环境

  • 系统信息:Ubuntu19.04, kubernetes=1.14.1(及组件版本)
  • 系统内核:Linux - 5.0.0-13
  • docker版本:containerd=1.2.5-1,docker-ce-cli_18.09.5,docker-ce_18.09.5

先决条件

  • 关闭ufw防火墙,Ubuntu默认未启用,无需设置。
    sudo ufw disable      
    
  • 禁用SELINUX (ubuntu19.04默认不安装)
    # 临时禁用
    sudo setenforce 0    
    
    # 修改配置文件
    sudo vi /etc/selinux/config
    SELINUX=permissive
    
  • 开启数据包转发
    # 修改/etc/sysctl.conf,开启ipv4转发:
    sudo vim /etc/sysctl.conf
    
    # 命令重启生效
    sudo sysctl -p
    
  • 防火墙修改FORWARD链默认策略
    # 临时生效
    sudo iptables -P FORWARD ACCEPT
    
    # 命令修改配置文件
    /usr/sbin/iptables -P FORWARD ACCEPT
    
  • 禁用swap
    # 禁掉所有的swap分区
    sudo swapoff -a
    
    永久修改swap
    # 路径如下
    vim /etc/fstab
    
    # /etc/fstab: static file system information.
    #
    # Use 'blkid' to print the universally unique identifier for a
    # device; this may be used with UUID= as a more robust way to name devices
    # that works even if disks are added and removed. See fstab(5).
    #
    # <file system> <mount point>   <type>  <options>       <dump>  <pass>
    # / was on /dev/sda1 during installation
    UUID=d54d0616-6d61-4512-9a70-1f40306a4016 /               ext4    errors=remount-ro 0       1
    #/swapfile                                 none            swap    sw              0       0
    
    # 将最后一行注释掉
    
  • 配置iptables参数,使得流经网桥的流量也经过iptables/netfilter防火墙
    sudo tee /etc/sysctl.d/k8s.conf <<-'EOF'
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    
    sudo sysctl --system
    
    
  • 安装docker
    # 使用国内源(清华源)进行获取
    wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/dists/bionic/pool/stable/amd64/containerd.io_1.2.5-1_amd64.deb && \
    wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/dists/bionic/pool/stable/amd64/docker-ce-cli_18.09.5~3-0~ubuntu-bionic_amd64.deb && \ wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/dists/bionic/pool/stable/amd64/docker-ce_18.09.5~3-0~ubuntu-bionic_amd64.deb
    
    
    
    # 安装deb包
    dpkg -i containerd.io_1.2.5-1_amd64.deb && \
    dpkg -i docker-ce-cli_18.09.5~3-0~ubuntu-bionic_amd64.deb && \
    dpkg -i docker-ce_18.09.5~3-0~ubuntu-bionic_amd64.deb
    
    
  • docker使用加速器(阿里云加速器)
    tee /etc/docker/daemon.json <<- 'EOF'
    {
    "registry-mirrors": ["https://5xcgs6ii.mirror.aliyuncs.com"]
    }
    EOF
    
    
  • 设置docker开机自启动
    sudo systemctl enable docker && sudo systemctl start docker
    
    

安装kubeadmkubeletkubectl

  • 创建kubernetessource文件(使用阿里云或者中科大的镜像站)
    sudo apt-get update && sudo apt-get install -y apt-transport-https curl
    
    
    sudo curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
    
    
    sudo tee /etc/apt/sources.list.d/kubernetes.list <<-'EOF'
    deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
    EOF
    
    
    sudo apt-get update
    
    
  • 使用apt来进行安装kubeadmkubeletkubectl
    # 查看可用版本(选择最新的)
    apt-cache madison kubeadm
    
    
    # 安装指定版本
    sudo apt-get install -y kubelet=1.14.1-00 kubeadm=1.14.1-00 kubectl=1.14.1-00
    sudo apt-mark hold kubelet=1.14.1-00 kubeadm=1.14.1-00 kubectl=1.14.1-00
    
    
    # 设置开机自启动
    sudo systemctl enable kubelet && sudo systemctl start kubelet
    
    

Kubernetes⎈集群安装

master节点部署

  • 查看kubernetes需要哪些镜像
    kubeadm config images list --kubernetes-version=v1.14.1
    
    
  • 使用shell脚本将其pullpushtag
    #!/bin/bash
    images=(kube-proxy:v1.14.1 kube-scheduler:v1.14.1 kube-controller-manager:v1.14.1 kube-apiserver:v1.14.1 etcd:3.3.10 pause:3.1 coredns:1.3.1)
    for imageName in ${images[@]} ; do
    docker pull mirrorgooglecontainers/$imageName
    docker tag mirrorgooglecontainers/$imageName k8s.gcr.io/$imageName
    docker rmi mirrorgooglecontainers/$imageName
    done
    
    
    
    coredns需要单独拉取
    docker pull coredns/coredns:1.3.1
    docker tag coredns/coredns:1.3.1  k8s.gcr.io/coredns:1.3.1
    
    
  • kubeadm init初始化集群
    # -apiserver-advertise-address=192.168.1.175需要换成本机IP
    sudo kubeadm init --apiserver-advertise-address=192.168.1.175 --pod-network-cidr=172.16.0.0/16 --service-cidr=10.233.0.0/16 --kubernetes-version=v1.14.1
    
    
  • 部署完成
    # 部署完成之后,将会有如下界面
    Your Kubernetes master has initialized successfully!
    
    To start using your cluster, you need to run the following as a regular user:
    
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    You should now deploy a pod network to the cluster.
    Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
    https://kubernetes.io/docs/concepts/cluster-administration/addons/
    
    You can now join any number of machines by running the following on each node
    as root:
    
    kubeadm join 192.168.1.175:6443 --token v1nj22.l30dctzysf2jynly --discovery-token-ca-cert-hash sha256:0170607e7e069ffde2f2b6b440e7982f066887e59db49e9a62ac9518924af690
    
    
    # token需要留下
    kubeadm join 192.168.1.175:6443 --token v1nj22.l30dctzysf2jynly --discovery-token-ca-cert-hash sha256:0170607e7e069ffde2f2b6b440e7982f066887e59db49e9a62ac9518924af690
    
    
  • 查看K8s状态
    # 查看集群及节点状态
    kubectl get node
    
    # 查看所有管理元素
    kubectl get pods
    
    # 查看k8s的Pod状态
    kubectl get pod --all-namespaces
    
    

master节点init错误

  • 检查kubelet使用的cgroup driver
    docker info | grep -i cgroup
    -> Cgroup Driver: cgroupfs
    
    
    sudo vim /etc/default/kubelet KUBELET_KUBEADM_EXTRA_ARGS=--cgroup-driver=<value> 
    sudo systemctl daemon-reload 
    sudo systemctl restart kubelet
    
    
  • 创建kubectl使用的kubeconfig文件
    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 node出现server localhost:8080 was refused及解决方法

  • 出现这个问题的原因是kubectl命令需要使用kubernetes-admin来运行,解决方法如下,将主节点中的/etc/kubernetes/admin.conf文件拷贝到从节点相同目录下,然后配置环境变量
    echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
    
    

    立即生效

    source ~/.bash_profile
    
    

    然后再运行kubectl get node

    kubectl get node
    
    

coredns Pending状态 解决coredns问题

  • 创建 flannel的pod,,命令如下
    kubectl create -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml
    
    
    kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
    
    

    这一步执行完成之后,并不会立刻生效,大约等待1~3分钟。(重启无效)

    然后K8s状态就从NotRealy

Kubernetes指南-倪朋飞.pptx 1-唐继元Kubernetes Master High Availability 高级实践.pdf 2、刘淼-基于 DevOps、微服务及k8s的高可用架构探索与实现.pdf ArchSummit北京2016-《网易蜂巢基于万节点Kubernets支撑大规模云应用实践》-刘超.pdf Azure Service Broker_cn - Rita Zhang.pdf google/ HPE李志霄 Kubernetes企业级容器云:加速数字创新-20170407.pdf IBM马达:Kubernetes 中基于策略的资源分配.pdf k8s资料.rar Kubernetes Cookbook-Packt Publishing(2016).pdf Kubernetes Microservices with Docker-Apress2016.pdf Kubernetes on Azure - Gabe Monroy.pdf Kubernetes1.6集群部署完全指南——二进制文件部署开启TLS基于CentOS7.pdf Kubernetes1-4版本新增加功能介绍.pdf Kubernetes监控与日志.pdf kubernetes容器云平台实践-李志伟v1.0.pdf Kubernetes生态系统现状报告.pdf Kubernetes下API网关的微服务实践 长虹集团-李玮演讲PPT.pdf Kubernetes与EcOS的碰撞结合 成都精灵云-张行才演讲PPT.pdf Kubernetes与OpenStack融合支撑企业级微服务架构.pdf Kubernetes在华为全球IT系统中的实践.pdf Kubernetes在企业中的场景运用及管理实践.pdf Kubernetes指南-倪朋飞.pdf Kubernetes指南-倪朋飞.pptx l.txt Lessons+learned+and+challenges+faced+while+running+Kubernetes+at+scale.pdf rkt与Kubernetes的深度融合.pdf rkt与Kubernetes的深度融合.pptx SACC2017FabricOnKubernetesChinese.pdf ThoughtWorks林帆-白话Kubernetes网络.pdf 百度云PaddlePaddle on kubernetes-周倜.pdf 从Borg到Kubernetes-PaaS产品设计-华为-钟成.pdf 改造Kuberntetes打造SAE容器云.pdf 跟谁学-基于容器的持续集成平台建设.pdf 谷歌深度学习在Kubernetes上的实践.pptx 惠普基于Kubernetes的容器私有云平台实践.pdf 基于Kubernetes的模板化应用编排.pdf 基于kubernetes的容器云平台设计与实践-邓德源.pdf 基于Kubernetes的私有容器云建设实践-易宝支付.pdf 基于Kubernetes构建AI业务生态.pdf 李波:小米生态云应用引擎实践.pdf 魅族容器云平台基于 k8s 的自动化运维实践-曾彬.pdf 欧昌华-基于 Nginx 的负载均衡器在 K8S 中的实践.pdf 彭超:瓜子云的落地.pdf 如何落地TensorFlow on Kubernetes.pdf 如何用OpenStack和Kubernetes快速搭建一个容器和虚拟机组合服务的云平台.pptx 孙杰:大型企业云平台架构演进的实践之路.pdf 微服务道与术-敖小剑.pdf 微软Azure云助力微服务-赵文婧.pdf 颜卫-腾讯云容器服务基于kubernetes的应用编排实践-final-v1.0.pptx 有容云邓绍军-Kubernetes落地实践.pptx 折800如何用Docker&Kubernetes;构建自动化测环境.pdf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值