準備工作
參考:
https://juejin.im/post/5d7fb46d5188253264365dcf
兩臺虛擬機 centos7.8版本
虛擬機初始化
- 無法連接網絡問題 修改下面的文件 boot將no改成yes
/etc/sysconfig/network-scripts/ifcfg-ens33
- 安裝網絡相關命令
yum install net-tools
- 虛擬機設置靜態ip,同時可以訪問網絡 https://blog.csdn.net/weiyongle1996/article/details/75050738
安裝步驟
- 修改host文件
vim /etc/hostname
一臺叫:tom
一臺叫:jack
vim /etc/hosts
192.168.233.132 tom
192.168.233.1 jack
修改後兩臺的配置
#tom
[root@tom ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.233.132 tom
192.168.233.1 jack
[root@tom ~]# cat /etc/hostname
tom
#jack
[root@jack ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.233.132 tom
192.168.233.1 jack
[root@jack ~]# cat /etc/hostname
jack
- 配置防火牆
[root@tom ~]# systemctl stop firewalld
[root@tom ~]# systemctl disable firewalld
\3. 禁用SELinux
vi /etc/selinux/config
#設置SELINUX=disabled. 重啓機器
#查看狀態
[root@tom ~]# sestatus
SELinux status: disabled
- 禁用交換分區
swapoff -a # 臨時
- 同步時間
yum install ntpdate -y
ntpdate ntp.api.bz
- 安裝docker
參考:https://www.runoob.com/docker/centos-docker-install.html
設置倉庫,在新主機上首次安裝 Docker Engine-Community 之前,需要設置 Docker 倉庫。之後,可以從倉庫安裝和更新 Docker。
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
設置國內源地址
阿里雲源地址
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
列出可安裝得版本
yum list docker-ce --showduplicates | sort -r
安裝指定版本
yum install docker-ce-18.09.9-3.el7 docker-ce-cli-18.09.9-3.el7 containerd.io
啓動docker
systemctl enable docker
systemctl start docker
安裝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=1
repo_gpgcheck=1
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kube*
EOF
安裝
36 yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
37 systemctl enable kubelet && systemctl start kubelet
修改網絡配置
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
以上所有操作在worker 和master 節點上都需要執行
初始化master
生成初始化文件
kubeadm config print init-defaults > kubeadm-init.yaml
該文件有兩處需要修改:
- 將
advertiseAddress: 1.2.3.4
修改爲本機地址 - 將
imageRepository: k8s.gcr.io
修改爲imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
下載鏡像
kubeadm config images pull --config kubeadm-init.yaml
執行初始化
kubeadm init --config kubeadm-init.yaml
執行完畢後會輸出:
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.233.132:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:ae867e99b70f13173649a21cedc0a6cd2609186e263a51bd7dbee10e8cbdf9d3
最後兩行保存下來是worker節點加入所需要執行的命令.
接下來配置環境, 讓當前用戶可以執行kubectl命令:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
測試一下: 此處的NotReady
是因爲網絡還沒配置.
[root@tom ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
tom NotReady master 92s v1.18.4
配置網絡
安裝wget -y表示所有問題都設置yes
yum -y install wget
下載描述文件
[root@tom ~]# wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml
[root@tom ~]# cat kubeadm-init.yaml | grep serviceSubnet:
serviceSubnet: 10.96.0.0/12
vi calico.yaml
, 將192.168.0.0/16
修改爲10.96.0.0/12
需要注意的是, calico.yaml中的IP和kubeadm-init.yaml需要保持一致, 要麼初始化前修改kubeadm-init.yaml, 要麼初始化後修改calico.yaml.
執行
kubectl apply -f calico.yaml
初始化網絡.
此時查看node信息, master的狀態已經是Ready
了.
等個兩三分鐘才變化
[root@tom ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
tom Ready master 9m40s v1.18.4