背景

当我们需要对k8s进行二次开发时,k8s环境是必须的,那么在ubuntu上部署单机k8s是最方便的,便于开发调试

系统准备

本人用的是Ubuntu18,以下以此为例

部署之前,最好切换至root用户,方便操作

sfeng@sfeng-virtual-machine:~$ sudo passwd root
Enter new UNIX password: // 输入root密码
Retype new UNIX password: // 重复输入
passwd: password updated successfully
sfeng@sfeng-virtual-machine:~$ su - root
Password: // 输入root密码

系统初始化

sudo ufw disable   // 关闭防火墙
sudo systemctl disable ufw // 永久关闭防火墙
sudo swapoff -a // 关闭swap
sed -ri 's/.*swap.*/#&/' /etc/fstab // 永久关闭swap
ubuntu系统默认没有安装selinux

// 更换国内镜像源
cp /etc/apt/sources.list /etc/apt/sources.list.bak
sed -i 's@http://cn.mirrors.ustc.edu.cn/ubuntu/@https://mirrors.tuna.tsinghua.edu.cn/ubuntu/@g' /etc/apt/sources.list
apt update

添加k8s安装秘钥

sudo apt update &&  sudo apt install -y apt-transport-https curl
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -

安装docker

curl -fsSL get.docker.com -o get-docker.sh 
sudo sh get-docker.sh --mirror Aliyun
docker run hello-world // 验证docker是否安装完成

配置k8s源

sudo touch /etc/apt/sources.list.d/kubernetes.list
这里选择阿里云的源
sudo echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" >> /etc/apt/sources.list.d/kubernetes.list

安装kubelet,kubeadm,kubectl

sudo  apt-get update
// 这里带上版本号,防止后续部署报错版本不一致问题
sudo apt install -y kubelet=1.18.2-00
sudo apt install -y kubeadm=1.18.2-00
sudo apt install -y kubectl=1.18.2-00
// 保持版本取消自动更新,这里也可以省略
sudo apt-mark hold kubelet kubeadm kubectl

kubeadm 初始化

sudo kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.2 --pod-network-cidr=10.240.0.0/16

等待出现以下信息,则说明初始化成功

// ...
Your Kubernetes control-plane 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/> Then you can join any number of worker nodes by running the following on each as root: kubeadm join 机器IP:6443 --token q1guce.z76o2a2bb65vhd0u \\
--discovery-token-ca-cert-hash sha256:2a57a27853c66d608bc544742b57602a21d47c3d09fe58eef15258946d4341c0

配置非 root 的操作

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

coredns 问题解决

这时候node 状态还是NotReady,因为网络插件还没有安装,这里安装calico

kubectl apply -f <https://docs.projectcalico.org/v3.10/manifests/calico.yaml>

安装成功后结果如下

root@sfeng-virtual-machine:~# kubectl get node
NAME STATUS ROLES AGE VERSION
sfeng-virtual-machine Ready master 28m v1.18.2
root@sfeng-virtual-machine:~# kubectl get pods --all-namespaces -o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kube-system calico-kube-controllers-57546b46d6-hfgx2 1/1 Running 0 23m 192.168.109.129 sfeng-virtual-machine <none> <none>
kube-system calico-node-kpx4p 1/1 Running 0 23m 192.168.57.23 sfeng-virtual-machine <none> <none>
kube-system coredns-7ff77c879f-gjgjb 1/1 Running 0 28m 192.168.109.130 sfeng-virtual-machine <none> <none>
kube-system coredns-7ff77c879f-qq6pz 1/1 Running 0 28m 192.168.109.131 sfeng-virtual-machine <none> <none>
kube-system etcd-sfeng-virtual-machine 1/1 Running 0 28m 192.168.57.23 sfeng-virtual-machine <none> <none>
kube-system kube-apiserver-sfeng-virtual-machine 1/1 Running 0 28m 192.168.57.23 sfeng-virtual-machine <none> <none>
kube-system kube-controller-manager-sfeng-virtual-machine 1/1 Running 0 28m 192.168.57.23 sfeng-virtual-machine <none> <none>
kube-system kube-proxy-jzfts 1/1 Running 0 28m 192.168.57.23 sfeng-virtual-machine <none> <none>
kube-system kube-scheduler-sfeng-virtual-machine 1/1 Running 0 28m 192.168.57.23 sfeng-virtual-machine <none> <none>

去掉master污点

// 这样master就能作为计算节点了哈,不然部署单机也没有意义
kubectl taint nodes --all node-role.kubernetes.io/master-

ubuntu18 安装单机k8s v1.18.2的更多相关文章

  1. Centos7安装Kubernetes k8s v1.16.0 国内环境

    一. 为什么是k8s v1.16.0? 最新版的v1.16.2试过了,一直无法安装完成,安装到kubeadm init那一步执行后,报了很多错,如:node xxx not found等.centos ...

  2. k8s v1.18.2 centos7 下环境搭建

    准备 服务器:3台机器--1台主.2台工作节点,可以使用virtualbox 搭建虚拟机 主机名 centos version ip docker version flannel version 主机 ...

  3. centos7安装kubernetes k8s 1.18

    可以参考其他网友的阿里云搭建k8s高可用集群(1.17.3) https://www.cnblogs.com/gmmy/p/12372805.html 准备四台centos7虚拟机,用来安装k8s集群 ...

  4. 在Ubuntu上使用离线方式快速安装K8S v1.11.1

    在Ubuntu上使用离线方式快速安装K8S v1.11.1 0.安装包文件下载 https://pan.baidu.com/s/1nmC94Uh-lIl0slLFeA1-qw v1.11.1 文件大小 ...

  5. 【K8S】K8S 1.18.2安装dashboard(基于kubernetes-dashboard 2.0.0版本)

    [K8S]K8S 1.18.2安装dashboard(基于kubernetes-dashboard 2.0.0版本) 写在前面 K8S集群部署成功了,如何对集群进行可视化管理呢?别着急,接下来,我们一 ...

  6. 使用kubeadm部署k8s集群[v1.18.0]

    使用kubeadm部署k8s集群 环境 IP地址 主机名 节点 10.0.0.63 k8s-master1 master1 10.0.0.63 k8s-master2 master2 10.0.0.6 ...

  7. 【k8s学习笔记】使用 kubeadm 部署 v1.18.5 版本 Kubernetes集群

    说明 本文系搭建kubernetes v1.18.5 集群笔记,使用三台虚拟机作为 CentOS 测试机,安装kubeadm.kubelet.kubectl均使用yum安装,网络组件选用的是 flan ...

  8. Kubernetes入门(一)——Kubernetes v1.18.5 安装部署

    Kubernetes的安装有两种方式:一是使用各个厂商封装的Kubernetes发行版,优点是可以一键安装部署,操作简单,缺点也很明显,若安装过程中某一步骤出现问题,很难定位处理:二是使用官方提供的k ...

  9. 二进制安装k8s v1.25.4 IPv4/IPv6双栈

    二进制安装k8s v1.25.4 IPv4/IPv6双栈 https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 介绍 kubernetes( ...

  10. ansible-kubeadm在线安装k8s v1.19-v1.20版本

    ansible-kubeadm在线安装k8s v1.19-v1.20版本 1. ansible-kubeadm在线安装k8s v1.19-v1.20版本 安装要求 确保所有节点系统时间一致 操作系统要 ...

随机推荐

  1. CSS必知必会

    CSS概念 css的使用是让网页具有统一美观的页面,css层叠样式表,简称样式表,文件后缀名.css css的规则由两部分构成:选择器以及一条或者多条声明 选择器:通常是需要改变的HTML元素 声明: ...

  2. Golang 挑战:编写函数 walk(x interface{}, fn func(string)),参数为结构体 x,并对 x 中的所有字符串字段调用 fn 函数。难度级别:递归。

    golang 挑战:编写函数 walk(x interface{}, fn func(string)),参数为结构体 x,并对 x 中的所有字符串字段调用 fn 函数.难度级别:递归. 为此,我们需要 ...

  3. 第三章3.1HTML技术与CSS技术

    web中的html以及css: html(超文本标记语言:Hyper Text Markup Language):用于描述网页的一种语言: 通常其根标签使用html标签:使用尖括号表示:<htm ...

  4. [Nginx/Linux/CENTOS]安装Nginx

    1 基本信息 服务器OS : Linux CENTSO 7.9 待安装的Nginx版本: NGINX 15.12 2 安装过程 step1 下载安装包 # cd /usr/local/software ...

  5. [操作系统]记一次未尽的三星 Galaxy A6s(SM-G6200)刷机过程

    给女王大人刷机,第一次刷机,很遗憾,遇到了三星的"锁三键"问题,没有搞成.记录一下这个过程所涉猎的一些刷机基本知识,不妨当作一次学习过程. 1 刷机过程 Step1 查看手机基本信 ...

  6. Unity学习笔记02 —— C#语法

    C#语法 控制台 Console Console.WriteLine(); Console.ReadLine(); 随机数 Random Random random = new Random(); r ...

  7. Kubernetes入门实践(Pods)

    为了解决多应用联合运行的问题,同时还要不破坏容器的隔离,就要再对多个容器进行打包.Pod就是对容器的打包,里面的容器可以看成是一个整体,总是能一起调度.一起运行,绝不会出现分离的情况,而Pod属于Ku ...

  8. Python_17 OSI模型和HTTP协议

    一.查缺补漏 1. Wireshark 抓报文 2. 要学习的所有博客: http://testingpai.com/member/haili/articles二.OSI模型 1. 物理层 2. 数据 ...

  9. Maven工程开发

    Maven工程开发 编写pom.xml配置文件 <properties></properties>定义项目的基本信息 groupId 反向域名,定义项目组名 artifactI ...

  10. 自制ASP.NET 本地授权文件

    asp.net登录时验证本地ini文件是否正确,主要步骤. 1.导入myini.DLL文件. 下载地址:http://yunpan.cn/cKw9kHJUk9Ui8  提取码 6631 2.添加引用 ...