k8s应用01-----入门实例

安装一个单机版的K8S

1、关闭防火墙firewalld
2、安装etcd和kubernetes
yum install -y etcd kubernetes(会自动安装docker)
3、修改配置文件
修改docker配置文docker
修改为
OPTIONS='--selinux-enabled=false --insecure-registry gcr.io'
修改kubernetes配置文件
vi /etc/kubernetes/apiserver
KUBE_ADMISSION_CONTROL参数中删除ServiceAccount
4、按顺序启动服务
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 status etcd
systemctl status docker
systemctl status kube-apiserver
systemctl status kube-controller-manager
systemctl status kube-scheduler
systemctl status kubelet
systemctl status kube-proxy

一个单机版本的kuberneted就搭建完毕了

启动一个mysql服务

1、为MySQL服务创建一个RC定义文件:mysql-rc.yaml。RC(Replication Controller)定义文件中有3个关键信息:

  • 目标Pod的定义。
  • 目标Pod需要运行的副本数量(Replicas)
  • 要监控的目标Pod的标签(Label),Label是Service和Pod之间的纽带
[root@router ljy]# more 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: hub.c.163.com/library/mysql              #容器对应的Docker image
        ports: 
        - containerPort: 3306                          #容器应用监听的端口号
        env:                                           #注入容器内的环境变量
        - name: MYSQL_ROOT_PASSWORD 
          value: "123456"

2、创建好mysql-rc.yaml后,在master节点使用kubectl命令将它发布到k8s集群中。

kubectl create -f mysql-rc.yaml

 使用kubectl命令查看刚刚创建的RC:

 使用下面命令查看Pod的创建情况:

 

3、创建关联service

我们创建一个与之关联的Kubernetes Service-MySQL的定义文件:mysql-svc.yaml

apiVersion: v1                      
kind: Service                              #表明是K8s Service
metadata: 
  name: mysql                              #Service的全局唯一名称
spec:
  ports:
    - port: 3306                           #Service提供服务的端口号
  selector:                                #Service对应的Pod拥有这里定义的标签
    app: mysql

复制代码

运行kubectl命令,创建service

kubectl create -f mysql-svc.yaml

查看刚刚创建的service

kubectl get svc

 

 注意到MySQL服务被分配到了一个值为10.254.46.214的Cluster IP地址,这是一个虚地址,随后,k8s集群中其他新创建的Pod就可以通过Service的Cluster IP+端口号3306来连接和访问它了

启动一个web服务

1、先拉取一个镜像

docker pull kubeguide/tomcat-app:v1

 2、创建对应的RC文件myweb-rc.yaml,内容如下

apiVersion: v1
kind: ReplicationController
metadata:
  name: myweb
spec:
  replicas: 5                                       #Pod副本期待数量为5
  selector:
    app: myweb
  template:
    metadata:
      labels:
        app: myweb
    spec:
      containers:
      - name: myweb
        image: docker.io/kubeguide/tomcat-app:v1
        ports: 
        - containerPort: 8080
        env:
        - name: MYSQL_SERVICE_HOST
          value: "mysql"
        - name: MYSQL_SERVICE_PORT
          value: "3306"

 然后通过kubectl create命令完成RC的创建和验证工作:

kubectl create -f myweb-rc.yaml
kubectl get rc
kubectl get pods

 

 

 在RC中声明了5个Pod期待的数量,现在都已经建立并运行起来了

 3、创建对应的Service

 创建对应的Service,以下是完整的yaml定义文件(myweb-svc.yaml)

apiVersion: v1
kind: Service
metadata: 
  name: myweb
spec:
  type: NodePort
  ports:
    - port: 8080
      nodePort: 30001
  selector:
    app: myweb

 type=NodePort和nodePort=30001的两个属性,表明此Service开启了NodePort方式的外网访问模式。

运行kubectl create命令进行创建:

kubectl create  -f myweb-svc.yaml

 查看一下

kubectl get services

 

 

posted @ 2019-10-12 09:10  jayonlau  阅读(1065)  评论(0编辑  收藏  举报