参考文档:表示感谢
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,可以了。