之前我們學習了很多的概念及簡單的使用官網提供的頁面玩了玩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
好本章我們就講到這裏。