说明:K8S单机安装可能遇到很多坑,网上目前的大部分教程已经不适用最新版了。踩过坑后与大家分享一下方法
一、环境准备
安装VirtualBox:下载CentOS 7: http://mirrors.163.com/centos/7.7.1908/isos/x86_64/CentOS-7-x86_64-DVD-1908.torrent安装CentOS 7: 如果机器支持,建议选择图形界面方便使用修改软件源
wget -O /etc/yum.repos.d/CentOS- .repo http://mirrors.aliyun.com/repo/Centos-7.repo yum makecache
二、安装k8s修改配置
安装k8s,etcd,docker
yum install -y etcd kubernetes
配置修改参考: https://lihaoquan.me/2017/2/25/create-kubernetes-single-node-mode.html
启动下列服务:
systemctl start etcd systemctl start docker systemctl start kube-apiserver.service systemctl start kube-controller-manager.service systemctl start kube-scheduler.service systemctl start kubelet.service systemctl start kube-proxy.service
如果遇到错误,则使用journalctl -xe查看错误信息,可能遇到需要设置防火墙,设置代理等问题
journalctl -xe
三、拉取启动镜像
安装mysql
docker pull mysql:5.7
创建文件: mysql-rc.yaml
apiVersion: v1
kind: ReplicationController
data:
name: mysql
spec:
replicas: 1
selector:
app: mysql
template:
data:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"kubectl命令手册: https://hardocs.com/d/kubernetes/136-Command%20Reference.html
kubectl create -f mysql-rc.yaml
#使用mysql 5.7,直接pull mysql会拉到mysql 8版本,老的JDBC可能不兼容
查看mysql具体启动情况,也会包含错误信息
kubectl describe pod mysql
下载安装证书
wget [http://mirror.centos.org/centos/7/os/x86\_64/Packages/python-rhsm-certificates-1.19.10-1.el7\_4.x86\_64.rpm](http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm) rpm2cpio python-rhsm-certificates-1.19.10-1.el7\_4.x86\_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem #rpm2cpio命令用于将rpm软件包转换为cpio格式的文件,cpio命令主要是用来建立或者还原备份档的工具程序,cpio命令可以复制文件到归档包中,或者从归档包中复制文件。
删除并重新生成mysql的rc
kubectl delete -f mysql-rc.yaml kubectl get pods kubectl create -f mysql-rc.yaml
kubectl describe pod mysql
kubectl get pods
创建文件:mysql-svc.yaml
apiVersion: v1
kind: Service
data:
name: mysql
spec:
ports:
- port: 3306
selector:
app: mysqlkubectl create -f mysql-svc.yaml
拉取并运行tomcat的demo镜像
docker pull kubeguide/tomcat-app:v1
创建文件:myweb-rc.yaml
apiVersion: v1
kind: ReplicationController
data:
name: myweb
spec:
replicas: 5
selector:
app: myweb
template:
data:
labels:
app: myweb
spec:
containers:
- name: myweb
image: docker.io/kubeguide/tomcat-app:v1
ports:
- containerPort: 8080
env:
- name: MYSQL_SERVICE_HOST
value: "10.254.65.209" #<===这里的mysql地址需要填写service的mysql地址,执行kubectl get svc 查看
- name: MYSQL_SERVICE_PORT
value: "3306"创建文件:myweb-svc.yaml
apiVersion: v1
kind: Service
data:
name: myweb
spec:
type: NodePort
ports:
- port: 8080
nodePort: 30001 #外部端口映射
selector:
app: mywebkubectl create -f myweb-rc.yaml kubectl create -f myweb-svc.yaml
四、外部访问与查看数据
访问:http://127.0.0.1:30001/demo/index.jsp 进行操作
可以进入容器查看mysql中已经有数据了
继续阅读与本文标签相同的文章
上一篇 :
vue中子组件调用兄弟组件方法
下一篇 :
vi与vim如何修改tab为4个空格方法示例
-
如果开发一款空气净化器APP需要具备哪些功能?
2026-05-15栏目: 教程
-
中国国际乐器展上,“常州制造”展现魅力
2026-05-15栏目: 教程
-
人工智能肾病预测系统上线 知晓5年内终末期肾病概率
2026-05-15栏目: 教程
-
5G从天河启航 为军运加油
2026-05-15栏目: 教程
-
广东上线区块链财政电子票据,未来将与便民缴费等相结合
2026-05-15栏目: 教程
