才接觸 kubernetes 的時候覺得太復雜了毯焕,但是反反復復裝了好多遍之后發(fā)現(xiàn)其實也就那么回事。希望下面的內(nèi)容能夠幫助大家盡早度過入門時的陣痛期。
環(huán)境準備
centos 7.2(本文所有步驟都在 疼訊云 進行了驗證)
安裝
0.切換 yum 源 (可選)
# 沒有 wget 的話需要
# yum install -y wget
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
1. 安裝 kubernetes
yum install -y etc kubernetes
2. 修改配置
Docker配置文件 /etc/sysconfig/docker纳猫,其中的OPTIONS的內(nèi)容設置為:
$ vim /etc/sysconfig/docker
OPTIONS='--selinux-enabled=false --insecure-registry gcr.io'
Kubernetes apiserver的配置文件 /etc/kubernetes/apiserver婆咸,有如下:
$ vim /etc/kubernetes/apiserver
KUBE_ADMISSION_CONTROL="--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"
去掉 ServiceAccount 選項
3. 啟動服務
systemctl start etc
systemctl start docker
systemctl start kube-apiserver.service
systemctl start kube-controller-manager.service
systemctl start kube-scheduler.service
systemctl start kubelet.service
systemctl start kube-proxy.service
檢查 kubernetes 是否啟動:
ps -ef | grep kube
簡單例子
創(chuàng)建 pod
創(chuàng)建 httpd-dev.yaml 文件,并寫入 以下 內(nèi)容:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: http
spec:
replicas: 3
template:
metadata:
labels:
run: http
spec:
containers:
- name: http
image: http
ports:
- containerPort: 80
執(zhí)行以下命令芜辕,啟動 pod:
kubectl apply -f httpd-dev.yaml
kubectl get pod -o wide
可以看到:
我們啟動了 3 個 pod 來運行 htppd 鏡像尚骄。并為這 3 個 pod 分配了 ip,可以再 k8s 中的容器和節(jié)點進行訪問侵续,如下圖:
創(chuàng)建服務
新建 httpd-svc.yml倔丈,并寫入以下內(nèi)容:
apiVersion: v1
kind: Service
metadata:
name: httpd-svc
spec:
selector:
run: http
ports:
- protocol: TCP
port: 8888
targetPort: 80
創(chuàng)建 service:
kubectl apply -f httpd-svc.yaml
查看 service:
kubectl get service
可以看見 httpd-svc 分配到了一個 cluster-ip,我們可以通過這個ip進行訪問:
curl 10.254.114.93:8888
可以通過以下命令查看 service 的詳情:
kubectl describe service httpd-svc
可能遇見的問題:
pod 一直處于ContainerCreating狀態(tài)問題状蜗⌒栉澹可以通過下面的命令查看詳情:
kubectl describe pod
發(fā)現(xiàn)會報這個錯誤:
failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for
registry.access.redhat.com/rhel7/pod-infrastructure:latest, this may be because there are no credentials
on this request. details: (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file
or directory)"
發(fā)現(xiàn)這是一個鏈接文件,指向 rhsm诗舰。
直接用 yum 下載相關組件:
yum -y install *rhsm*
查看是否有 /etc/rhsm/ca/redhat-uep.pem 文件警儒,一般應該是有了,不過如果沒有也不要害怕眶根,我們可以簡單的偽造一個空文件:
touch /etc/rhsm/ca/redhat-uep.pem
再 kubectl describe pod 一下蜀铲,看pod的狀態(tài),應該好了属百。如果還是沒有好的話可以 kubectl delete pod httpd 记劝,刪掉后重新新建 pod。
小結(jié)
總之遇到問題不要怕族扰,多嘗試厌丑,多去網(wǎng)上找資料,肯定會有辦法的渔呵。資料收集能力也是程序員很重要的一種能力怒竿,可千萬不能因為怕麻煩就放棄啊。