K8S上mysql,无法创建rc解决,打不开/registry.access.redhat.com/redhat-ca.crt问题的解决

本文档记录了在K8S单机环境中部署MySQL遇到的问题及解决方案,包括rc创建失败、证书错误、版本不兼容和密码错误等,并提供了解决这些问题的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文档:表示感谢

https://www.cnblogs.com/jason0529/p/9122694.html

https://blog.youkuaiyun.com/firehive/article/details/81331802?utm_source=blogxgwz1

参考《Kubernetes 权威指南》学习一下k8s,有些坑记录一下

一、安装单机版kubernetes
systemctl  disable  firewalld
systemctl  stop  firewalld
yum -y install etcd kubernetes
按顺序启动:
systemctl  start etcd
systemctl  start  docker
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
systemctl start kubelet
systemctl start kube-proxy

二、创建mysql的rc定义文件:
apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql
        ports: 
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "xxxxx"
          
kubectl  create  -f  mysql.yaml

问题一:

kubectl get rc ,ready为0
kubectl get pods 提示没有资源;
解决方法:
1、Generate a signing key:
openssl genrsa -out /tmp/serviceaccount.key 2048
2、vim   /etc/kubernetes/apiserver
KUBE_API_ARGS="--service_account_key_file=/tmp/serviceaccount.key"
 3、vim   /etc/kubernetes/controller-manager
KUBE_CONTROLLER_MANAGER_ARGS="--service_account_private_key_file=/tmp/serviceaccount.key"
4、重启服务
service kube-apiserver restart
service kube-controller-manager restart
5、再度执行:
kubectl get rc
kubectl get pods 
状态是ContainersCreating,还是没有正常运行,
排查:
kubectl describe pod mysql
问题二:
 (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory)
解决方法:
yum -y install *rhsm*
wget 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
docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest
会生成/etc/rhsm/ca/redhat-uep.pem文件;
再次查看状态:
kubectl get rc
kubectl get pods 
如果有必要,可以删除原来创建的rc并重建
kubectl delete -f mysql-rc.yaml
kubectl create -f mysql-rc.yaml
再次查看状态:
kubectl get rc
NAME      DESIRED   CURRENT   READY     AGE
mysql     1         1         1         19h
kubectl get pods 
NAME          READY     STATUS    RESTARTS   AGE
mysql-xxxxx   1/1       Running   0          13h

问题三、tomcat 连不上mysql,提示无法创建数据库连接,是mysql版本问题,修改mysql-rc.yaml并重建:

apiVersion : v1
kind : ReplicationController
metadata : 
    name : mysql
spec : 
  replicas : 1
  selector : 
    app : mysql
  template : 
    metadata : 
      labels : 
        app : mysql
    spec : 
      containers : 
      - name : mysql
        image : mysql:5.7
        imagePullPolicy: IfNotPresent 
        ports : 
        - containerPort : 3306
        env : 
        - name : MYSQL_ROOT_PASSWORD
          value : "xxxxx"
删除并重建mysql:
kubectl delete -f mysql-rc.yaml
kubectl create -f mysql-rc.yaml
稍后重建完成;

问题四、提示访问数据库密码错误,原因是tomcat里的连接写的密码是123456,(在insert.jsp文件里),修改它;

先安装vim命令,虽然是centOS系统,但是docker里居然没有yum,却支持apt-get。

apt-get update 

apt-get -y install vim 

修改/usr/local/tomcat/webapps/demo/insert.jsp文件的数据库连接密码为自己设置的密码;

不过关闭重启tomcat之后,tomcatservice重建了,修改也就失效了,vim命令也没有了,所以这种方法不行。

删除并重建tomcat  service,

kubectl delete -f myweb-rc.yaml
kubectl create -f myweb-rc.yaml

再次访问xxxxx:30001/demo,可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值