使用kubeadm安裝kubernetes(單master)

搭建環境:

三臺CentOS7.6虛擬機(2核 4G)。

hosts文件解析,s1爲master節點,其餘n1,n2爲node節點:

192.168.100.49 s1
192.168.100.50 n1
192.168.100.51 n2

準備工作

關閉selinux及關閉防火牆

systemctl stop firewalld

cat /etc/selinux/config  |grep disabled
#     disabled - No SELinux policy is loaded.
SELINUX=disabled

關閉swap分區
swapoff -a

安裝docker及kubelet(所有節點)

CentOS 7(使用 yum 進行安裝docker)

# step 1: 安裝必要的一些系統工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加軟件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新並安裝Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 開啓Docker服務
sudo service docker start

# 注意:
# 官方軟件源默認啓用了最新的軟件,您可以通過編輯軟件源的方式獲取各個版本的軟件包。例如官方並沒有將測試版本的軟件源置爲可用,您可以通過以下方式開啓。同理可以開啓各種測試版本等。
# vim /etc/yum.repos.d/docker-ee.repo
#   將[docker-ce-test]下方的enabled=0修改爲enabled=1
#
# 安裝指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
#   Loading mirror speeds from cached hostfile
#   Loaded plugins: branch, fastestmirror, langpacks
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            @docker-ce-stable
#   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
#   Available Packages
# Step2: 安裝指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]

CentOS 7(使用 yum 進行安裝k8s)

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce 0
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet

添加init初始化配置文件 

 [root@s1 ~]# vim kubeadm-config.yaml 

apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.16.3
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
networking:
    serviceSubnet: "10.96.0.0/12"
    podSubnet: "10.244.0.0/16"

主要是指定imageRepository,官方的鏡像源被牆了,需做代理。我這裏直接指定阿里的鏡像倉庫。

kubeadm init --config=kubeadm-config.yaml

master部署完成:

按照提示執行:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

部署flannel網絡插件

[root@s1 ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

初始化 node節點

獲得 join命令參數

該 token 的有效時間爲 2 個小時,2小時內,您可以使用此 token 初始化任意數量的 worker 節點。

在 master 節點上執行

[root@s1 ~]# kubeadm token create --print-join-command
kubeadm join 192.168.100.49:6443 --token t1ig6s.f0kb00v0cm3uy9q7 --discovery-token-ca-cert-hash sha256:61923ca95428028f8a4fdaf3896f974bd229f8ec9b84185665e068d1afe89710  

在兩個node節點上執行

[root@n2 ~]# kubeadm join 192.168.100.49:6443 --token t1ig6s.f0kb00v0cm3uy9q7 --discovery-token-ca-cert-hash sha256:61923ca95428028f8a4fdaf3896f974bd229f8ec9b84185665e068d1afe89710 

操作過程中報錯:

[root@n1 ~]# kubeadm join 192.168.100.49:6443 --token t1ig6s.f0kb00v0cm3uy9q7 \
>     --discovery-token-ca-cert-hash sha256:61923ca95428028f8a4fdaf3896f974bd229f8ec9b84185665e068d1afe89710 
[preflight] Running pre-flight checks
        [WARNING Service-Docker]: docker service is not enabled, please run 'systemctl enable docker.service'
        [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
        [WARNING SystemVerification]: this Docker version is not on the list of validated versions: 19.03.5. Latest validated version: 18.09
error execution phase preflight: [preflight] Some fatal errors occurred:
        [ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher

則執行 ,沒有報錯不執行(配置存在差異):

[root@n1 ~]# echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables

驗證集羣狀態

在master節點上執行:

[root@s1 ~]# kubectl get nodes
NAME   STATUS   ROLES    AGE   VERSION
n1     Ready    <none>   13m   v1.16.3
n2     Ready    <none>   13m   v1.16.3
s1     Ready    master   16m   v1.16.3
[root@s1 ~]# kubectl get pods -n kube-system -o wide
NAME                          READY   STATUS    RESTARTS   AGE   IP               NODE   NOMINATED NODE   READINESS GATES
coredns-67c766df46-d6qjb      1/1     Running   0          15m   10.244.0.2       s1     <none>           <none>
coredns-67c766df46-wdkbt      1/1     Running   0          15m   10.244.0.3       s1     <none>           <none>
etcd-s1                       1/1     Running   0          14m   192.168.100.49   s1     <none>           <none>
kube-apiserver-s1             1/1     Running   0          14m   192.168.100.49   s1     <none>           <none>
kube-controller-manager-s1    1/1     Running   0          14m   192.168.100.49   s1     <none>           <none>
kube-flannel-ds-amd64-72qgm   1/1     Running   0          12m   192.168.100.51   n2     <none>           <none>
kube-flannel-ds-amd64-f2s8n   1/1     Running   0          14m   192.168.100.49   s1     <none>           <none>
kube-flannel-ds-amd64-jk22d   1/1     Running   0          12m   192.168.100.50   n1     <none>           <none>
kube-proxy-glt2v              1/1     Running   0          12m   192.168.100.51   n2     <none>           <none>
kube-proxy-lfpmn              1/1     Running   0          15m   192.168.100.49   s1     <none>           <none>
kube-proxy-xxhw6              1/1     Running   0          12m   192.168.100.50   n1     <none>           <none>
kube-scheduler-s1             1/1     Running   0          14m   192.168.100.49   s1     <none>           <none>

 

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