k8s快速安裝部署


1.環境主備:
Vmware 虛擬機3台 配置2c 4g
主機名 節點IP 角色 部署組件
k8s-master01 10.0.0.21 Master01 etcd、kube-apiserver、kube-controller-manager、kubectl、kubeadm、kubelet、kube-proxy、flannel
k8s-node01 10.0.0.22 Node01 kubectl、kubelet、kube-proxy、annel
k8s-node02 10.0.0.23 Node02 kubectl、ubelet、ube-proxy、lannel

組件版本:
Centos 7.6
Kernel 3.10.0-862.el7.x86_64
etcd 3.3.15
coredns 1.6.2
kubeadmv 1.16.2
kubectlv 1.16.2
kubeletv 1.16.2
kube-proxyv 1.16.2
flannel v0.11.0

k8s安裝部署分為兩個角色,master和node,也就是管理節點和工作節點,可理解為master(老板發號指令)、node(打工崽干活的)。

2.修改主機名,添加hosts解析,所有機器執行。
10.0.0.21 hostnamectl set-hostname k8s-master01
10.0.0.22 hostnamectl set-hostname k8s-node01
10.0.0.23 hostnamectl set-hostname k8s-node02

cat >> /etc/hosts << EOF
10.0.0.21 k8s-master01
10.0.0.22 k8s-node01
10.0.0.23 k8s-node02
EOF

3.優化操作系統,所有機器執行。
iptables -P FORWARD ACCEPT
swapoff -a
防止開機自動掛載swap分區
sed -i '/ swap / s/^(.)$/#\1/g' /etc/fstab
關閉selinux
sed -ri 's#(SELINUX=).
#\1disabled#' /etc/selinux/config
setenforce 0
systemctl disable firewalld && systemctl stop firewalld

開啟內核對流量轉發
cat < /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
vm.max_map_count=262144
EOF

modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf

下載阿里雲源和docker源
curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

添加kubernetes.repo
cat < /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生成緩存
yum clean all && yum makecache

4.安裝docker(所有節點執行)
yum list docker-ce --showduplicates | sort -r
yum install docker-ce -y

mkdir -p /etc/docker
配置docker鏡像加速地址
vim /etc/docker/daemon.json
{
"registry-mirrors": ["http://f1361db2.m.daocloud.io"]
}

啟動docker
systemctl enable docker && systemctl start docker

驗證是否啟動
docker version

5.安裝k8s-master01(所有機器執行)
安裝1.16版本
yum install -y kubelet-1.16.2 kubeadm-1.16.2 kubectl-1.16.2 --disableexcludes=kubernetes

查看版本
kubeadm version

開機自啟
systemctl enable kubelet

6.初始化配置文件,只在master01上執行
mkdir ~/k8s-install && cd ~/k8s-install

生成配置文件
kubeadm config print init-defaults > kubeadm.yaml

修改kubeadm.yml配置文件
[root@k8s-master01 k8s-install]# grep '#' kubeadm.yaml
advertiseAddress: 10.0.0.21 # 改為當前主機IP
imageRepository: registry.aliyuncs.com/google_containers # 改為阿里雲鏡像源
kubernetesVersion: v1.16.2 # 改為你自己安裝的版本
podSubnet: 10.244.0.0/16 # 添加pod網段,設置容器內網絡

提前下載鏡像
kubeadm config images list --config kubeadm.yaml

檢查鏡像
[root@k8s-master01 k8s-install]# docker images|grep aliyun
registry.aliyuncs.com/google_containers/kube-proxy v1.16.2 8454cbe08dc9 2 years ago 86.1MB
registry.aliyuncs.com/google_containers/kube-controller-manager v1.16.2 6e4bffa46d70 2 years ago 163MB
registry.aliyuncs.com/google_containers/kube-scheduler v1.16.2 ebac1ae204a2 2 years ago 87.3MB
registry.aliyuncs.com/google_containers/kube-apiserver v1.16.2 c2c9a0406787 2 years ago 217MB
registry.aliyuncs.com/google_containers/etcd 3.3.15-0 b2756210eeab 2 years ago 247MB
registry.aliyuncs.com/google_containers/coredns 1.6.2 bf261d157914 2 years ago 44.1MB
registry.aliyuncs.com/google_containers/pause 3.1 da86e6ba6ca1 3 years ago 742kB

初始化k8s-master01節點
輸入完之后注意查看提示信息
輸入完:kubeadm init --config kubeadm.yaml
如下圖所示:

執行如下命令,創建配置文件
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u)😒(id -g) $HOME/.kube/config

[root@k8s-master01 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master01 NotReady master 9m12s v1.16.2

7.node節點執行(根據你自己的執行的命令kubeadm init --config kubeadm.yaml 生成的信息去執行)
kubeadm join 10.0.0.21:6443 --token abcdef.0123456789abcdef
--discovery-token-ca-cert-hash sha256:9c93ce3372b778097f4c8023c21478ec0bbfa797d061118a17420c80e9cd7fae

8.去k8s-master01檢查nodes狀態
[root@k8s-master01 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master01 NotReady master 12m v1.16.2
k8s-node01 NotReady 25s v1.16.2
k8s-node02 NotReady 16s v1.16.2

此刻我們可以看到集群中,加入了2個node節點了,但是狀態還是未就緒,還是因為網絡問題。

9.安裝flannel網絡插件(k8s-master01執行)
這里可能會遇到網絡問題,多嘗試幾次即可。
wget ttps://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml

修改kube-flannel.yml文件
修改配置文件,指定機器的網卡名,大約在190行
189 args:
190 - --ip-masq
191 - --kube-subnet-mgr
192 - --iface=eth0 # 添加這個配置網卡名(請注意你自己的網卡名)

10.k8s-master01節點執行一下操作
下載flannel網絡插件鏡像
cd /root/k8s-install
docker pull quay.io/coreos/flannel:v0.11.0-amd64

安裝flannel網絡插件
kubectl create -f kube-flannel.yml

此時此刻已經全部正確狀態
可以再看下集群中所有的pods狀態,確保都是正確的
[root@k8s-master01 k8s-install]# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-58cc8c89f4-ccsmv 1/1 Running 0 98m
kube-system coredns-58cc8c89f4-fw9nx 1/1 Running 0 98m
kube-system etcd-k8s-master01 1/1 Running 0 97m
kube-system kube-apiserver-k8s-master01 1/1 Running 0 97m
kube-system kube-controller-manager-k8s-master01 1/1 Running 0 97m
kube-system kube-flannel-ds-amd64-jn5nm 1/1 Running 0 2m27s
kube-system kube-flannel-ds-amd64-m2zcr 1/1 Running 0 2m27s
kube-system kube-flannel-ds-amd64-wn5fd 1/1 Running 0 2m27s
kube-system kube-proxy-4fd7j 1/1 Running 0 98m
kube-system kube-proxy-c8qq7 1/1 Running 0 86m
kube-system kube-proxy-vxxnx 1/1 Running 0 86m
kube-system kube-scheduler-k8s-master01 1/1 Running 0 97m

確保節點是Ready
[root@k8s-master01 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master01 Ready master 4h21m v1.16.2
k8s-node01 Ready 4h9m v1.16.2
k8s-node02 Ready 4h9m v1.16.2

11.首次使用k8s部署應用程序,初次體驗k8s部署Nginx web服務
[root@k8s-master01 k8s-install]# kubectl run jxj-nginx --image=nginx:alpine

kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/jxj-nginx created

[root@k8s-master01 k8s-install]# kubectl get pods -o wide --watch

在master01節點訪問Nginx
curl 10.244.2.2

-- 學習於b站“超哥Linux” 跟着超哥學習k8s


免責聲明!

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



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