Kubernetes安裝配置與服務部署

1. 系統環境

操作系統:
CentOS 7
KV存儲系統,用於集羣的共享配置和服務發現(類似ZooKeeper):
etcd 3.1.0
容器管理工具:
Kubernetes 1.5.2
應用容器引擎
Docker 1.12.6
網絡規劃工具,統一分配集羣Docker容器的虛擬IP,並實現服務之間通信:
Flannel 0.7.0

服務器 服務
master apiserver, controller-manager, scheduler
node flannel, docker, kubelet, kube-proxy
etcd etcd

2. 基本環境配置

  • 設置hosts
    192.168.89.133 master
    192.168.89.133 etcd
    192.168.89.134 node1
    PS:由於在虛擬機上面部署,所以只啓動兩臺服務器,並且etcd和master運行在同一個物理機器上
  • 關閉防火牆
    systemctl stop firewalld.service
    systemctl disable firewalld.service
    PS:第一個命令關閉防火牆,第二個命令使開機不啓動防火牆(永久關閉)
  • 永久關閉SELinux
    修改/etc/selinux/config
    SELINUX=disabled
  • 重啓機器
    reboot

3. 安裝和配置etcd

3.1 安裝etcd

yum install etcd -y

3.2 配置etcd

修改/etc/etcd/etcd.conf中的部分屬性
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://etcd:2379"
PS:其中etcd表示etcd服務器主機名

3.3 運行etcd

systemctl start etcd
systemctl enable etcd

3.4 配置etcd內網信息

etcdctl -C 192.168.89.133:2379 set /atomic.io/network/config '{"Network":"172.17.0.0/16"}'
PS:其中網絡號172.17.0.0/16與docker中的docker0網絡一致(若不一致,可修改docker0網絡或者配置上述etcd網絡);atomic.io與下面的Flannel配置中的FLANNEL_ETCD_PREFIX對應

4.master服務器上安裝服務

4.1 安裝kubernetes-master

yum install kubernetes-master

4.2 配置apiserver

修改/etc/kubernetes/apiserver
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_ETCD_SERVERS="--etcd-servers=http://etcd:2379"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota"
PS:測試時需要把KUBE_ADMISSION_CONTROL中的SecurityContextDenyServiceAccount去掉,這是權限相關的

4.3 配置全局配置文件

修改/etc/kubernetes/config
KUBE_MASTER="--master=http://master:8080"

4.4 設置開機啓動並啓動master服務

systemctl enable kube-apiserver kube-scheduler kube-controller-manager
systemctl start kube-apiserver kube-scheduler kube-controller-manager

4.5 測試master服務

訪問http://master:8080會返回json描述信息,如下圖:
外部主機訪問master節點的apiServer端口

5.node1工作節點上安裝服務

5.1 安裝docker

yum install docker

5.2 安裝flannel

yum install flannel

5.3 配置flannel

修改/etc/sysconfig/flanneld
FLANNEL_ETCD_ENDPOINTS="http://etcd:2379"
FLANNEL_ETCD_PREFIX="/atomic.io/network"
PS:其中atomic.io與上面etcd中的Network對應

5.4 安裝kubernetes-node

yum install kubernetes-node

5.5 配置全局配置文件

修改/etc/kubernetes/config
KUBE_MASTER="--master=http://master:8080"

5.6 配置kubelet組件

修改/etc/kubernetes/kubelet
KUBELET_HOSTNAME="--hostname-override=node1"
KUBELET_API_SERVER="--api-servers=http://master:8080"

5.7 配置開機啓動並啓動服務

systemctl enable kubelet kube-proxy
systemctl start kubelet kube-proxy

6.測試集羣是否工作

在master節點運行
kubectl get nodes
若正常工作,可獲取工作節點信息及運行狀態爲Ready,如下圖:
master節點獲取工作節點信息

7.發佈nginx服務

7.1 創建pod : nginx-pod.yaml

kubectl create -f nginx-pod.yaml

apiVersion: v1
kind: Pod
metadata:
 name: nginx-pod
 labels:
  name: nginx-pod
spec:
 containers:
 - name: nginx
   image: nginx
   ports:
   - containerPort: 80

7.2 查看pod的狀態

kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-pod 0/1 ContainerCreating 0 6s
等10分鐘再試
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 13m
PS:這裏經常會因爲網絡問題失敗,可以先使用docker手動pull鏡像後再使用kubectl來create pod,如果還是不行,就delete pod之後再create pod,實在不行,可以重啓機器試試,還是不行,那就是配置出問題了

7.3 創建replicationController : nginx-rc.yaml

kubectl create -f nginx-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
 name: nginx-rc
spec:
 replicas: 1
 selector:
  name: nginx-pod
 template:
  metadata:
   labels:
    name: nginx-pod
  spec:
   containers:
   - name: nginx-pod
     image: nginx
     ports:
     - containerPort: 80

7.4 查看ReplicationController狀況

rc狀態

7.5 創建service : nginx-service.yaml

kubectl create -f nginx-service.yaml

apiVersion: v1
kind: Service
metadata:
 name: nginx-service
spec:
 type: NodePort
 ports:
 - port: 80
   nodePort: 30001
 selector:
  name: nginx-pod

7.6 查看service狀態

service狀態
PS:其中Kubernetes服務爲Kube系統自帶服務,無需理會

7.7 測試發佈的nginx服務

使用其他機器的瀏覽器訪問node1機器的30001端口
外部接口訪問容器服務

8. 相關文章

Kubernetes 1.5部署安裝dashboard
Kubernetes中的nodePort,targetPort,port的區別和意義

9. 參考

西樓:https://my.oschina.net/zhougui/blog/824165
督門提酒的博客:
http://blog.csdn.net/u010884123/article/details/56485246?locationNum=10&fps=1

10. yaml源碼

https://github.com/HeYongbiao/kube_nginx

11. 學習資料

kubernetes指南:http://pan.baidu.com/s/1gfKHDAF 密碼:who6

發佈了40 篇原創文章 · 獲贊 13 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章