k8s的部署方式:html
kubernetes部署圖node
關閉Firewalld和iptables,時間同步。linux
sudo systemctl stop firewalldgit
sudo systemctl disable firewalld`github
因爲docker會大量生成iptables規則,因此要確保如下這兩個配置是1docker
cat /proc/sys/net/bridge/bridge-nf-call-ip6tablescentos
cat /proc/sys/net/bridge/bridge-nf-call-iptablesapi
### 網絡配置文件 cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 vm.swappiness=0 EOF modprobe br_netfilter #執行該命令 若是不執行就會在應用k8s.conf時出現加載錯誤 sysctl -p /etc/sysctl.d/k8s.conf #應用配置文件
修改host和hostname服務器
由於集羣節點的名稱會和機器的hostname一致,因此host的解釋名稱統一修改和hostname一致。具體爲:網絡
/etc/hosts文件爲(全部節點都是):
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.33.30 master.k8s.com 192.168.33.31 node1.k8s.com 192.168.33.32 node2.k8s.com 127.0.0.1 node2.k8s.com
/etc/hostname爲(master節點爲例)
在master和nodes的機器上都要按照如下步驟,安裝kubelet、kubeadm、docker-ce和kubectl(k8s客戶端工具),具體步驟爲:
指定docker-ce的yum倉庫源
`cd /etc/yum.repos.d/
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo`
指定kubernetes的yum倉庫:
`cd /etc/yum.repos.d/
Sudo vi kubernetes.repo`
kubernetes.repo的配置以下:
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
而後下載yum-key.gpg和rpm-package-key.gpg
sudo wget https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
sudo wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
導入:
sudo rpm --import yum-key.gpg
sudo rpm --import rpm-package-key.gpg
運行yum repolist 看下docker和kubernetes是否有包了。
運行安裝命令。分別安裝docker-ce,kubelet,kubeadm和kubectl(kubernetes命令行客戶端)
sudo yum install docker-ce kubelet kubeadm kubectl(默認安裝最新版的)
如要安裝指定版本,能夠:
sudo yum list kubelet --showduplicates //查看全部可用版本
sudo yum install kubelet-1.13.4-0 kubectl-1.13.4-0 kubeadm-1.13.4-0 kubernetes-cni-0.6.0-0
在啓動kubelet前,看看安裝了哪些文件
早期的k8s版本不容許打開swap,會直接start會報錯,咱們先啓動一下看看
因爲kubelet相關配置還沒完成,如今不能直接啓動。先中止,設置開機啓動先。
sudo systemctl stop kubelet
sudo systemctl enable kubelet
sudo systemctl enable docker
修改kubelet配置文件的額外參數:
sudo vi /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
kubelet設置好後,咱們能夠用kubeamd init命令拉取相關的docker組件鏡像,並啓動對應的pods。
sudo kubeadm init --kubernetes-version=v1.13.4 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap
相關參數意思:
--apiserver-advertise-address:API服務器將通知它正在監聽的IP地址,監聽的地址爲「0.0.0.0」,即本機全部IP地址。
--apiserver-bind-port:API服務器綁定到的端口。(默認:6443)
--cert-dir:加載證書的相關目錄(默認:/etc/kubernetes/pki)
--config:配置文件的路徑。警告:配置文件目前屬於實驗性,還不穩定。
--ignore-preflight-errors:將錯誤顯示爲警告的檢查列表進行忽略。例如:「IsPrivilegedUser,Swp」。Value 'all'忽略全部檢查中的錯誤。
--pod-network-cidr:指定pod網絡的IP地址範圍。若是設置,控制平面將爲每一個節點自動分配CIDRs。
--service-cidr:爲service VIPs使用不一樣的IP地址。(默認「10.96.0.0/12」)
第一次運行,由於要在拉取下載相關的鏡像,因此可能有點慢,能夠預先下載好相關的docker鏡像。v.13.4版本的docker鏡像下載地址,個人百度雲盤連接:https://pan.baidu.com/s/1osvMLNALXBY8FXeN7z3H5Q 提取碼:chsq
sudo docker save k8s.gcr.io/kube-apiserver > kubelet-apiserver.tar 導出鏡像
sudo docker load < kubelet-apiserver.tar 導入鏡像
須要的鏡像有:
k8s.gcr.io/kube-proxy v1.13.4 fadcc5d2b066 4 weeks ago 80.3MB k8s.gcr.io/kube-scheduler v1.13.4 dd862b749309 4 weeks ago 79.6MB k8s.gcr.io/kube-apiserver v1.13.4 fc3801f0fc54 4 weeks ago 181MB k8s.gcr.io/kube-controller-manager v1.13.4 40a817357014 4 weeks ago 146MB k8s.gcr.io/coredns 1.2.6 f59dcacceff4 4 months ago 40MB k8s.gcr.io/etcd 3.2.24 3cab8e1b9802 6 months ago 220MB k8s.gcr.io/pause 3.1 da86e6ba6ca1 15 months ago 742kB
初始化完成後,會有如下信息
建立kube目錄,添加kubectl配置,建議用普通用戶運行如下三個命令:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
如沒執行以上三個命令,直接查看nodes信息,會報錯:
The connection to the server localhost:8080 was refused - did you specify the right host or port?
運行後,再次查看nodes信息(kubectl get nodes),會如今master的狀態信息是noready,這個是由於缺乏附件flannel
添加網絡附件flannel
訪問flannel的github:https://github.com/coreos/flannel,此處也有介紹怎麼安裝
若是Kubernetes版本是1.7以上執行這行命令便可,在線自動獲取部署清單,而後基於此清單下載鏡像啓動並部署
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
咱們在期間用這些命令看看flannel附件服務是否下載和啓動好了:
docker images
kubectl get pods --all-namespaces 查看全部名稱空間的pods,能夠看看flannel的pods是否已經running了
kubectl get ns 查看有哪些命名空間,其中系統級別的pods都在kube-system中
至此咱們的master就算已經配置完畢了。。。
nodes機器上都要按照第二大步驟(配置好yum源和kubelet),安裝kubelet、kubectl、kubeadm和docker-ce
運行命令:
sudo kubeadm join 10.0.2.15:6443 --token 9le8zj.k1y8fvr09b4h4pww --discovery-token-ca-cert-hash sha256:10187a814644dab00611161c3079fdeeef579b999c6c506c33ff55dd9bb032fa --ignore-preflight-errors=Swap
把節點nodes加入,等nodes的機器拉取完鏡像後,這個節點就加入完畢了。能夠用這個命令查看更多pods的擴展信息:
kubectl get pods -n kube-system -o wide
咱們在master節點上運行:kubectl get nodes ,能夠看到節點已經成功加入
至此,咱們簡單的k8s集羣已經部署完畢。。。
sudo netstat -ntlp | grep LISTEN 查看監聽的端口
kubectl get pods -n kube-system -o wide 查看pods的更多擴展信息
kubectl get ns 獲取全部的命名空間
sudo yum list kubelet --showduplicates //查看全部yum包的可用版本
kubectl get pods --all-namespaces 查看全部命名空間下的pods