在 Ubuntu 上安装 K8S教程
在 Ubuntu 上安装 K8S教程
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 <<EOF > dashboard-admin.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: kubernetes-dashboard
labels:
k8s-app: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kubernetes-dashboard
namespace: kube-system
EOF
上面代码会创建一个 dashboard-admin.yaml 文件。
执行安装
kubectl create -f dashboard-admin.yaml
查看节点端口
kubectl get svc --namespace=kube-system
找到名为 kubernetes-dashboard
的节点,记录端口 。
查看 pod 名称
kubectl get pod --namespace=kube-system
其中有一个 kubernetes-dashboard
开头的,例如 kubernetes-dashboard-6bf999dbcc-nc4hq
,记录名称。
9,访问面板(dashboard)
如果以下方法无法使用,请参考
https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
方法一:kubectl proxy
执行
kubectl proxy
内网即可使用下面地址访问
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
方法二:API Server
访问方法
这里不再赘述,详细请参考网路资料。
方法三:直接暴露端口(NodePort)
不推荐使用。
执行
kubectl -n kube-system edit service kubernetes-dashboard
找到 type: ClusterIP
,改成 type: NodePort
。
另外 port
也可以改一下。
提示:
进入时,先使用方向键盘移动到合适位置;删除字符请使用 Delete
键;
然后按一下 Esc
键,按下 i
键进入编辑;
按一下 Esc
键,按一下 Shift + q
,会提示输入内容,输入 wq!
保存并退出。
执行 kubectl -n kube-system get service kubernetes-dashboard
查看到端口映射。
例如
80:31901/TCP
则访问方法是 https://{ip}:31901
方法三
kubectl port-forward kubernetes-dashboard-6bf999dbcc-nc4hq 8080:80 --namespace=kube-system &
10,添加 Node 进行测试
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=8090 --type=NodePort
外网访问 8090 即可访问到 Nginx。
在 Ubuntu 上安装 K8S教程的更多相关文章
- Ubuntu 20.04上安装MySQL教程,ubuntu安装mysql
在Ubuntu 20.04上安装MySQL教程 先决条件 确保您以具有sudo特权的用户身份登录. 在Ubuntu上安装MySQL 在撰写本文时,Ubuntu存储库中可用的MySQL的最新版本是MyS ...
- ubuntu14上安装ros教程
安装ROS 官方的安装教程地址 http://wiki.ros.org/cn/jade/Installation/Ubuntu 建议安装indigo版的 下面的教程是安装jade版的 配置Ubuntu ...
- Ubuntu上安装MongoDB(译)
add by zhj:直接从第四步开始就可以了,而且安装好MongoDB后会自动启动的,不必自己去执行启动命令 原文:https://docs.mongodb.com/manual/tutorial/ ...
- 【转载】如何在Ubuntu上安装LAMP服务器系统?
转载自:http://os.51cto.com/art/201307/405333.htm [2013年7月25日 51CTO外电头条]为何应该在Ubuntu上安装LAMP服务器?从事Web开发工作时 ...
- [转载]如何在Ubuntu上安装LAMP服务器系统
[2013年7月25日 51CTO外电头条]为何应该在Ubuntu上安装LAMP服务器?从事Web开发工作时,我更偏爱在不受干扰的情况下,在我那台计算机上的开发环境下进行开发.我宁愿所犯的错误大部分是 ...
- 如何在Ubuntu上安装LAMP服务器系统?
在Ubuntu上安装LAMP Ubuntu的开发人员让人们很容易安装和配置LAMP软件包,只要借助一个终端命令.所以,打开终端窗口,让我们开始入手吧. sudo apt-get install lam ...
- 如何在 Ubuntu 上安装 MongoDB
MongoDB 是一个越来越流行的自由开源的 NoSQL 数据库,它将数据存储在类似 JSON 的灵活文档集中,这与 SQL 数据库中常见的表格形式形成对比. 你很可能发现在现代 Web 应用中使用 ...
- [异常解决] ubuntu上安装JLink驱动遇到的坑及给后来者的建议
一.前言 最近将整个电脑格式化,改成了linux操作系统 希望这样能让自己在一个新的世界探索技术.提升自己吧- win上的工具用多了,就不想变化了- 继上一篇<ubuntu上安装虚拟机遇到的问题 ...
- Ubuntu上安装Robomongo及添加到启动器
到目前为止,Robomongo仍是MongoDB最好的客户端管理工具,如需在Ubuntu上安装Robomongo,可直接从官网下载.tar.gz压缩包进行解压,然后直接运行bin目录下的robomon ...
随机推荐
- POJ 1166 The Clocks [BFS] [位运算]
1.题意:有一组3*3的只有时针的挂钟阵列,每个时钟只有0,3,6,9三种状态:对时针阵列有9种操作,每种操作只对特点的几个时钟拨一次针,即将时针顺时针波动90度,现在试求从初试状态到阵列全部指向0的 ...
- 17.python内置函数2
python内置函数1:https://www.cnblogs.com/raitorei/p/11813694.html # max,min高级玩法 # l=[1,3,100,-1,2] # prin ...
- jquery中动态添加的标签绑定的click事件失效的解决办法
把.click()换成.live('click',function(){})(如果你的jquery的版本是1.10之前) 把.click()换成.on('click',function(){})(jq ...
- 跟我一起学QT_QT标准对话框_文件对话框
标准对话框 QT的标准对话框分为以下几种 颜色对话框 文件对话框 字体对话框 输入对话框 消息对话框 进度对话框 错误信息对话框 向导对话框 文件对话框 QT中的文件对话框QFileDialog类提供 ...
- 异常记录 Connection reset
连接重置Connection reset 异常java.net.SocketException: Connection reset 详细信息 java.net.SocketException: Con ...
- 开源工具abaplint的介绍
长期以来,SAP提供的标准ABAP开发工具是我们对代码进行检查的唯一方式.这意味着我们只能对ABAP服务器上的ABAP代码做出分析,而离线代码则成为了纯粹的文本,开发者无法对其进行检查.abaplin ...
- TVP思享 | 四个全新维度,极限优化HTTP性能
导语 | 当产品的用户量不断翻番时,需求会倒逼着你优化HTTP协议.那么,要想极限优化HTTP性能,应该从哪些维度出发呢?本文将由TVP陶辉老师,为大家分享四个全新维度.「TVP思享」专栏,凝结大咖思 ...
- realme X2谷歌套件
目前市面上的很多手机是不支持谷歌相关组件的,经过不断的测试成功适配realme X2(真机测试完美适配) 为框架的GMS是用户想要体验整套Google服务不可绕开的一环,Google地图.Play商店 ...
- JAVA并发之锁获取步骤及锁优化
在另外的两篇文章中先后介绍了轻量级同步关键字volatile和重量级锁关键字synchronized,这两个关键字是Java语言中进行线程同步的基本方式(当然还有ReentrenLock等显式锁方式) ...
- Ncverilog 仿真quartus generate IP的要点
Ncverilog 仿真quartus generate IP的要点 最近利用quartus II 生成plll 的IP,利用nclaunch 仿真的时候老是报错, 提示unresolved in w ...