1 2 3 4

ubuntu18.04 安装部署k8s 1.18.0版本

 

Kubernetes是什么?

首先,它是一个全新的基于容器技术的分布式架构领先方案。这个方案尽然很新,但它是谷歌十几年以来大规模应用容器技术的经验积累和升华的一个重要成果。确切地说,kubernetes是谷歌严格保密十几年的秘密武器Borg的一个开源版本。Borg是谷歌的一个久负盛名的内部使用的大规模集群管理系统,它基于容器技术,目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率的最大化。
2015年4月,传闻许久的Borg论文伴随kubernetes(K8S)的高调宣传被谷歌首次公开,大家才得以了解它的更多内幕。正是由于站在Borg这个前辈的肩膀上,吸取了Borg过去十年间的经验与教训,所以kubernetes一经开源就一鸣惊人,并迅速称霸了容器技术领域。
 
如果我们的系统设计遵循了kubernetes的设计思想,那么传统系统架构中哪些和业务没有多大关系的底层代码或功能模块,都可以立刻从我们的视线中消失,我们不必再费心于负载均衡的选型和部署实施问题,不必再考虑引入或自己开发一个复杂的服务治理框架,不必再头疼与服务监控和故障处理模块的开发。总之,使用kubernetes提供的解决方案,我们节约了不少于30%的开发成本,同时可以将精力更加集中于业务本身,而且由于kubernetes提供了强大的自动化机制,所以系统后期的运维难度和运维成本大幅降低。

Kubernetes概述

Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。

在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。

 

Kubernetes 特点

可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)

可扩展: 模块化,插件化,可挂载,可组合

自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

Kubernetes 组件

1、Master 组件

1.1kube-apiserver

1.2ETCD

1.3kube-controller-manager

1.4cloud-controller-manager

1.5kube-scheduler

1.6插件 addons

1.6.1DNS

1.6.2用户界面

1.6.3容器资源监测

1.6.4Cluster-level Logging

 

2、节点(Node)组件

2.1kubelet

2.2kube-proxy

2.3docker

2.4RKT

2.5supervisord

2.6fluentd

 

 

kubelet :运行在 Cluster 所有节点上,主要负责启动 Pod 和容器。

kubeadm :用于初始化和引导Cluster(是官方推出快速部署k8s集群,其本质是将k8s的相关服务容器化)

kubectl 是 Kubernetes 命令行工具。通过 kubectl 可以部署和管理应用,查看各种资源,创建、删除和更新各种组件                                                   

 

 

 

Kubernetes+docker集群安装部署

一、          安装前准备:

关闭防火墙,关闭iptables,关闭交换分区

systemctl stop ufw

节点主机名唯一,建议写入/etc/hosts

禁止swap分区

关闭防火墙

hostnamectl set-hostname k8s-master

tail /etc/hosts

192.168.3.101  k8s-master

 root@ubuntu:~# ufw status

Status: inactive

# swapoff -a # 临时

# vim /etc/fstab # 永久

同时在每台机器的/etc/hosts配置如下

192.168.168.225 k8s

 192.168.168.222 node1

 192.168.168.223 node2

 

安装docker和kubectl

  建议版本:docker-ce-18.0x

  Apt源建议使用阿里源

  Vim /etc/apt/sources.list

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main

可能在 apt-get update 时会碰到  no pubkey ...

执行下面命令解决

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add –

apt-get update && apt-get install -y apt-transport-https

 

sudo dpkg -i docker-ce_18.06.0_ce_3-0_ubuntu_amd64.deb

sudo apt-get install -f

sudo dpkg -i docker-ce_18.06.0_ce_3-0_ubuntu_amd64.deb

sudo apt-get install -y kubelet kubeadm kubectl

systemctl daemon-reload

systemctl start docker

systemctl enable docker kubelet

 

拉取镜像:

docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.18.0         

docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.18.0             

docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.18.0  

docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.18.0        

docker pull registry.aliyuncs.com/google_containers/etcd:3.4.3-0         

docker pull registry.aliyuncs.com/google_containers/coredns:1.6.7                                                  

docker pull registry.aliyuncs.com/google_containers/pause:3.2 

修改tag

   docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.18.0 k8s.gcr.io/kube-apiserver:v1.18.0

   docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.18.0 k8s.gcr.io/kube-proxy

   docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.18.0 k8s.gcr.io/kube-controller-manager:v1.18.0

   docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.18.0 k8s.gcr.io/kube-scheduler:v1.18.0

   docker tag registry.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd: 3.4.3-0

   docker tag registry.aliyuncs.com/google_containers/coredns:1.6.7 k8s.gcr.io/coredns: 1.6.7

   docker tag registry.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2

 

 

初始化k8s:

sudo kubeadm init  --kubernetes-version=v1.18.0  --service-cidr=10.96.0.0/12 --pod-network-cidr=10.96.0.0/16  --ignore-preflight-errors=Swap

根据提示进行创建和拷贝文件

sudo cp -i /etc/kubernetes/admin.conf /home/zhangyu/.kube/config

sudo chown zhangyu:zhangyu /home/zhangyu/.kube/config

vim ~/.bashrc

export KUBECONFIG=/etc/kubernetes/admin.conf

source ~/.bashrc

  现在记录好加入k8s的token

  开始部署网络插件:

https://docs.projectcalico.org/v3.10/manifests/calico.yaml

sudo kubectl apply -f calico.yaml

  等待拉取并启动

 至此k8s集群基本搭建完成了,检查一下:

kubectl get pod --all-namespaces    //查看pod是否是running状态

kubectl get nodes     查看节点信息

      sudo kubectl get pods --all-namespaces -o wide

 

部署仪表盘dashboard

 

 

1、 下载启动文件

https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml  

2、 拉取镜像(我们已经拉取,可以直接使用,下方见链接地址)

3、 修改启动文件

 kind: Service

apiVersion: v1

metadata:

  labels:

    k8s-app: kubernetes-dashboard

  name: kubernetes-dashboard

  namespace: kubernetes-dashboard

spec:

  ports:

    - port: 443

      targetPort: 8443

      nodePort: 32000

  selector:

    k8s-app: kubernetes-dashboard

  type: NodePort

4,启动容器并查看:

sudo kubectl apply -f recommended.yaml

sudo kubectl get pods --all-namespaces -o wide

 

4、 创建admin用户

vim  create-admin.yaml

apiVersion: v1

kind: ServiceAccount

metadata:

  name: admin-user

  namespace: kubernetes-dashboard

---

apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRoleBinding

metadata:

  name: admin-user

roleRef:

  apiGroup: rbac.authorization.k8s.io

  kind: ClusterRole

  name: cluster-admin

subjects:

- kind: ServiceAccount

  name: admin-user

  namespace: kubernetes-dashboard

 

sudo kubectl apply -f create-admin.yaml

sudo kubectl -n kubernetes-dashboard get secrets

kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')

 

 

 至此结束部署

posted @ 2020-03-31 10:38  wangzuoli  阅读(3105)  评论(0编辑  收藏  举报