centos7.9+k8s+mysql部署亲测

实验环境 

        VSphere虚拟化环境 centos7.9操作系统1U1核4G内存50G硬盘

        k8s版本:Kubernetes v1.5.2

        mysql版本:mysql:5.7.18

centos7.9操作系统的安装

        在VSphere虚拟化环境下新建虚拟机,相应设置如下

       1U1核4G内存50G硬盘

 打开虚拟机,连接centos7.9镜像,开始安装

 选择安装方式(个人习惯),个人建议最好安装上开发工具包(未测试对k8s有无影响只是单纯吃过没装开发工具后续要用到的亏)

 设置静态网络,可以访问Internet。(安装k8s为yum安装直接使用网络yum源,DNS我取用常见114.114.114.114,也可以使用8.8.8.8;网关必须配置。)

 以上设置完成后即可开始安装了,安装完成测试网络是否可以访问Internet;

网络访问正常,下面我们就准备开始安装k8s。如无法访问网络,检查相应IP设置,和网关路由设置是否满足虚拟机访问网络。

k8s单机版部署

关闭防火墙:

systemctl stop firewalld
systemctl  disable firewalld

关闭SELinux:

setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

关闭swap :

swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab

更新yum源:

yum clean all&&yum update

配置kubenetes

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[Kubernetes]
name=kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
        http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装etcd 和kubernetes以下操作会自动安装docker

yum install -y etcd kubernetes

安装成功后修改两个配置文件docker和apiserver

Docker配置文件 /etc/sysconfig/docker,其中的OPTIONS的内容设置为:
 
$ vim /etc/sysconfig/docker
 
OPTIONS='--selinux-enabled=false --insecure-registry gcr.io'
Kubernetes修改apiserver的配置文件,在/etc/kubernetes/apiserver中
$ vim /etc/kubernetes/apiserver
 KUBE_ADMISSION_CONTROL="--admission_control=NamespaceLifecycle,NamespaceExists,
 LimitRanger,SecurityContextDeny,ResourceQuota"
去掉 ServiceAccount 选项。否则会在往后的pod创建中,会出现类似以下的错误:

 Error from server: error when creating "mysql-rc.yaml": Pod "mysql" is forbidden:
 no API token found for service account default/default, 
 retry after the token is automatically created and added to the service account

按照顺序启动服务

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
 
#设置开机启动
 
systemctl enable etcd
systemctl enable docker
systemctl enable kube-apiserver
systemctl enable kube-controller-manager
systemctl enable kube-scheduler
systemctl enable kubelet
systemctl enable kube-proxy

验证安装成功

[root@k8s ~]# ps -ef | grep kube
kube       8579      1  0 07:24 ?        00:00:06 /usr/bin/kube-apiserver --logtostderr=true --v=0 --etcd-servers=http://127.0.0.1:2379 --insecure-bind-address=127.0.0.1 --allow-privileged=false --service-cluster-ip-range=10.254.0.0/16 --admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota
kube       8596      1  1 07:25 ?        00:00:11 /usr/bin/kube-controller-manager --logtostderr=true --v=0 --master=http://127.0.0.1:8080
kube       8622      1  0 07:25 ?        00:00:01 /usr/bin/kube-scheduler --logtostderr=true --v=0 --master=http://127.0.0.1:8080
root       8641      1  1 07:25 ?        00:00:17 /usr/bin/kubelet --logtostderr=true --v=0 --api-servers=http://127.0.0.1:8080 --address=127.0.0.1 --hostname-override=127.0.0.1 --allow-privileged=false --pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest
root       8717      1  1 07:25 ?        00:00:08 /usr/bin/kube-proxy --logtostderr=true --v=0 --master=http://127.0.0.1:8080
root      18353   8168  0 07:40 pts/0    00:00:00 grep --color=auto kube
[root@k8s ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"269f928217957e7126dc87e6adfa82242bfe5b1e", GitTreeState:"clean", BuildDate:"2017-07-03T15:31:10Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"269f928217957e7126dc87e6adfa82242bfe5b1e", GitTreeState:"clean", BuildDate:"2017-07-03T15:31:10Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}
[root@k8s ~]# etcdctl cluster-health
member 8e9e05c52164694d is healthy: got healthy result from http://localhost:2379
cluster is healthy

安装k8s单机版成功,下面部署mysql容器

k8s-mysql部署

创建mysql容器

1.拉取mysql服务镜像

[root@k8s ~]# sudo docker pull mysql
或
[root@k8s ~]# docker pull hub.c.163.com/library/mysql:latest

2.创建rc定义文件mysql-rc.yaml(mysql的一些基本信息)

[root@k8s k8s]# vi 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: hub.c.163.com/library/mysql
        ports: 
        - containerPort: 3306   #容器mysql的端口号
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"       #mysql的root密码
#文件内容来源:https://blog.csdn.net/jcmj123456/article/details/116504294,

使用编写的rc文件创建容器mysql

[root@k8s ~]# kubectl create -f mysql-rc.yaml #-f 参数后跟绝对路径指定到文件所在

查看是否创建容器mysql成功:

[root@k8s ~]# kubectl get pods
NAME          READY     STATUS              RESTARTS   AGE
mysql-bgff2   0/1       ContainerCreating   0          17s

检查创建中遇到的问题:

[root@k8s ~]# kubectl describe pod mysql-bgff2
ailedSync       Error syncing pod, skipping: failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"registry.access.redhat.com/rhel7/pod-infrastructure:latest\""
​
  51s   11s     3       {kubelet 127.0.0.1}             Warning FailedSync      Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for registry.access.redhat.com/rhel7/pod-infrastructure:latest, this may be because there are no credentials on this request.  details: (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory)"
#遇到上述报错即缺少redhat-uep.pem文件,上传相应文件到对应目录即可(/etc/rhsm/ca/redhat-uep.pem)
找了好多资源,找的下载包,分享在我的网盘里链接:
https://pan.baidu.com/s/1hxxD2q9j-3doEj6o67goSg?pwd=s15g 

解决上述问题后,删除容器mysql重新创建:

[root@k8s ~]# kubectl delete -f mysql-rc.yaml  
replicationcontroller "mysql" deleted
[root@k8s ~]# kubectl create -f mysql-rc.yaml
replicationcontroller "mysql" created
[root@k8s k8s]# kubectl get pods
NAME          READY     STATUS    RESTARTS   AGE
mysql-17v77   1/1       Running   0          12m
状态为Running即为正常运行,表示k8s-mysql创建成功。

创建与之关联的k8s服务 mysql-svc.yaml

[root@k8s k8s]# vi mysql-svc.yaml
apiVersion: v1
kind: Service
metadata: 
  name: mysql
spec:
  ports:
    - port: 3306
  selector:
    app: mysql
#文件内容来源:https://blog.csdn.net/jcmj123456/article/details/116504294

执行创建服务命令,并查看创建的服务

[root@k8s k8s]# kubectl create -f mysql-svc.yaml
service "mysql" created
[root@k8s k8s]# kubectl get svc
NAME         CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
kubernetes   10.254.0.1      <none>        443/TCP    59m
mysql        10.254.68.114   <none>        3306/TCP   28s

总结,这部分创建服务和mysql的yaml文件属于非持久化的mysql。即崩溃数据就消失。作为练手学习可以,非生产环境。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值