kubernetes

参考教程:https://www.kubernetes.org.cn/3808.html

先删除旧版本docker

Get Docker CE for CentOS

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

创建mysql-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql
  labels:
    name: mysql
spec:
  replicas: 1
  selector:
    app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"
View Code

yaml的格式非常严格,冒号后面必须加空格,不能使用tab键制表符,必须使用空格

创建rc

kubectl create -f mysql-rc.yaml

查看rc

kubectl get rc

查看pod

kubectl get pods

 删除rc

kubectl delete -f  mysql-rc.yaml

 查看节点

kubectl get nodes

 

查看node详细信息

kubectl describe node 127.0.0.1

 

创建一个webapp-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: webapp
spec:
  replicas: 2
  template:
    metadata: 
      name: webapp
      labels:
        app: webapp
    spec:
      containers:
      - name: webapp
        image: tomcat
        ports:
        - containerPort: 8080
View Code

运行

kubectl create -f webapp-rc.yaml

这里一开始运行3个master,默认master不运行pod

这里看到4/2是因为之前开启了node4节点,两个pod都运行在node4上,之后关闭了node4节点

 

 让master也参与运行pod

kubectl taint nodes --all node-role.kubernetes.io/master-

 

可以看到之前分配在node4上的pod已经运行在node1和node3上了

获取Pod的IP地址

kubectl get pods -l app=webapp -o yaml | grep podIP

可以直接通过这两个Pod的IP地址和端口访问Tomcat服务

curl 10.244.1.2:8080

 

创建service

kubectl expose rc webapp

查看

kubectl get service

在dashboard查看

 

访问10.99.120.114:8080

除了使用expose命令,还可以通过配置文件定义service

apiVersion: v1
kind: Service
metadata:
  name: webapp
spec:
  ports:
  - port: 8081
    targetPort: 8080
  selector:
    app: webapp
View Code

 将service的端口映射到物理机已供集群外部访问

apiVersion: v1
kind: Service
metadata:
  name: webapp
spec:
  type: NodePort
  ports:
  - port: 8081
    targetPort: 8080
    nodePort: 8081
  selector:
    app: webapp
View Code

创建一个redis-master

apiVersion: v1
kind: Pod
metadata:
  name: redis-master
  labels:
    app: redis-master
spec:
  containers:
  - name: redis-master
    image: redis
    ports:
    - containerPort: 6379
  hostNetWork: true
View Code

启动后查看

使用客户端连接测试

 

 

 DNS

Kubernetes 从 1.3 版本起, DNS 是内置的服务,通过插件管理器 集群插件 自动被启动。

查看所有服务

kubectl get svc --namespace=kube-system

可以看到dns

创建 busybox.yaml 文件,内容如下:

apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - image: busybox
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
    name: busybox
  restartPolicy: Always
View Code

然后,用该文件创建一个 Pod:

kubectl create -f busybox.yaml

等这个Pod运行后执行如下 nslookup 查询:

kubectl exec -ti busybox -- nslookup kubernetes.default

 

新增一个redis服务

apiVersion: v1
kind: Service
metadata:
  name: redis-master
  labels:
    name: redis-master
spec:
  type: NodePort
  ports:
  - port: 6380
    targetPort: 6379
    nodePort: 30002
  selector:
    app: redis-master
View Code

创建服务

 

点击名称可以看到详细

 使用客户端连接测试

 

查看服务

kubectl get services

通过服务名查找

kubectl  exec busybox -- nslookup redis-master

 

查看context

kubectl config view

在浏览器打开https://192.168.112.186:6443/

打开https://192.168.112.186:6443/api/v1 即可看到API接口

posted @ 2018-05-21 22:04  uptothesky  阅读(219)  评论(0编辑  收藏  举报