VituralBox從零搭建基於CentOS 7(64位)的Kubernetes+docker集羣

  • 1. 下載CentOS 7官方minimal鏡像
  • 2. 安裝VituralBox(Windows 10 64位)
  • 3. 安裝Git for windows(Windows 10 64位)
  • 4. 安裝VituralBox虛擬機並建立CentOS 7 Master主機
  • 5. 設置CentOS 7的網絡環境和ssh鏈接(開放22端口)
  • 6. 構建CentOS虛擬機局域網
  • 7. Master主節點配置kubernetes+docker
  • 8. Node子節點配置kubernetes+docker
  • 附錄

    


 

1. 下載CentOS 7官方minimal鏡像


 

2. 安裝VituralBox(Windows 10 64位)


 

3. 安裝Git for windows(Windows 10 64位)

       官方下載地址:https://git-scm.com/download/winhtml

       下載完成後,直接安裝,下一步下一步就行了,主要是用於接上虛擬機輸入命令,複製粘貼命令和文本很是方便,安裝完成後,點擊Git Bash能夠看到如下界面:node

       


 

4.安裝VituralBox虛擬機並建立CentOS 7 Master主機

      VituralBox是「下一步,下一步」的「傻瓜式安裝」,這裏注意下,安裝位置不要選擇C盤,由於會佔用硬盤大量的空間,致使系統很是卡頓!linux

       安裝完成後,在CMD界面輸入「ifconfig」,查看虛擬網卡是否存在,存在就是裝好了:git

      

      打開VirtualBox主界面,以下圖所示,點擊新建:docker

      

     新建虛擬機,切記保存位置不能選擇C盤!,名字爲「CentOS7-Master」,點擊「下一步」windows

     

    內存至少分配3.5GB,下一步,建立虛擬硬盤centos

     

    建立虛擬硬盤->VDI->動態分配->硬盤大小至少分配20G以上,建立api

     ​    ​     ​            ​ 

     這時咱們看到已經建立成功了,點擊「啓動」,載入下載好的CentOS7 minimal鏡像ISO文件bash

    

      點擊設置->顯示→顯示控制器更改成「VBoxVGA」(這一步是爲了防止,啓動後沒法顯示鼠標,就沒法安裝CentOS7 了)網絡

      

      設置完成後,選擇「Install CentOS 7」,這裏咱們選擇「英語」(美國),下一步,點擊「安裝位置」,選擇分配的硬盤空間,下一步,設置用戶名和密碼,安裝完成,點擊重啓

     ​  ​                                             

​   ​  

 


5. 設置CentOS 7的網絡環境和ssh鏈接(開放22端口)

     輸入用戶名root,root密碼,進入CentOS 7,這時咱們輸入「ping www.baidu.com」發現網卡沒法訪問外網,這時,輸入命令

sudo  vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

    # 找到 ONBOOT,把 no 改爲 yes ,保存退出

​  ​  

重啓虛擬機後,執行命令,yum環境能夠使用了

sudo yum install net-tools

sudo vi /etc/ssh/sshd_config

  # 把 Port 22 前面的#註釋去掉

firewall-cmd --permanent --zone=public --add-port=22/tcp  # 輸入命令,把22端口添加到防火牆外

關閉虛擬機,右鍵點擊設置->網絡,進行以下配置,主機ip填寫windows下虛擬機網卡的ip,子ip填寫CentOS裏面enp0s3網卡的ip地址,端口填寫22

​     

啓動虛擬機,打開Git  Bash輸入命令,發現能夠鏈接進去虛擬機:

ssh root@192.168.56.1 # ssh root@虛擬網卡ip地址


6.構建CentOS虛擬機局域網

點擊管理->主機網絡管理器,新建2個和前面的虛擬網卡統一網段的ip網卡

把以前配置好的虛擬機,右鍵選擇「克隆」

克隆完成後,咱們發現多出來了兩個新的虛擬機

  

  點擊「管理」->"全局設定"->"網絡"->新建一個網段爲「10.0.3.0/24」的網段,配置以下圖

好了,這裏咱們須要分別設置3個虛擬機的網絡,打開主機 Master的設置-網絡,網卡1和網卡2配置以下: 

​   

Node1的網卡一、網卡2配置:

 ​ 

Node2的網卡一、網卡2配置:

​   

 分別開啓3臺虛擬機,輸入」ifconfig「查詢到3個ip地址

 

  根據對應的ip地址從新填寫各虛擬機網卡1的」端口轉發「規則

最後利用git bash 用ssh命令登錄3臺虛擬機,而後兩兩相互ping,若是能ping通,證實局域網CentOS環境已經搭建完成,咱們正式進入k8s+docker的環境搭建


7. Master主節點配置kubernetes+docker

目前咱們的3臺虛擬機以下:

  • Master主節點(ip:10.0.3.4)
  • Node1子節點(ip:10.0.3.5)
  • Node2子節點(ip:10.0.3.6)

輸入如下命令關閉防火牆:

setenforce 0

systemctl stop firewalld & systemctl disable firewalld

sed -i '/^SELINUX=/cSELINUX=disabled' /etc/sysconfig/selinux

swapoff -a

firewall-cmd --reload

yum安裝k8s和etcd:

yum -y install etcd kubernetes

 

修改配置以下,保存退出

 

sudo vi /etc/etcd/etcd.conf

 

 

#[Member] 
#ETCD_CORS="" 
ETCD_DATA_DIR="/var/lib/etcd/default.etcd" 
#ETCD_WAL_DIR="" 
#ETCD_LISTEN_PEER_URLS="http://localhost:2380" 
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" 
#ETCD_MAX_SNAPSHOTS="5" 
#ETCD_MAX_WALS="5" 
ETCD_NAME=default 
#ETCD_SNAPSHOT_COUNT="100000" 
#ETCD_HEARTBEAT_INTERVAL="100" 
#ETCD_ELECTION_TIMEOUT="1000" 
#ETCD_QUOTA_BACKEND_BYTES="0" 
#ETCD_MAX_REQUEST_BYTES="1572864" 
#ETCD_GRPC_KEEPALIVE_MIN_TIME="5s" 
#ETCD_GRPC_KEEPALIVE_INTERVAL="2h0m0s" 
#ETCD_GRPC_KEEPALIVE_TIMEOUT="20s" 
# 
#[Clustering] 
#ETCD_INITIAL_ADVERTISE_PEER_URLS="http://localhost:2380" 
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379" 
#ETCD_DISCOVERY="" 
#ETCD_DISCOVERY_FALLBACK="proxy" 
#ETCD_DISCOVERY_PROXY="" 
#ETCD_DISCOVERY_SRV="" 
#ETCD_INITIAL_CLUSTER="default=http://localhost:2380" 
#ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" 
#ETCD_INITIAL_CLUSTER_STATE="new" 
#ETCD_STRICT_RECONFIG_CHECK="true" 
#ETCD_ENABLE_V2="true" 
# 
#[Proxy] 
#ETCD_PROXY="off" 
#ETCD_PROXY_FAILURE_WAIT="5000" 
#ETCD_PROXY_REFRESH_INTERVAL="30000" 
#ETCD_PROXY_DIAL_TIMEOUT="1000" 
#ETCD_PROXY_WRITE_TIMEOUT="5000" 
#ETCD_PROXY_READ_TIMEOUT="0" 
# 
#[Security] 
#ETCD_CERT_FILE="" 
#ETCD_KEY_FILE="" 
#ETCD_CLIENT_CERT_AUTH="false" 
#ETCD_TRUSTED_CA_FILE="" 
#ETCD_AUTO_TLS="false" 
#ETCD_PEER_CERT_FILE="" 
#ETCD_PEER_KEY_FILE="" 
#ETCD_PEER_CLIENT_CERT_AUTH="false" 
#ETCD_PEER_TRUSTED_CA_FILE="" 
#ETCD_PEER_AUTO_TLS="false" 
# 
#[Logging] 
#ETCD_DEBUG="false" 
#ETCD_LOG_PACKAGE_LEVELS="" 
#ETCD_LOG_OUTPUT="default" 
# 
#[Unsafe] 
#ETCD_FORCE_NEW_CLUSTER="false" 
# 
#[Version] 
#ETCD_VERSION="false" 
#ETCD_AUTO_COMPACTION_RETENTION="0" 
# 
#[Profiling] 
#ETCD_ENABLE_PPROF="false" 
#ETCD_METRICS="basic" 
# 
#[Auth] 
#ETCD_AUTH_TOKEN="simple"

 

修改配置以下,保存退出
sudo vi /etc/kubernetes/apiserver

### 
# kubernetes system config 
# 
# The following values are used to configure the kube-apiserver 
# 
 
# The address on the local server to listen to. 
KUBE_API_ADDRESS="--address=0.0.0.0" 
 
# The port on the local server to listen on. 
KUBE_API_PORT="--port=8080" 
 
# Port minions listen on 
KUBELET_PORT="--kubelet-port=10250" 
 
# Comma separated list of nodes in the etcd cluster 
KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379" 
 
# Address range to use for services 
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" 
 
# default admission control policies 
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,L
imitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota" 
 
# Add your own! 
KUBE_API_ARGS="" 
  • 輸入命令:
for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do 
systemctl restart $SERVICES 
systemctl enable $SERVICES 
systemctl status $SERVICES 
done 

  • 10.0.2.7換成本身主機節點虛擬機的ip

 

etcdctl -C http://10.0.3.4:2379 set /atomic.io/network/config '{
"Network":"10.1.0.0/16"}'

 


8. Node子節點配置kubernetes+docker

setenforce 0

systemctl stop firewalld & systemctl disable firewalld 

sed -i '/^SELINUX=/cSELINUX=disabled' /etc/sysconfig/selinux

swapoff -a

firewall-cmd --reload

#安裝k8s

yum -y install flannel kubernetes
sudo vi /etc/kubernetes/config

    修改配置以下,保存退出 , 這裏填寫的ip是主節點的ip,不是本身的ip!

KUBE_MASTER="--master=http://10.0.3.4:8080" 
KUBE_ETCD_SERVERS="--etcd_servers=http://10.0.3.4:2379"
sudo vi /etc/kubernetes/kubelet

   修改配置以下,保存退出 ,

KUBELET_ADDRESS="--address=0.0.0.0" 
 
# The port for the info server to serve on 
KUBELET_PORT="--port=10250" 
 
# You may leave this blank to use the actual hostname 
KUBELET_HOSTNAME="--hostname-override=10.0.3.6" 
 
# location of the api-server 
KUBELET_API_SERVER="--api-servers=http://10.0.3.4:8080" 
 
# pod infrastructure container 
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.
com/rhel7/pod-infrastructure:latest" 
 
# Add your own! 
KUBELET_ARGS=""

 輸入命令

ip link delete docker0  
sudo vi /etc/sysconfig/flanneld

   修改配置以下,保存退出 ,

# Flanneld configuration options 
 
# etcd url location. Point this to the server where etcd runs 
FLANNEL_ETCD_ENDPOINTS="http://10.0.3.4:2379" 
 
# etcd config key. This is the configuration key that flannel queries 
# For address range assignment 
FLANNEL_ETCD_PREFIX="/atomic.io/network" 
 
# Any additional options that you want to pass 
#FLANNEL_OPTIONS=""

   輸入命令:

for SERVICES in flanneld kube-proxy kubelet docker; do 
systemctl restart $SERVICES 
systemctl enable $SERVICES 
systemctl status $SERVICES 
done

最後一步,在主機節點(10.0.3.4)輸入命令:

kubectl get nodes

大功告成!若是這篇文章能夠幫到你,就資助下小弟吧

​                 

附錄

三篇參考博客:

相關文章
相關標籤/搜索