kubernetes

參考教程:https://www.kubernetes.org.cn/3808.htmlhtml

先刪除舊版本dockernode

Get Docker CE for CentOSmysql

$ 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.yamllinux

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鍵製表符,必須使用空格web

建立rcredis

kubectl create -f mysql-rc.yaml

查看rcsql

kubectl get rc

查看poddocker

kubectl get pods

 刪除rccentos

kubectl delete -f  mysql-rc.yaml

 查看節點api

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接口

相關文章
相關標籤/搜索