在 Ubuntu 上安装 K8S教程

您所在的位置:网站首页 ubuntu安装sshpass 在 Ubuntu 上安装 K8S教程

在 Ubuntu 上安装 K8S教程

2023-08-18 18:09| 来源: 网络整理| 查看: 265

在 Ubuntu 上安装 K8S教程

目录在 Ubuntu 上安装 K8S教程1,更新系统源2,更新软件包3,安装 Docker也可以参考其它过程安装4,安装 K8S5,初始化6,使主节点生效7,查看 Node8,安装面板9,访问面板(dashboard)10,添加 Node 进行测试

1,更新系统源

如果系统本身自带得镜像地址,服务器在国外,下载速度会很慢,可以打开 /etc/apt/sources.lis 替换为国内得镜像源。

apt upgrade 2,更新软件包

将系统得软件组件更新至最新稳定版本。

apt update 3,安装 Docker 也可以参考其它过程安装 apt-get install docker.io

如果需要配置为开机启动,可执行以下命令

systemcd enable docker systemcd start docker

如果要配置 Docker 镜像加速,打开 /etc/docker/daemon.json 文件,registry-mirrors 增加或修改,加入https://registry.docker-cn.com 这个地址,也可以填写阿里云腾讯云等镜像加速地址。

示例

{ "registry-mirrors": [ "https://registry.docker-cn.com" ] }

重启 Docker,使配置生效

sudo systemctl daemon-reload sudo systemctl restart docker 4,安装 K8S

执行以下命令安装 https 工具以及 k8s。

apt-get update && apt-get install -y apt-transport-https curl apt-get install -y kubelet kubeadm kubectl --allow-unauthenticated

执行下面命令测试是否正常

kubeadm init

如果安装时,出现下面情况,说明系统得镜像源中,找不到 k8s 的软件包。

No apt package "kubeadm", but there is a snap with that name. Try "snap install kubeadm" No apt package "kubectl", but there is a snap with that name. Try "snap install kubectl" No apt package "kubelet", but there is a snap with that name. Try "snap install kubelet"

可以打开 /etc/apt/sources.list 文件,添加一行

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

再次执行安装 K8s 的命令。

如果出现

The following signatures couldn't be verified because the public key is not available

则执行下面命令,为期添加 key。

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

上面命令,安装了 kubelet、kubeadm、kubectl ,kubelet 是 k8s 相关服务,kubectl 是 k8s 管理客户端,kubeadm 是部署工具。

5,初始化

执行下面命令进行初始化,会自动从网络中下载需要的 Docker 镜像。

此命令是用来部署主节点的(Master)。

执行 kubeadm version 查看版本,GitVersion:"v1.17.2" 中即为版本号。

执行以下命令初始化

kubeadm init --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=NumCPU

--ignore-preflight-errors=NumCPU 是在只有一个 CPU 的时候使用,例如 1G1M 的学生服务器。

但是因为需要连接到 Google ,所以可能无法下载内容。

我们可以通过使用 kubeadm config images list 命令,列举需要拉取的镜像。我们来手动通过 Docker 拉取。这个过程比较麻烦,还需要手动修改镜像名称。

拉取方法 docker pull {镜像名称}。

Google 访问不了,不过 DockerHub 已经备份好需要的镜像。

mirrorgooglecontainers 这个仓库备份了相应的镜像。遗憾的是,镜像不一定都是最新的备份。阿里云上面的 google_containers 仓库应该是备份最新的。

例如需要以下镜像

k8s.gcr.io/kube-apiserver:v1.17.2 k8s.gcr.io/kube-controller-manager:v1.17.2 k8s.gcr.io/kube-scheduler:v1.17.2 k8s.gcr.io/kube-proxy:v1.17.2 k8s.gcr.io/pause:3.1 k8s.gcr.io/etcd:3.4.3-0 k8s.gcr.io/coredns:1.6.5

则拉取对应的镜像

docker pull mirrorgooglecontainers/kube-apiserver:v1.17.2 docker pull mirrorgooglecontainers/kube-controller-manager:v1.17.2 docker pull mirrorgooglecontainers/kube-scheduler:v1.15.0 docker pull mirrorgooglecontainers/kube-proxy:v1.17.2 docker pull mirrorgooglecontainers/pause:3.1 docker pull mirrorgooglecontainers/etcd:3.4.3-0 docker pull coredns/coredns:1.6.5

使用 docker tag {旧名称:版本}:{新名称:版本} ,将镜像改名。

考虑到各种情况和可能会出现问题,笔者这里给出一个别人写的一键脚本,可以直接一键完成这一步。

touch pullk8s.sh # 创建脚本文件 nano pullk8s.sh # 编辑脚本

然后将以下内容复制进去

for i in `kubeadm config images list`; do imageName=${i#k8s.gcr.io/} docker pull registry.aliyuncs.com/google_containers/$imageName docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName docker rmi registry.aliyuncs.com/google_containers/$imageName done;

保存文件

Ctrl + O 回车键 Ctrl + x

给脚本文件赋权限

chmod +x pullk8s.sh

执行脚本

sh pullk8s.sh

然后执行 docker images 命令查看需要的镜像是否都准备好了。

root@instance-wxxixh4k:~# docker images REPOSITORY TAG IMAGE ID CREATED SIZE k8s.gcr.io/kube-proxy v1.17.2 cba2a99699bd 2 weeks ago 116MB k8s.gcr.io/kube-apiserver v1.17.2 41ef50a5f06a 2 weeks ago 171MB k8s.gcr.io/kube-controller-manager v1.17.2 da5fd66c4068 2 weeks ago 161MB k8s.gcr.io/kube-scheduler v1.17.2 f52d4c527ef2 2 weeks ago 94.4MB k8s.gcr.io/coredns 1.6.5 70f311871ae1 3 months ago 41.6MB k8s.gcr.io/etcd 3.4.3-0 303ce5db0e90 3 months ago 288MB k8s.gcr.io/pause 3.1 da86e6ba6ca1 2 years ago 742kB

最后执行 开头的初始化命令。

实在不行的话,可以尝试 https://learnku.com/articles/29209 中的安装教程。

6,使主节点生效

添加环境变量

export KUBECONFIG=/etc/kubernetes/admin.conf

添加网络插件

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

运行别人编写好的 yaml 配置文件

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

这一步也可以自己编写 yaml 。

执行后出现

odsecuritypolicy.policy/psp.flannel.unprivileged created clusterrole.rbac.authorization.k8s.io/flannel created clusterrolebinding.rbac.authorization.k8s.io/flannel created serviceaccount/flannel created configmap/kube-flannel-cfg created daemonset.apps/kube-flannel-ds-amd64 created daemonset.apps/kube-flannel-ds-arm64 created daemonset.apps/kube-flannel-ds-arm created daemonset.apps/kube-flannel-ds-ppc64le created daemonset.apps/kube-flannel-ds-s390x created

保存使用配置

kubeadm join 7,查看 Node

执行以下命令查看 Node

kubectl get nodes

结果示例

root@instance-wxxixh4k:~# kubectl get nodes NAME STATUS ROLES AGE VERSION instance-wxxixh4k Ready master 9m23s v1.17.2

说明已经成功了,并且能够添加移除 Node。

8,安装面板

下载 yaml 配置文件

wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/alternative/kubernetes-dashboard.yaml

使用 cat kubernetes-dashboard.yaml 命令查看 yaml 文件内容,记录版本号。

文件中有类型以下内容的语句,后面的数字就是版本号。

image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1

拉取 kubernetes-dashboard 镜像(注意修改后面的版本号)。

docker pull registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1 docker tag registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1 docker rmi registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1

安装 kubernetes-dashboard

kubectl create -f kubernetes-dashboard.yaml

查看安装结果

kubectl get pod --namespace=kube-system

配置面板,添加 Admin 账号和权限

复制粘贴下面内容到终端,按回车键。

cat


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3