一、kubernetes的安裝方式
1.kubeadm:kubeadm 可以運行在物理機、虛擬機以及雲主機,並且可以與chef或puppet配合可以完成自動化部署安裝
2.minikube:minikube 由 CoreOS 提供在單機上構件 kubernetes 集羣
3.docker:docker images 由 kubernetes 在發行版本中提供 docker images,並通過 docker images 運行 kubernetes 組件。所需要的鏡像包在kubernetes-server-linux-amd64.tar.gz裏
4.hyperkube:hyperkube images 由 Google 推出將 kubernetes 各組件以容器方式運行。容器可以有(docker/rkt等)。使用 hyperkube images 需要提前配置 kubelet 組件。最終通過kubelet將kubenetes部署各組件。這種安裝方法的好處是:只要系統可運行容器,就可以通過hyperkube images 來運行kubernetes組件
二、使用kubeadm安裝kubernetes
1.各節點信息
主機名 | IP | 節點 |
---|---|---|
centos1 | 192.168.1.150 | 主節點 |
centos2 | 192.168.1.151 | 從節點 |
centos3 | 192.168.1.152 | 從節點 |
以下操作所有節點都要執行
2.前提
1)主節點給4G內存、雙cpu,設置每個節點兩兩之間無密碼登錄ssh
ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
#其餘兩臺也進行同樣操作,實現兩兩無密碼登錄
2)關閉selinux,時間必須同步
sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/sysconfig/selinux
3)關閉firewall或iptables
systemctl stop firewalld
systemctl disable firewalld
4)配置hosts文件
vim /etc/hosts
192.168.1.150 centos1
192.168.1.151 centos2
192.168.1.152 centos3
scp /etc/hosts [email protected]:/etc/hosts
scp /etc/hosts [email protected]:/etc/hosts
3.安裝依賴
yum install -y yum-utils device-mapper-persistent-data lvm2
4.設置docker鏡像源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
5.安裝docker
yum install -y --setopt=obsoletes=0 docker-ce-17.03.0.ce-1.el7.centos docker-ce-selinux-17.03.0.ce-1.el7.centos
6.設置docker開機啓動
systemctl enable docker && systemctl start docker
7.安裝kubeadm
1)配置國內yum源
vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
2)重建yum源
yum -y install epel-release
yum clean all
yum makecache
3)安裝
yum -y install kubeadm-1.11.0-0 kubelet-1.11.0-0 kubernetes-cni-0.6.0
4)啓動kubeadm並設置開機啓動
systemctl enable kubelet && systemctl start kubelet
8.編寫下拉鏡像的腳本
vim docker.sh
#docker.sh
#!/bin/bash
images=(kube-proxy-amd64:v1.11.0 kube-scheduler-amd64:v1.11.0 kube-controller-manager-amd64:v1.11.0 kube-apiserver-amd64:v1.11.0 etcd-amd64:3.2.18 coredns:1.1.3 pause-amd64:3.1 kubernetes-dashboard-amd64:v1.8.3 k8s-dns-sidecar-amd64:1.14.9 k8s-dns-kube-dns-amd64:1.14.9 k8s-dns-dnsmasq-nanny-amd64:1.14.9 )
for imageName in ${images[@]} ; do
docker pull keveon/$imageName
docker tag keveon/$imageName k8s.gcr.io/$imageName
docker rmi keveon/$imageName
done
docker tag da86e6ba6ca1 k8s.gcr.io/pause:3.1
9.執行腳本下拉鏡像
chmod 777 docker.sh
./docker.sh
10.關閉swap分區
swapoff -a #臨時關閉
vim /etc/fstab #永久關閉,註釋swap那一行
11.配置轉發參數
vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness=0
sysctl -p /etc/sysctl.d/k8s.conf
三、正式安裝(以下都在主節點上操作)
1.安裝
kubeadm init --kubernetes-version=v1.11.0 --pod-network-cidr=10.244.0.0/16
完成後顯示如下:
2.執行上圖中的命令
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
3.安裝flanel網絡
kubectl apply -f \
https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
如果顯示這個信息,就執行下面這個命令
export KUBECONFIG=/etc/kubernetes/admin.conf
4.查看節點狀態
kubectl get nodes
四、添加節點(node上操作)
1.執行上面node加入的命令
kubeadm join 192.168.1.150:6443 --token dkr6gl.niujtokn81q83277 --discovery-token-ca-cert-hash sha256:598932123108b51d4f320c75d1321e4d4dcd28d1b4306398b1f85a9b2c0e4a0c
完成顯示如下
2.在master上查看
#全部節點顯示ready,成功
五、安裝web管理界面kubernetes-dashboard
1.下載官方yaml文件
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.0/src/deploy/recommended/kubernetes-dashboard.yaml
2.修改文件內容,做端口映射
vim kubernetes-dashboard.yaml
3.創建serviceaccount 用於登陸dashboard
kubectl create serviceaccount dashboard-admin -n kube-system
4.創建clusterrolebinding
kubectl create clusterrolebinding cluster-dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
5.創建容器
sed -i 's#k8s.gcr.io#gcrxio#g' kubernetes-dashboard.yaml
kubectl apply -f kubernetes-dashboard.yaml
6.查看容器狀態
kubectl get pods -n kube-system
7.查看dashbord被分配到哪個節點上
kubectl get pods --all-namespaces -o wide
8.查看映射到宿主機的端口
kubectl get svc -n kube-system
9.使用以下腳本查看令牌
kubectl describe secret/$(kubectl get secret -nkube-system |grep admin|awk '{print $1}') -nkube-system
10.火狐瀏覽器登錄 https://IP:端口