Kubernetes七-服務器本地安裝運行Kubernetes環境並通過yaml文件創建應用


之前我們學習了很多的概念及簡單的使用官網提供的頁面玩了玩k8S的基本內容,那本章我們來在自己的服務器環境中,實踐安裝搭建一個kubernetes環境。

由於時間問題,繼續盜圖,懶得自己畫
在這裏插入圖片描述

1.安裝前準備

關閉防火牆、設置selinux,千篇一律的設置,沒勁,這裏不做詳細介紹。

2.安裝etcd和K8S

yum install -y etcd kubernetes

3.修改配置文件

3.1docker配置文件

vi /etc/sysconfig/docker

修改如下內容:

OPTIONS='--selinux-enabled=false  --log-driver=journald --signature-verification=false --insecure-registry gcr.io'

3.2 K8S apiserver配置文件

刪除ServiceAccount參數。

vim /etc/kubernetes/apiserver

在這裏插入圖片描述

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

5.單機版環境安裝完畢,構建一個應用到Kubernetes中

5.1我們來創建一個RC定義的yaml文件mysql-rc.yaml

vim mysql-rc.yaml

編寫入如下內容:

apiVersion: v1
kind: ReplicationController
metadata:
  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: "skyfans"

5.2 將ta發佈到Kubernetes中。

kubectl create -f mysql-rc.yaml

在這裏插入圖片描述

5.2.1 查看創建的RC的情況

kubectl get rc

在這裏插入圖片描述

5.2.2 查看pod創建情況

kubectl get pods

在這裏插入圖片描述
什麼情況??沒有資源內容??我們明明創建了但是爲什麼沒有呢??
仔細分析下:
在這裏插入圖片描述
通過截圖我們可以看到,CURRENT數量爲0.

擴展姿勢:參數解釋
DESIRED: 期望部署副本數
CURRENT: 當前部署副本數
UP-TO-DATE:最新部署副本數(圖中無顯示)
AVAILBLE: 運行中的副本數(圖中無顯示)
AGE: 已經運行的時間

就是說我們期望的是1,但是當前部署的副本數爲0。爲什麼呢??

查詢了下,發現了是個K8S的坑,我們安裝完畢後,缺失了部分配置導致。

5.3 遇到坑1解決方法

5.3.1 執行如下命令

openssl genrsa -out /tmp/serviceaccount.key 2048

5.3.2 編輯apiserver配置文件

vim /etc/kubernetes/apiserver

找到編輯

KUBE_API_ARGS="--service_account_key_file=/tmp/serviceaccount.key"

5.3.3 編輯controller-manager配置文件:

vim /etc/kubernetes/controller-manager

找到編輯

KUBE_CONTROLLER_MANAGER_ARGS="--service_account_private_key_file=/tmp/serviceaccount.key"

5.3.4 重啓服務

 systemctl restart kube-apiserver
 systemctl restart kube-controller-manager

5.3.5 刪除原來的創建的RC

 kubectl delete -f mysql-rc.yaml

5.3.6 重新創建

 kubectl create -f mysql-rc.yaml

5.3.7 驗證

kubectl get rc

在這裏插入圖片描述
哦了,已調整好了。

5.4遇到的坑2

好,我們在來看下pod的狀態

kubectl get pods

在這裏插入圖片描述
狀態是在創建,等待了幾分鐘後在查看
在這裏插入圖片描述
依然在創建,怎麼可能??查看爲啥呢?

kubectl describe pod mysql-714lt

在這裏插入圖片描述
在這裏插入圖片描述

看到registry.access.redhat.com/rhel7/pod-infrastructure:latest感覺很奇怪,我設置的倉庫是gcr.io,爲什麼去拉取這個鏡像,懷疑是不是什麼沒有安裝好。嘗試運行docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest,提示redhat-ca.crt: no such file or directory。

ls查看改文件是個軟連接,鏈接目標是/etc/rhsm
在這裏插入圖片描述
查看沒有rhsm相關內容。

嘗試安裝rhsm

yum install *rhsm*

再次查看狀態,已經OK了。

kubectl describe pod mysql-714lt

好本章我們就講到這裏。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章