• kubernetes-单机实验(入门)


    一、安装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 ~]# 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 <none> 443/TCP 33m
    mysql 10.254.27.65 <none> 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 <none> 443/TCP 1h
    mysql 10.254.27.65 <none> 3306/TCP 1h
    tomcat 10.254.250.150 <nodes> 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)
     
  • 相关阅读:
    golang中os/user包用法
    golang中os包用法
    与table有关的布局
    jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version
    canvas里调用getImageData的报security的问题
    CSS样式覆盖规则
    windows7文件夹怎样默认图片大图显示?
    Jboss,Tomcat 远程调试配置
    IE(IE6/IE7/IE8)支持HTML5标签
    JS 继承(类式 与 原型式)
  • 原文地址:https://www.cnblogs.com/douyi/p/11954910.html
Copyright © 2020-2023  润新知