zoukankan      html  css  js  c++  java
  • 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)
     
  • 相关阅读:
    POJ 2236 Wireless Network(并查集)
    POJ 2010 Moo University
    POJ 3614 Sunscreen(贪心,区间单点匹配)
    POJ 2184 Cow Exhibition(背包)
    POJ 1631 Bridging signals(LIS的等价表述)
    POJ 3181 Dollar Dayz(递推,两个long long)
    POJ 3046 Ant Counting(递推,和号优化)
    POJ 3280 Cheapest Palindrome(区间dp)
    POJ 3616 Milking Time(dp)
    POJ 2385 Apple Catching(01背包)
  • 原文地址:https://www.cnblogs.com/douyi/p/11954910.html
Copyright © 2011-2022 走看看