【Linux】【Services】【SaaS】 kubeadm安裝kubernetes

1. 簡介node

2. 環境linux

2.1. OS:  CentOS Linux release 7.5.1804 (Core)git

2.2. Ansible: 2.6.2-1.el7github

2.3. docker:docker

2.4. kubernetes:centos

2.5. api

3. 準備bash

3.1. ansible,節點太多了,安裝一個ansible統一執行命令吧網絡

yum -y install ansible

  

看一下配置文件app

~]# cat /etc/ansible/hosts
[all]
service ansible_host=10.210.55.220 hostname=server
master1 ansible_host=10.210.55.221  hostname=master1
master2 ansible_host=10.210.55.222  hostname=master2
master3 ansible_host=10.210.55.223  hostname=master3
node1 ansible_host=10.210.55.226  hostname=node1
node2 ansible_host=10.210.55.227  hostname=node2
node3 ansible_host=10.210.55.228  hostname=node3
node4 ansible_host=10.210.55.229  hostname=node4

[master]
master1
master2
master3

[etcd]
master1
master2
master3

[worker]
node1
node2
node3
node4

  

 

看一下hosts文件

~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.210.55.220   service  service.eric.com
10.210.55.221   master1  master1.eric.com
10.210.55.222   master2  master2.eric.com
10.210.55.223   master3  master3.eric.com
10.210.55.226   node1  node1.eric.com
10.210.55.227   node2  node2.eric.com
10.210.55.228   node3  node3.eric.com
10.210.55.229   node4  node4.eric.com

  

最後配置一下root帳戶SSH免密登陸,試一下

~]# ansible all -m command -a hostname
service | SUCCESS | rc=0 >>
centos-0

node4 | SUCCESS | rc=0 >>
centos-node-4

node3 | SUCCESS | rc=0 >>
centos-node-3

node2 | SUCCESS | rc=0 >>
centos-node-2

node1 | SUCCESS | rc=0 >>
centos-node-1

master2 | SUCCESS | rc=0 >>
centos-master-2

master3 | SUCCESS | rc=0 >>
centos-master-3

master1 | SUCCESS | rc=0 >>
centos-master-1

  

3.2. 配置yum源,我直接使用的是阿里的源

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

rpm --import https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

rpm --import https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

#kubernetes repo須要手寫
]# cat kubernetes.repo
[kubernetes]
name = kubernetes@aliyun
baseurl = https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck = 1
gpgkey = https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
enabled = 1

#驗證一下
]# yum repolist
]# yum makecache

  

3.3. 安裝基礎的包

#或者使用ansible all -m yum -a "state=present name=docker-ce,kubectl,kubelet,kubeadm"

yum install -y docker-ce kubectl kubelet kubeadm

  

3.4. (optional)配置鏡像下載的代理

]# cat !$
cat /usr/lib/systemd/system/docker.service

...
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
Environment="HTTPS_PROXY=http://www.ik8s.io:10080/"
Environment="NO_PROXY=127.0.0.0/8,10.210.55.0/24"
...

]# systemctl daemon-reload

  

3.5. 配置master內核參數,這兩個參數是bridge的參數,須要手工建立或者讓docker啓動的時候建立纔會出現,千萬不要作!作了會致使kubedns沒法啓動

~]# systemctl start docker
~]# echo "net.bridge.bridge-nf-call-iptables=1" >> /etc/sysctl.conf
~]# echo "net.bridge.bridge-nf-call-ip6tables=1" >> /etc/sysctl.conf
~]# sysctl -p

  

3.6. 配置kubelet和docker開機啓動,配置交給kubeadm來作

~]# systemctl enable docker
~]# systemctl enable kubelet

  

3.7. (optional)禁用swap,新版的k8s可使用ignore選項來忽略swap

~]# cat /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"

  

 

4. 使用kubeadm初始化集羣master節點

# 也能夠指定參數,不指定參數都是默認,最好指定一下版本,默認是裝最高版,有可能會出現兼容問題
kubeadm init --kubernetes-version=v1.11.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap

  

成功以後記得執行以下步驟,不然沒法與kube-api通訊,在生產系統中最好使用普通用戶,我這裏就直接使用root用戶了

To start using your cluster, you need to run the following as a regular user:

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

# 同時必須安裝網絡附件,不然master會處於notready狀態
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

#在node節點執行下面的操做就能夠加入master了
You can now join any number of machines by running the following on each node
as root:

  kubeadm join 10.210.55.223:6443 --token xd0696.i3kegveg7g1z3i09 --discovery-token-ca-cert-hash sha256:9498a3f73791b9b7c228cd468fe7332581e703771de0da68811a3391c717b953

  

 

此時master節點狀態仍是notready,由於沒有網絡,咱們須要安裝flannel

]# kubectl get nodes
NAME              STATUS     ROLES     AGE       VERSION
centos-master-3   NotReady   master    16m       v1.11.2

  

參考https://github.com/coreos/flannel

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

  

而後系統會拉取鏡像,可能須要一段時間

~]# docker image ls
REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
k8s.gcr.io/kube-proxy-amd64                v1.11.1             d5c25579d0ff        4 weeks ago         97.8MB
k8s.gcr.io/kube-apiserver-amd64            v1.11.1             816332bd9d11        4 weeks ago         187MB
k8s.gcr.io/kube-controller-manager-amd64   v1.11.1             52096ee87d0e        4 weeks ago         155MB
k8s.gcr.io/kube-scheduler-amd64            v1.11.1             272b3a60cd68        4 weeks ago         56.8MB
k8s.gcr.io/coredns                         1.1.3               b3b94275d97c        2 months ago        45.6MB
k8s.gcr.io/etcd-amd64                      3.2.18              b8df3b177be2        4 months ago        219MB
quay.io/coreos/flannel                     v0.10.0-amd64       f0fad859c909        6 months ago        44.6MB
k8s.gcr.io/pause                           3.1                 da86e6ba6ca1        8 months ago        742kB
~]# kubectl get nodes
NAME      STATUS    ROLES     AGE       VERSION
master3   Ready     master    4m        v1.11.2
~]# kubectl get pods --all-namespaces
NAMESPACE     NAME                              READY     STATUS    RESTARTS   AGE
kube-system   coredns-78fcdf6894-jbrc6          1/1       Running   0          4m
kube-system   coredns-78fcdf6894-wqc96          1/1       Running   0          4m
kube-system   etcd-master3                      1/1       Running   0          3m
kube-system   kube-apiserver-master3            1/1       Running   0          3m
kube-system   kube-controller-manager-master3   1/1       Running   0          3m
kube-system   kube-flannel-ds-amd64-cnnmc       1/1       Running   0          2m
kube-system   kube-proxy-tvb7c                  1/1       Running   0          4m
kube-system   kube-scheduler-master3            1/1       Running   0          3m

  

5. 在node節點上分別執行

kubeadm join 10.210.55.223:6443 --token xd0696.i3kegveg7g1z3i09 --discovery-token-ca-cert-hash sha256:9498a3f73791b9b7c228cd468fe7332581e703771de0da68811a3391c717b953

  

能夠在master節點上看到他們

~]# kubectl get nodes
NAME      STATUS     ROLES     AGE       VERSION
master3   Ready      master    9m        v1.11.2
node1     Ready      <none>    2m        v1.11.2
node2     Ready      <none>    39s       v1.11.2
node3     Ready      <none>    31s       v1.11.2
node4     NotReady   <none>    22s       v1.11.2
相關文章
相關標籤/搜索