安裝3節點kubernetes集羣

按照此教程安裝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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章