本文介绍了Ubuntu 20.04上部署单master kubernetes,以供参考学习使用。自建K8S存在很多弊端,例如:单master(非高可用)不应用在生产环境,部署过程复杂,依赖网络,后期维护成本高,可视化界面和监控需要后期自行安装,扩展node需要人工干预,很难做到自动伸缩等等。解决建议见文末结束语。
OS:Ubuntu 20.04 server 64bit
Docker:v20.10.20
K8S组件:v1.23.9
测试使用华为云ECS,规划如下:
| ECS名称 | 规格 | IP | OS |
| ecs-k8s-master | 4vCPUs | 8GiB | 192.168.1.100 | Ubuntu 20.04 server 64bit |
| ecs-k8s-node1 | 4vCPUs | 16GiB | 192.168.1.101 | Ubuntu 20.04 server 64bit |
| ecs-k8s-node2 | 4vCPUs | 16GiB | 192.168.1.102 | Ubuntu 20.04 server 64bit |

##查ubuntu版本
lsb_release -a
# 临时/永久关闭selinux
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
# 临时/永久关闭swap
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
# 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# 指定生效
sysctl --system
# 在master添加hosts 根据实际自行修改
cat >> /etc/hosts << EOF
192.168.1.100 ecs-k8s-master
192.168.1.101 ecs-k8s-node1
192.168.1.102 ecs-k8s-node2
EOF
#注意:这里要看一下/etc/hosts,把没用的都注释掉
注意:最后hosts根据自己实际情况进行配置。
#更新软件包索引/列表
sudo apt update
#安装Docker指定版本
apt-get install -y apt-transport-https ca-certificates curl software-properties-common
#添加官网docker的GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
#设置stable存储库
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
#更新apt源
apt-get update
#查看docker-ce的版本
#apt-cache madison docker-ce
#安装指定版本
apt-get -y install docker-ce=5:20.10.16~3-0~ubuntu-focal
#查看Docker版本
docker -v
#添加开机自启动
systemctl enable docker
#修改Docker驱动方式
cat > /etc/docker/daemon.json << EOF
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
#重启Docker
systemctl daemon-reload
systemctl restart docker
#使得 apt 支持 ssl 传输
apt-get update && apt-get install -y apt-transport-https
# 下载 gpg 密钥(华为云)
curl http://mirrors.huaweicloud.com/kubernetes/yum/doc/apt-key.gpg | apt-key add -
# 添加 k8s 镜像源(华为云)
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://mirrors.huaweicloud.com/kubernetes/apt/ kubernetes-xenial main
EOF
# 更新源列表
apt-get update
# 下载 kubectl,kubeadm以及 kubelet (node节点好像不需要安装kubectl)
apt-get install -y kubelet=1.23.9-00 kubeadm=1.23.9-00 kubectl=1.23.9-00
#添加自启动
systemctl enable kubelet
kubeadm init \
--apiserver-advertise-address=192.168.1.100 \
--image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors='all'
#执行后会提示一些操作,都执行以下,最后能获得join命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
kubeadm join 192.168.1.100:6443 --token ulie52.psrag7kcu2ubbp1j \
--discovery-token-ca-cert-hash sha256:b482698ad867aac0a48e4156a15f7dd39c42626fe82c258905987704711a129f
注意:上方命令仅是样例,真实的kubeadm join,请在上一步获得!
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl get pod --all-namespaces
kubectl get node
验证效果如下:

# 创建nginx deployment
$ kubectl create deployment nginx --image=nginx
# 发布服务
$ kubectl expose deployment nginx --port=80 --type=NodePort
# 伸缩
$ kubectl scale -n default deployment nginx --replicas=2
#查看pod和服务
$ kubectl get pods,svc
#验证后清理
#删除服务
$ kubectl delete svc nginx
# 删除 deployment
$ kubectl delete deployment nginx

访问:http://任意node节点EIP:端口号。
(端口号:就是上图红圈的位置,也就是NodePort的端口号)
至此,在Ubuntu上部署K8S就完成了,但是在这个过程可能会碰到各种问题,最容易碰到的问题就是网络问题,虽然K8S相关镜像源已经更换到了华为云镜像源,但是在部署flannel的时候,很有可能等待较长时间才能成功拉取镜像完成部署。以及后期会碰到kubeadm join token过期等问题。单master也不适合用在生产环境,UI界面和监控后期还要自己配置维护,较为麻烦。而我们期望的是部署维护的过程要简单,工作重点应当是工作负载的构建上。
在这里向大家推荐华为云CCE,它与自建K8S的优劣对比如下:

本次测试相关云资源由天津市淘客科技有限公司提供
我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie
我试过重新启动apache,缓存的页面仍然出现,所以一定有一个文件夹在某个地方。我没有“公共(public)/缓存”,那么我还应该查看哪些其他地方?是否有一个URL标志也可以触发此效果? 最佳答案 您需要触摸一个文件才能清除phusion,例如:touch/webapps/mycook/tmp/restart.txt参见docs 关于ruby-如何在Ubuntu中清除RubyPhusionPassenger的缓存?,我们在StackOverflow上找到一个类似的问题:
我可以在Azure网站上部署RubyonRails吗? 最佳答案 还没有。目前仅支持.NET和PHP。 关于ruby-on-rails-RubyonRails可以部署在Azure网站上吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12964010/
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc
Ocra无法处理需要“tk”的应用程序require'tk'puts'nope'用奥克拉http://github.com/larsch/ocra不起作用(如链接中的一个问题所述)问题:https://github.com/larsch/ocra/issues/29(Ocra是1.9的"new"rubyscript2exe,本质上它用于将rb脚本部署为可执行文件)唯一的问题似乎是缺少tcl的DLL文件我不认为这是一个问题据我所知,问题是缺少tk的DLL文件如果它们是已知的,则可以在执行ocra时将它们包括在内有没有办法知道tk工作所需的DLL依赖项? 最佳答
我正在运行Ubuntu11.10并像这样安装Ruby1.9:$sudoapt-getinstallruby1.9rubygems一切都运行良好,但ri似乎有空文档。ri告诉我文档是空的,我必须安装它们。我执行此操作是因为我读到它会有所帮助:$rdoc--all--ri现在,当我尝试打开任何文档时:$riArrayNothingknownaboutArray我搜索的其他所有内容都是一样的。 最佳答案 这个呢?apt-getinstallri1.8编辑或者试试这个:(非rvm)geminstallrdocrdoc-datardoc-da