按照此教程安裝docker https://blog.csdn.net/u010606397/article/details/89816295
注意:docker-base必須已經安裝好docker、修改了docker鏡像倉庫、關閉防火牆
配置一臺k8s基礎虛擬機模板
複製一個k8s-base虛擬機出來。複製——>爲所有網卡生成MAC地址——>完全複製。步驟圖如下:
點擊虛擬機設置,修改內存、cpu數量、網絡
修改內存爲2048 MB
k8s要求節點的cpu至少爲2個
爲了能讓3個節點能相互通信,需要把網絡設置爲橋接。只設置一張網卡即可,不要設置多張網卡
啓動虛擬機
由於kubernetes集羣節點的名稱不能相同,所以我們必須修centos的hostname
vim /etc/hostname
改爲 k8sbase 保存退出
查看網卡信息
ip addr
我虛擬機的網卡名字爲enp0s3,你們的可能不是這個名字
修改網卡配置
vim /etc/sysconfig/network-scripts/ifcfg-enp0s3 #後面enp0s3是網卡名字,你們的可能不是這個名字
我們在window主機上輸入 ipconfig /all 查看宿主機網絡配置
先註釋掉#BOOTPROTO=dhcp、#ONBOOT=no。然後填入
#使用靜態地址
BOOTPROTO=static
#開機啓動網卡
ONBOOT=yes
#最後3位數跟宿主機不同即可
IPADDR=192.168.1.200
#子網掩碼
NETMASK=255.255.255.0
#使用宿主機網關
GATEWAY=192.168.1.1
#使用宿主機dns
DNS1=116.116.116.116
禁用SELINUX
vim /etc/selinux/config
SELINUX=disabled
關閉swap分區
vi /etc/fstab
註釋掉 #/dev/mapper/centos-swap swap XXXXX
使用阿里雲kubernetes鏡像源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
查看倉庫是否設置成功 yum repolist
關閉k8sbase
shutdown -h now
新建k8s01虛擬機
配置好k8s-base後,我們用這個虛擬機作爲基礎,複製出3臺虛擬機。
首先複製出k8s01虛擬機,步驟跟上面複製出k8s-base虛擬機是一樣的,主要步驟如下:
複製——>爲所有網卡生成MAC地址——>完全複製
修改hostname爲k8s01
vim /etc/hostname
修改ip IPADDR=192.168.XX.XX #也可以是與宿主機在同一網段的其他ip
vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
重啓虛擬機
reboot -h now
由於改了host,可能要刪除xshell中的連接,關閉xshell,然後新建連接才能連接上虛擬機。查看可安裝的程序包
yum list | grep kubeadm
安裝kubelet-1.14.1-0、kubectl-1.14.1-0、kubeadm-1.14.1-0
yum install -y kubelet-1.14.1-0 kubectl-1.14.1-0 kubeadm-1.14.1-0
kubeadm version
啓動、開機啓動kubelet
systemctl start kubelet
systemctl enable kubelet
kubernetes所需組件在k8s.gcr.io組織下,但大陸是無法下載k8s.gcr.io組織下的鏡像滴。
解決辦法是從其他組織下載kubernetes組件的鏡像,然後通過docker tag在本地生成k8s.gcr.io/XXX鏡像。這樣虛擬機本地就有k8s.gcr.io組織的鏡像了。
拉取kubernetes主節點所需組件鏡像,版本也是1.14.1
docker pull mirrorgooglecontainers/kube-apiserver-amd64:v1.14.1
docker pull mirrorgooglecontainers/kube-controller-manager-amd64:v1.14.1
docker pull mirrorgooglecontainers/kube-scheduler-amd64:v1.14.1
docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.14.1
docker pull mirrorgooglecontainers/etcd-amd64:3.3.10
docker pull mirrorgooglecontainers/pause-amd64:3.1
docker pull coredns/coredns:1.3.1
通過docker tag 在本地生成k8s.gcr.io組織的鏡像
docker tag mirrorgooglecontainers/kube-apiserver-amd64:v1.14.1 k8s.gcr.io/kube-apiserver:v1.14.1
docker tag mirrorgooglecontainers/kube-controller-manager-amd64:v1.14.1 k8s.gcr.io/kube-controller-manager:v1.14.1
docker tag mirrorgooglecontainers/kube-scheduler-amd64:v1.14.1 k8s.gcr.io/kube-scheduler:v1.14.1
docker tag mirrorgooglecontainers/kube-proxy-amd64:v1.14.1 k8s.gcr.io/kube-proxy:v1.14.1
docker tag mirrorgooglecontainers/etcd-amd64:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag mirrorgooglecontainers/pause-amd64:3.1 k8s.gcr.io/pause:3.1
docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
# 有時候會報iptables轉發問題,iptables配置
vim /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
使配置生效
sudo sysctl -p
初始化主節點,10.244.0.0/16是flannel網絡插件的網段
kubeadm init --apiserver-advertise-address=主機ip --kubernetes-version=v1.14.1 --pod-network-cidr=10.244.0.0/16
如圖所示代表初始化主節點成功。拷貝kubeadm join 這段命令出來,加入新節點時需要用到
kubeadm join 192.168.1.201:6443 --token m8oXXXXXvp5c \
--discovery-token-ca-cert-hash sha256:XXXX
###########################################################
#若在init的過程中卡住,另開一個終端,運行 如下命令查看日誌
journalctl -f -u kubelet.service
#再次執行kubeadm init 之前要先重置節點狀態,恢復到kubeadm init之前的狀態
kubeadm reset
# token有效期是24小時,24小時候要新加入節點,可重新創建token
kubeadm token create
# 查看token
kubeadm token list
####################################################################
配置KUBECONFIG環境變量,重啓後任然可以使用kubectl 命令
export KUBECONFIG=/etc/kubernetes/admin.conf
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/bashrc
安裝flannel網路插件。
https://raw.githubusercontent.com可能會被牆,可在本地主機上下載kube-flannel.yml,再拷貝到虛擬機中。
curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml
查看主節點運行情況,等一會兒,網絡插件就起來了。如果沒配KUBECONFIG環境變量,執行此命令會報錯
kubectl get pods -n kube-system -o wide
主節點就安裝成功了。
新建k8s02虛擬機
同樣通過k8s-base複製出k8s02虛擬機。
複製——>爲所有網卡生成MAC地址——>完全複製
修改hostname爲k8s02
vim /etc/hostname
修改ip IPADDR=192.168.XXX #也可以是與宿主機在同一網段的其他ip
vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
# 有時候會報iptables轉發問題,iptables配置
vim /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
使配置生效
sudo sysctl -p
重啓虛擬機
reboot -h now
安裝kubelet-1.14.1-0、kubectl-1.14.1-0、kubeadm-1.14.1-0
yum install -y kubelet-1.14.1-0 kubectl-1.14.1-0 kubeadm-1.14.1-0
kubeadm version
啓動、開機啓動kubelet
systemctl start kubelet
systemctl enable kubelet
從節點所需的鏡像比較少
docker pull mirrorgooglecontainers/pause-amd64:3.1
docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.14.1
docker tag mirrorgooglecontainers/pause-amd64:3.1 k8s.gcr.io/pause:3.1
docker tag mirrorgooglecontainers/kube-proxy-amd64:v1.14.1 k8s.gcr.io/kube-proxy:v1.14.1
執行在初始化主節點時得到的命令,將節點加入到集羣中
kubeadm join 初始化k8s-01時的命令:6443 --token m8oXXXXXvp5c \
--discovery-token-ca-cert-hash sha256:XXXX
在主節點執行 kubectl get nodes 即可查看集羣中的所有節點
主節點忘記改hostname了,還是k8sbase,不管了,就醬。
##############################################################
# 刪除節點需要執行以下兩條命令
#在主節點上執行
kubectl delete node k8s03
# k8s03節點上重置狀態
kubeadm reset
##############################################################
k8s03節點的操作跟k8s02是一樣的,記得要改hostname、ip