热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于云计算:kubespray2142安装kubernetes11810ubuntu20041

本次实战采纳官网举荐的在线装置,因而会去谷歌镜像仓库下载镜像,<fontcolor"red">须要您的网络能够拜访谷歌服务<font>;

欢送拜访我的GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,波及Java、Docker、Kubernetes、DevOPS等;

对于kubespray

Kubespray是开源的kubernetes部署工具,整合了ansible,能够不便的部署高可用集群环境,官网地址:https://github.com/kubernetes&#8230;

重要前提

本次实战采纳官网举荐的在线装置,因而会去谷歌镜像仓库下载镜像,须要您的网络能够拜访谷歌服务

机器信息

  • 因为作者太穷,本次实战筹集到共计两台机器,它们的主机名、IP地址和作用形容如下:
主机名 IP地址 作用 操作系统
ansible 192.168.50.134 ansible主机 CentOS7
node1 192.168.50.27 k8s服务器 ubuntu-20.04.1
  • 可见kubernetes是被部署在ubuntu电脑上;

    标准化设置

    ubuntu电脑要做以下设置:

  • 批改/etc/hostname,设置好主机名
  • 批改/etc/hosts,将本人的主机名和IP地址增加进去
  • 敞开防火墙
ufw disable
  1. 再次查看应该是敞开状态
root@ideapad:~# ufw status
状态:不流动
  1. 敞开selinux,如果提醒装置selinux-utils,示意selinux没有装置,就不必关系了
setenforce 0
  1. ipv4网络设置
modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
sysctl -w net.ipv4.ip_forward=1
  1. 立刻禁用替换分区
swapoff -a
  1. 我的电脑上,禁用前的内存状况
root@ideapad:~# free -m
              总计         已用        闲暇      共享    缓冲/缓存    可用
内存:       31913         551       30288         137        1073       30839
替换:        2047           0        2047
  1. 执行了swapoff -a后再看,可见全副为0了
root@ideapad:~# free -m
              总计         已用        闲暇      共享    缓冲/缓存    可用
内存:       31913         557       30281         137        1073       30833
替换:           0           0           0
  1. 以上禁用替换分区的办法,尽管立刻失效了,然而重启电脑后仍旧复原了替换分区的应用,要彻底禁用,请关上文件/etc/fstab,在下图红框这一行最后面增加#

    ansible主机免明码ssh登录

  2. ssh登录ansible主机;
  3. 生成ssh公私钥,输出命令ssh-keygen,而后间断四次回车:
  4. 输出命令ssh-copy-id root@192.168.50.27,将ansible的ssh分发给ubuntu主机,会要求输出yes和ubuntu主机的root账号的明码,实现输出后,当前ansible就能够免明码ssh登录ubuntu主机了:

    ansible主机操作

  5. ssh登录ansible主机;
  6. 装置ansible利用:
yum install -y epel-release ansible
  1. 装置pip:
easy_install pip
  1. 通过pip装置jinja2:
pip2 install jinja2 --upgrade
  1. 装置python36:
yum install python36 -y
  1. 创立工作目录,进入工作目录:
mkdir /usr/local/kubespray && cd /usr/local/kubespray/
  1. 下载kubespray,我这里下载的是v2.14.2版本:
wget https://github.com/kubernetes-sigs/kubespray/archive/v2.14.2.tar.gz
  1. 解压:
tar -zxvf v2.14.2.tar.gz
  1. 进入解压后的目录:
cd kubespray-2.14.2/
  1. 装置kubespray所需的利用(留神是pip3):
pip3 install -r requirements.txt
  1. 复制一份demo配置信息到目录inventory/mycluster
cp -rfp inventory/sample inventory/mycluster
  1. 进去看一下,可见mycluster目录下复制了很多文件:
[root@kubespray kubespray-2.14.2]# tree inventory/
inventory/
├── local
│   ├── group_vars -> ../sample/group_vars
│   └── hosts.ini
├── mycluster
│   ├── group_vars
│   │   ├── all
│   │   │   ├── all.yml
│   │   │   ├── aws.yml
│   │   │   ├── azure.yml
│   │   │   ├── containerd.yml
│   │   │   ├── coreos.yml
│   │   │   ├── docker.yml
│   │   │   ├── gcp.yml
│   │   │   ├── oci.yml
│   │   │   ├── openstack.yml
│   │   │   └── vsphere.yml
│   │   ├── etcd.yml
│   │   └── k8s-cluster
│   │       ├── addons.yml
│   │       ├── k8s-cluster.yml
│   │       ├── k8s-net-calico.yml
│   │       ├── k8s-net-canal.yml
│   │       ├── k8s-net-cilium.yml
│   │       ├── k8s-net-contiv.yml
│   │       ├── k8s-net-flannel.yml
│   │       ├── k8s-net-kube-router.yml
│   │       ├── k8s-net-macvlan.yml
│   │       └── k8s-net-weave.yml
│   └── inventory.ini
└── sample
    ├── group_vars
    │   ├── all
    │   │   ├── all.yml
    │   │   ├── aws.yml
    │   │   ├── azure.yml
    │   │   ├── containerd.yml
    │   │   ├── coreos.yml
    │   │   ├── docker.yml
    │   │   ├── gcp.yml
    │   │   ├── oci.yml
    │   │   ├── openstack.yml
    │   │   └── vsphere.yml
    │   ├── etcd.yml
    │   └── k8s-cluster
    │       ├── addons.yml
    │       ├── k8s-cluster.yml
    │       ├── k8s-net-calico.yml
    │       ├── k8s-net-canal.yml
    │       ├── k8s-net-cilium.yml
    │       ├── k8s-net-contiv.yml
    │       ├── k8s-net-flannel.yml
    │       ├── k8s-net-kube-router.yml
    │       ├── k8s-net-macvlan.yml
    │       └── k8s-net-weave.yml
    └── inventory.ini

10 directories, 45 files
  1. 设置集群信息(当前目录仍旧是kubespray-2.14.2):
declare -a IPS=(192.168.50.27)
  1. 配置ansible:
CONFIG_FILE=inventory/mycluster/hosts.yml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
  1. 此时kubespray的脚本依据输出的IP信息做好了集群布局,具体信息可见inventory/mycluster/hosts.yml,如下所示,您也能够自行批改此文件:
[root@kubespray kubespray-2.14.2]# cat inventory/mycluster/hosts.yml
all:
  hosts:
    node1:
      ansible_host: 192.168.50.27
      ip: 192.168.50.27
      access_ip: 192.168.50.27
  children:
    kube-master:
      hosts:
        node1:
    kube-node:
      hosts:
        node1:
    etcd:
      hosts:
        node1:
    k8s-cluster:
      children:
        kube-master:
        kube-node:
    calico-rr:
      hosts: {}
  1. 执行以下命令即可开始装置,在线装置比拟耗时请急躁期待:
ansible-playbook -i inventory/mycluster/hosts.yml --become --become-user=root cluster.yml
  1. 遇到网络问题失败退出时很常见的事件,此时将上述命令反复执行即可,ansible对于曾经执行过的命令会跳过的;
  2. 装置实现时控制台输入相似如下的信息(太多了,省略了一些):
Saturday 21 November 2020  17:47:18 +0800 (0:00:00.025)       0:30:03.154 ***** 
Saturday 21 November 2020  17:47:18 +0800 (0:00:00.024)       0:30:03.179 ***** 

PLAY RECAP **********************************************************************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node1                      : ok=591  changed=95   unreachable=0    failed=0    skipped=1131 rescued=0    ignored=0   

Saturday 21 November 2020  17:47:18 +0800 (0:00:00.021)       0:30:03.200 ***** 
=============================================================================== 
download : download_file | Download item ------------------------------------------------------------------------------------------------------------------ 1008.61s
kubernetes/preinstall : Update package management cache (APT) ---------------------------------------------------------------------------------------------- 119.25s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 42.36s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 38.26s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 37.31s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 36.60s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 35.01s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 34.00s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 30.55s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 27.47s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 26.78s
kubernetes/master : kubeadm | Initialize first master ------------------------------------------------------------------------------------------------------- 25.98s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 23.42s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 22.14s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 21.50s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 20.17s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 17.55s
container-engine/docker : ensure docker packages are installed ----------------------------------------------------------------------------------------------- 9.73s
kubernetes/master : Master | wait for kube-scheduler --------------------------------------------------------------------------------------------------------- 7.83s
kubernetes-apps/ansible : Kubernetes Apps | Lay Down CoreDNS Template ---------------------------------------------------------------------------------------- 6.93s
  1. 至此,kubernetes集群环境部署实现,接下来简略验证一下环境是否可用;

    查看环境

  2. ssh登录ubuntu机器;
  3. 查看节点、service、pod:
root@node1:~# kubectl get node -o wide
NAME    STATUS   ROLES    AGE    VERSION    INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION     CONTAINER-RUNTIME
node1   Ready    master   104m   v1.18.10   192.168.50.27           Ubuntu 20.04.1 LTS   5.4.0-54-generic   docker://19.3.12
root@node1:~# kubectl get node -o wide
NAME    STATUS   ROLES    AGE    VERSION    INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION     CONTAINER-RUNTIME
node1   Ready    master   105m   v1.18.10   192.168.50.27           Ubuntu 20.04.1 LTS   5.4.0-54-generic   docker://19.3.12
root@node1:~# kubectl get services --all-namespaces
NAMESPACE     NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
default       kubernetes                  ClusterIP   10.233.0.1              443/TCP                  105m
kube-system   coredns                     ClusterIP   10.233.0.3              53/UDP,53/TCP,9153/TCP   104m
kube-system   dashboard-metrics-scraper   ClusterIP   10.233.12.230           8000/TCP                 104m
kube-system   kubernetes-dashboard        ClusterIP   10.233.61.24            443/TCP                  104m
root@node1:~# kubectl get pods --all-namespaces
NAMESPACE     NAME                                          READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-6ccb68f9b5-kwqck      1/1     Running   0          104m
kube-system   calico-node-4lmpf                             1/1     Running   0          104m
kube-system   coredns-dff8fc7d-2gnl8                        1/1     Running   0          104m
kube-system   coredns-dff8fc7d-4vthn                        0/1     Pending   0          104m
kube-system   dns-autoscaler-66498f5c5f-qh4vb               1/1     Running   0          104m
kube-system   kube-apiserver-node1                          1/1     Running   0          105m
kube-system   kube-controller-manager-node1                 1/1     Running   0          105m
kube-system   kube-proxy-kk84b                              1/1     Running   0          105m
kube-system   kube-scheduler-node1                          1/1     Running   0          105m
kube-system   kubernetes-dashboard-667c4c65f8-8ckf5         1/1     Running   0          104m
kube-system   kubernetes-metrics-scraper-54fbb4d595-dk42t   1/1     Running   0          104m
kube-system   nodelocaldns-d69h9                            1/1     Running   0          104m
  • 可见一些必须的pod和服务都曾经启动了,接下来试试dashboard是否失常拜访;

    拜访dashboard

    dashboard能够查看kubernetes零碎的整体状况,为了拜访dashboard页面,须要减少RBAC:

  • ssh登录ubuntu机器;
  • 执行以下命令,创立文件admin-user.yaml
tee admin-user.yaml <<-'EOF'
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system
EOF
  1. 执行以下命令,创立文件admin-user-role.yaml
tee admin-user-role.yaml <<-'EOF'
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: kube-system
EOF
  1. 创立ServiceAccount和ClusterRoleBinding:
kubectl create -f admin-user.yaml && kubectl create -f admin-user-role.yaml
  1. kubernetes-dashboard这个服务的类型从ClusterIP改为NodePort,这样咱们就能从浏览器拜访dashboard了:
kubectl  patch svc kubernetes-dashboard -n kube-system \
> -p '{"spec":{"type":"NodePort","ports":[{"port":443,"targetPort":8443,"nodePort":30443}]}}'
  1. 再看服务,曾经胜利改为NodePort
root@node1:~# kubectl get service --all-namespaces
NAMESPACE     NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
default       kubernetes                  ClusterIP   10.233.0.1              443/TCP                  132m
kube-system   coredns                     ClusterIP   10.233.0.3              53/UDP,53/TCP,9153/TCP   131m
kube-system   dashboard-metrics-scraper   ClusterIP   10.233.12.230           8000/TCP                 131m
kube-system   kubernetes-dashboard        NodePort    10.233.61.24            443:30443/TCP            131m
  1. 获取token看,用于登录dashboard页面:
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
  1. 下图红框中就是token的内容:

  1. 当初通过浏览器拜访dashboard页面了,地址是:https://192.168.50.27:30443 ,其中192.168.50.27是ubuntu机器的IP地址;
  2. 因为不是https协定,因而浏览器可能弹出平安提醒,如下图,抉择持续返回

  1. 此时页面会让您抉择登录形式,抉择令牌并输出后面失去的token,即可登录:

  1. 登录胜利后能够见到零碎信息,如下图:


至此,kubespray-2.14.2装置kubernetes-1.18.10实现,心愿本文能给您一些参考。

你不孤独,欣宸原创一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 数据库+中间件系列
  6. DevOps系列

欢送关注公众号:程序员欣宸

微信搜寻「程序员欣宸」,我是欣宸,期待与您一起畅游Java世界&#8230;
https://github.com/zq2599/blog_demos


推荐阅读
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文详细说明了在JavaScript中解决alert弹出窗口文本换行问题的方法。通过给alert弹出的文本添加换行符,可以实现在弹窗中显示多行文本的效果。同时,提供了相关代码示例和注意事项,帮助读者更好地理解和应用这一解决方法。 ... [详细]
author-avatar
男孩介于边缘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有