安裝Kubernetes V1.16.2


安裝Kubernetes V1.16.2

准備硬件環境

利用VirtualBox准備兩台Linux虛擬機(K8S集群2台起步),系統用CentOS(我用的是的CentOS-7-x86_64-DVD-1810),虛擬機配置是2顆CPU和2G內存(K8S最低要求的配置),網絡使用橋接網卡方式並使用靜態IP:

  • 192.168.0.4 K8S集群-Master(CentOS-1)
  • 192.168.0.7 K8S集群-Node1(CentOS-2)

將虛擬機系統安裝好,配置好網絡設置。
Alt text

安裝Kubernetes(兩台都要操作)

安裝前准備(兩台都要操作)

在兩台虛擬機上都進行以下操作:
關閉防火牆:

systemctl disable firewalld
systemctl stop firewalld

修改服務器名稱:

//將192.168.0.4的服務器名稱修改為master
hostnamectl set-hostname master  

//將192.168.0.7的服務器名稱修改為node1
hostnamectl set-hostname node1  

進行時間校時(用aliyun的NTP服務器):

yum install -y ntp
ntpdate ntp1.aliyun.com

安裝軟件(兩台都要安裝)

安裝常用軟件:

yum update

yum install wget

yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

安裝Docker:

cd /etc/yum.repos.d/

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

yum -y install docker-ce

安裝kubelet kubeadm kubectl (需要VPN):

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kube*
EOF

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

安裝后設置(兩台都要安裝)

關閉SELINUX:

setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

設置iptables:

cd /etc/sysctl.d/

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system

啟動Docker:

systemctl start docker
#開機啟動Docker
systemctl enable docker

關閉SWAP:

vi /etc/fstab
注釋swap分區
# /dev/mapper/centos-swap swap                    swap    defaults        0 0

#保存退出vi后執行
swapoff -a

啟動kubelet:

#開機啟動kubelet
systemctl enable kubelet

下載Master節點需要的鏡像(在Master上執行)

因為k8s.gcr.io訪問不了,手動下載docker鏡像,Master需要下載的鏡像如下:

  • k8s.gcr.io/kube-apiserver:v1.16.2
  • k8s.gcr.io/kube-controller-manager:v1.16.2
  • k8s.gcr.io/kube-scheduler:v1.16.2
  • k8s.gcr.io/kube-proxy:v1.16.2
  • k8s.gcr.io/pause:3.1
  • k8s.gcr.io/etcd:3.3.15-0
  • k8s.gcr.io/coredns:1.6.2
  • quay.io/coreos/flannel:v0.11.0-amd64
docker pull bluersw/kube-apiserver:v1.16.2 #替代docker pull k8s.gcr.io/kube-apiserver:v1.16.2
docker tag bluersw/kube-apiserver:v1.16.2 k8s.gcr.io/kube-apiserver:v1.16.2

docker pull bluersw/kube-controller-manager:v1.16.2 #替代docker pull k8s.gcr.io/kube-controller-manager:v1.16.2
docker tag bluersw/kube-controller-manager:v1.16.2 k8s.gcr.io/kube-controller-manager:v1.16.2

docker pull bluersw/kube-scheduler:v1.16.2 #替代docker pull k8s.gcr.io/kube-scheduler:v1.16.2
docker tag bluersw/kube-scheduler:v1.16.2 k8s.gcr.io/kube-scheduler:v1.16.2

docker pull bluersw/kube-proxy:v1.16.2 #替代docker pull k8s.gcr.io/kube-proxy:v1.16.2
docker tag bluersw/kube-proxy:v1.16.2 k8s.gcr.io/kube-proxy:v1.16.2

docker pull bluersw/pause:3.1 #替代docker pull k8s.gcr.io/pause:3.1
docker tag bluersw/pause:3.1 k8s.gcr.io/pause:3.1

docker pull bluersw/etcd:3.3.15-0 #替代docker pull k8s.gcr.io/etcd:3.3.15-0
docker tag bluersw/etcd:3.3.15-0 k8s.gcr.io/etcd:3.3.15-0

docker pull bluersw/coredns:1.6.2 #替代docker pull k8s.gcr.io/coredns:1.6.2
docker tag bluersw/coredns:1.6.2 k8s.gcr.io/coredns:1.6.2

docker pull bluersw/flannel:v0.11.0-amd64 #替代 docker pull quay.io/coreos/flannel:v0.11.0-amd64
docker tag bluersw/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64

Master節點初始化(在Master上執行)

執行kubeadm init初始化命令:

kubeadm init  --kubernetes-version=v1.16.2 --apiserver-advertise-address=192.168.0.4 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.1.0.0/16
  • --kubernetes-version=v1.16.2 : 加上該參數后啟動相關鏡像(剛才下載的那一堆)
  • --pod-network-cidr=10.244.0.0/16 :(Pod 中間網絡通訊我們用flannel,flannel要求是10.244.0.0/16,這個IP段就是Pod的IP段)
  • --service-cidr=10.1.0.0/16 : Service(服務)網段(和微服務架構有關)

在初始化結果輸出里找到類似下面這段信息:

kubeadm join 192.168.0.4:6443 --token 4tylf5.av0mhvxmg7gorwfz \
    --discovery-token-ca-cert-hash sha256:e67d5f759dd248a81b2e79cd8f9250b44c41d4102ef433d0f0e26268b90a10e8

后面Node1節點加入集群會用到。

初始化成功后執行:

#把密鑰配置加載到自己的環境變量里
export KUBECONFIG=/etc/kubernetes/admin.conf

#每次啟動自動加載$HOME/.kube/config下的密鑰配置文件(K8S自動行為)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

下載Node1節點需要的鏡像(在Node1上執行)

因為k8s.gcr.io訪問不了,手動下載docker鏡像,Node1需要下載的鏡像如下:

  • k8s.gcr.io/pause:3.1
  • k8s.gcr.io/kube-proxy:v1.16.2
  • quay.io/coreos/flannel:v0.11.0-amd64
docker pull bluersw/kube-proxy:v1.16.2 #替代docker pull k8s.gcr.io/kube-proxy:v1.16.2
docker tag bluersw/kube-proxy:v1.16.2 k8s.gcr.io/kube-proxy:v1.16.2

docker pull bluersw/pause:3.1 #替代docker pull k8s.gcr.io/pause:3.1
docker tag bluersw/pause:3.1 k8s.gcr.io/pause:3.1

docker pull bluersw/flannel:v0.11.0-amd64 #替代 docker pull quay.io/coreos/flannel:v0.11.0-amd64
docker tag bluersw/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64

Node1服務器加入集群網絡(在Node1上執行)

加入集群網絡:

kubeadm join 192.168.0.4:6443 --token 4tylf5.av0mhvxmg7gorwfz \
    --discovery-token-ca-cert-hash sha256:e67d5f759dd248a81b2e79cd8f9250b44c41d4102ef433d0f0e26268b90a10e8

在Master上安裝flannel(在Master上執行)

參照官網執行:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

檢查

完成后觀察Master上運行的pod,執行kubectl get -A pods -o wide:
Alt text
執行kubectl get nodes查看節點:
Alt text
查看各個服務器上的鏡像文件:
Alt text

源碼

Github倉庫:https://github.com/sunweisheng/Kubernetes


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM