kubernetes-单机实验(入门)
阅读原文时间:2023年07月09日阅读:2

一、安装kubernetes

实验环境:

centos7.0(建议使用7.5版本)

实验机器IP:192.168.1.4

安装方式:yum安装

需求环境:Tomcat+Mysql

1:关闭防火墙

[root@k8s ~]# iptables -F

[root@k8s ~]# setenforce 0

2:由于使用centos7.0版本,安装包较为旧,update包

[root@k8s ~]# yum -y update

3:安装etcd和kubernetes(yum安装的kubernetes包比较老1.5版本,如果需要最新的去官网下载安装包)

[root@k8s ~]# yum -y install etcd kubernetes

4:修改配置文件

[root@k8s ~]# vim /etc/sysconfig/docker

修改下面内容:

--selinux-enabled更改为--selinux-enabled=false ##关闭selinux

--insecure-registry gcr.io ##添加到里面不让Https传输

修改完成内容如下:

# /etc/sysconfig/docker

# Modify these options if you want to change the way the docker daemon runs

OPTIONS='--selinux-enabled=false --insecure-registry gcr.io --log-driver=journald --signature-verification=false'

if [ -z "${DOCKER_CERT_PATH}" ]; then

DOCKER_CERT_PATH=/etc/docker

fi

[root@k8s ~]# vim /etc/kubernetes/apiserver

修改下面内容:

--admission_control参数中的ServiceAccount删除

修改完成内容如下:

# default admission control policies

KUBE_ADMISSION_CONTROL="--admission control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

5:准备工作

[root@k8s ~]# yum install python-rhsm-certificates

如果提示:python-rhsm-certificates-1.19.10-1.el7_4.x86_64 被已安装的 subscription-manager-rhsm-certificates-1.24.13-3.el7.centos.x86_64 取代,无须任何处理

解决方法:

[root@k8s ~]# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm

[root@k8s ~]# rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm |cpio -iv --to-stdout ./etc/rhsm/ca/redhat- uep.pem > /etc/rhsm/ca/redhat-uep.pem

6:配置docker加速器

[root@k8s ~]# vim /etc/docker/daemon.json

{

"registry-mirrors": ["https://dhq9bx4f.mirror.aliyuncs.com"]

}

7:启动所有服务

[root@k8s ~]# for s in etcd docker kube-apiserver kube-controller-manager kube-scheduler kubelet kube-proxy; do systemctl start $s; done

二、创建Mysql的RC和SVC

1:创建RC文件

[root@k8s ~]# vim mysql-rc.yaml

apiVersion: v1

kind: ReplicationController ##副本控制器RC

metadata:

name: mysql ##RC的名称,全局唯一

spec:

replicas: 1 ##Pod副本的期待数量

selector:

app: mysql ##符合目标的Pod拥有此标签

template: ##根据此模板创建Pod的副本(实例)

metadata:

labels:

app: mysql ##Pod副本拥有的标签,对应RC的Selector

spec:

containers: ##Pod内容器的定义部分

- name: mysql ##容器的名称

image: mysql:5.6 ##容器对应的Docker image

ports:

- containerPort: 3306 ##容器应用监听的端口号

env: ##注入容器内的环境变量

- name: MYSQL_ROOT_PASSWORD

value: "123456" ##数据库的密码

2:拉取mysql的docker镜像(此步骤可省略,kubernetes会自动去拉取,这里做演示)

[root@k8s ~]# docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest

[root@k8s ~]# docker pull mysql:5.6

3:创建启动rc

[root@k8s ~]# kubectl create -f mysql-rc.yaml

replicationcontroller "mysql" created

4:查询是否有mysql-rc

[root@k8s ~]# kubectl get rc

NAME DESIRED CURRENT READY AGE

mysql 1 1 1 34m

5:查询pod的状态

[root@k8s ~]# kubectl get pod

NAME READY STATUS RESTARTS AGE

mysql-19h65 1/1 Running 0 34m

6:创建svc文件

[root@k8s ~]# vim mysql-svc.yaml

apiVersion: v1

kind: Service

metadata:

name: mysql

spec:

ports:

- port: 3306

selector:

app: mysql

7:创建启动svc

[root@k8s ~]# kubectl create -f mysql-svc.yaml

service "mysql" created

8:查询svc运行状态

[root@k8s ~]# kubectl get svc

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE

kubernetes 10.254.0.1 443/TCP 33m

mysql 10.254.27.65 3306/TCP 13s

三、创建Tomcat的RC和SVC

1:创建RC文件

[root@k8s ~]# vim tomcat-rc.yaml

apiVersion: v1

kind: ReplicationController ##副本控制器RC

metadata:

name: tomcat ##RC的名称,全局唯一

spec:

replicas: 1 ##Pod副本的期待数量

selector:

app: tomcat ##符合目标的Pod拥有此标签

template: ##根据此模板创建Pod的副本(实例)

metadata:

labels:

app: tomcat ##Pod副本拥有的标签,对应RC的Selector

spec:

containers: ##Pod内容器的定义部分

- name: tomcat ##容器的名称

image: kubeguide/tomcat-app:v1 ##容器对应的Docker image

ports:

- containerPort: 8080 ##容器应用监听的端口号

env:

- name: MYSQL_SERVICE_HOST

value: 'mysql_service_ip'

- name: MYSQL_SERVICE_PORT

value: '3306'

2:创建启动rc

[root@k8s ~]# kubectl create -f tomcat-rc.yaml

replicationcontroller "tomcat" created

3:查询是否有tomcat-rc

[root@k8s ~]# kubectl get rc

NAME DESIRED CURRENT READY AGE

mysql 1 1 1 1h

tomcat 1 1 1 14m

4:查询pod的状态

[root@k8s ~]# kubectl get pod

NAME READY STATUS RESTARTS AGE

mysql-19h65 1/1 Running 0 1h

tomcat-p9x0h 1/1 Running 0 14m

5:创建svc文件

[root@k8s ~]# vim tomcat-svc.yaml

kind: Service

metadata:

name: tomcat

spec:

type: NodePort

ports:

- port: 8080

nodePort: 30001 ##设置映射端口,本机IP加此port供外部访问,该端口号不能小于30000

selector:

app: tomcat

6:创建启动svc

[root@k8s ~]# kubectl create -f tomcat-svc.yaml

service "tomcat" created

7:查询svc运行状态

[root@k8s ~]# kubectl get svc

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE

kubernetes 10.254.0.1 443/TCP 1h

mysql 10.254.27.65 3306/TCP 1h

tomcat 10.254.250.150 8080:30001/TCP 10m

四、测试

1:用curl命令

[root@k8s ~]# crul 10.254.250.150:8080

[root@k8s ~]# crul 192.168.1.4:30001

2:浏览器访问,添加防火墙规则

[root@k8s ~]# iptables -P FORWARD ACCEPT

输入IP:PORT(注意该端口是映射的30001端口,不是8080)