k8s集群部署文档(VMware+Ubuntu)

一. 准备服务器节点

# 系统版本:Ubuntu 16.04
# 集群网络: 192.168.0.50    k8s-master
#           192.168.0.51    k8s-node1
#           192.168.0.52    k8s-node2

二.安装前准备

1.节点设置静态ip

$vim /etc/network/interfaces   #vim打开文件编辑,若vim不可用使用sudo apt install vim自行安装

auto lo
iface lo inet loopback
auto ens33                #网卡名通过ifconfig查询
iface ens33 inet static   #设置为静态
address 192.168.0.50      #自行设置IP,可在vm网络编辑器中查找最大最小IP地址,在其中选择
gateway 192.168.0.2       
netmask 255.255.255.0
dns-nameserver 114.114.114.114 
dns-nameserver 8.8.8.8                                                                                                                                                           

2.禁用selinux,防火墙,交换空间

$sudo vim /etc/selinux/config      #禁用selinux
SELINUX=disabled                   #编辑文件添加
   
$setenforce 0                      #禁用防火墙
setenforce: SELinux is disabled

$sudo ufw disable
$getenforce             #验证 
Disabled
 
$swapoff -a           #关闭交换空间  
$vim /etc/fstab       #注释掉swap那一整行  

#当编辑一些只读文件不能保存退出时,使用:w !sudo tee % 命令,然后退出即可

3.修改节点名

$vim /etc/hostname    #修改为k8s节点名称       
$cat /etc/hostname    #查看修改名称生效

#若出现sudo无法解析主机的问题,可以vim /etc/hosts编辑127.0.1.1后的主机名,重启生效 
 

二.安装docker

#step 1: 安装必要的一些系统工具
$sudo apt-get update
$sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
$curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
#step 3: 写入软件源信息
$sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu (lsb_release -cs) stable"
#Step 4: 更新并安装 Docker-CE
$sudo apt-get -y update
$sudo apt-get -y install docker-ce

三.修改Linux内核

$vim /etc/sysctl.d/k8s.conf       # 在该文件中添加如下内容  
  net.bridge.bridge-nf-call-ip6tables = 1  
  net.bridge.bridge-nf-call-iptables = 1  
$sysctl -p                        #从配置文件“/etc/sysctl.conf”加载内核参数设置

四.修改Docker 镜像源

$sudo mkdir -p /etc/docker
$sudo tee /etc/docker/daemon.json <<-'EOF'
>{
> "registry-mirrors": ["https://lzyjejsb.mirror.aliyuncs.com"]   #阿里云平台获取镜像源       
>}
>EOF
$sudo systemctl daemon-reload
$sudo systemctl restart docker

五. 安装kubernetes

1.添加kubernetes软件源,安装kubeadm,kubelet,kubectl,启动kubelet服务并设置开机自动启动

#国内源
$ curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -  #添加gpg
$ cat <<EOF >/etc/apt/sources.list.d/kubernetes.list      #添加源
#添加如下内容
>deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
>EOF  
$ apt-get update
$ apt-get install -y kubelet kubeadm kubectl
# 安装指定版本:
$ apt-get install kubeadm=1.16.0-00 kubectl=1.16.0-00 kubelet=1.16.0-00
$systemctl enable kubelet  && systemctl start kubelet   # 启动kubelet服务并设置开机自动启动

#k8s 1.16.0版本与kubeflow不兼容

2.拉取镜像并tag为所需镜像

1> 查看所需镜像
  $kubeadm config images list --kubernetes-version v1.16.0  
                k8s.gcr.io/kube-apiserver:v1.16.0  
                k8s.gcr.io/kube-controller-manager:v1.16.0  
                k8s.gcr.io/kube-scheduler:v1.16.0  
                k8s.gcr.io/kube-proxy:v1.16.0  
                k8s.gcr.io/pause:3.1  
                k8s.gcr.io/etcd:3.3.15-0  
                k8s.gcr.io/coredns:1.6.2  
2> 拉取列出的镜像
  $docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.16.0   
  $docker pull mirrorgooglecontainers/kube-scheduler-amd64:v1.16.0  
  $docker pull mirrorgooglecontainers/kube-apiserver-amd64:v1.16.0  
  $docker pull mirrorgooglecontainers/kube-controller-manager-amd64:v1.16.0  
  $docker pull mirrorgooglecontainers/pause:3.1  
  $docker pull mirrorgooglecontainers/etcd:3.3.15-0  
  $docker pull coredns/coredns:1.6.2  
3> docker tag将拉取的镜像改为所需镜像 
  $docker tag mirrorgooglecontainers/kube-proxy-amd64:v1.16.0 k8s.gcr.io/kube-proxy:v1.16.0  
  ......

3.初始化master节点

$kubeadm init --image-repository registry.aliyuncs.com/google_containers --ignore-preflight-errors=Swap
       [init] Using Kubernetes version: v1.14.0  
       [preflight] Running pre-flight checks  
       [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  
       ………  
      Your Kubernetes control-plane has initialized successfully!

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

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/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.0.50:6443 --token fscvas.o675epqchbcgk8wh \--discovery-token-ca-cert-hash sha256:5104b9164f5724f37c0076e109efd6944fc88522e791e097abfebcc97d3ad22f 
 
#kubeadm join以及之后内容需要保留,在node中执行,如果忘记可以使用kubeadm token list等命令查询。

4.将kubectl命令添加到普通用户

 #使用普通用户执行如下命令:  
    $mkdir -p $HOME/.kube  
    $sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config  
    $sudo chown $(id -u):$(id -g) $HOME/.kube/config  

5.部署weave网络

$kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"  
serviceaccount/weave-net created
clusterrole.rbac.authorization.k8s.io/weave-net created
clusterrolebinding.rbac.authorization.k8s.io/weave-net created
role.rbac.authorization.k8s.io/weave-net created
rolebinding.rbac.authorization.k8s.io/weave-net created
daemonset.apps/weave-net created
    #使用kubectl get命令查看集群是否均已正常运行  
    $ kubectl get pods -n kube-system  
NAME                                 READY   STATUS    RESTARTS   AGE
coredns-58cc8c89f4-w8dsz             1/1     Running   0          4h18m
coredns-58cc8c89f4-wn5bk             1/1     Running   0          4h18m
etcd-k8s-master                      1/1     Running   0          4h17m
kube-apiserver-k8s-master            1/1     Running   0          4h17m
kube-controller-manager-k8s-master   1/1     Running   0          4h17m
kube-proxy-2f6hg                     1/1     Running   0          4h10m
kube-proxy-bczp9                     1/1     Running   0          4h18m
kube-scheduler-k8s-master            1/1     Running   0          4h17m
weave-net-mg6h8                      2/2     Running   0          4h10m
weave-net-r67zf                      2/2     Running   0          4h12m

六.添加node

1.在node节点上执行环境准备,安装docker,修改镜像源,安装kubeadm和kubelet,注意需要拉取kube-proxy、pause、coredns三个镜像,否则weave容器等无法在该节点上正常运行。

2.在node节点上执行我们保存的kubeadm join命令。

$kubeadm join 192.168.0.50:6443 --token vcvc9x.cbypmhjx9wsc7tu3 \
>--discovery-token-ca-cert-hash sha256:a5e928b8fef6a88d207cfe763039c5567f8638b175027b4ae389dda693143a14
[preflight] Running pre-flight checks
	[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.12. Latest validated version: 18.09
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
[kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.16" ConfigMap in the kube-system namespace
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Activating the kubelet service
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

3.在master节点上执行: kubectl get nodes 查看节点是否正常。正常状态为Ready。 如果不正常查看pods解决。

$kubectl get nodes
NAME         STATUS   ROLES    AGE     VERSION
k8s-master   Ready    master   4h32m   v1.16.0
k8s-node1    Ready    <none>   4h24m   v1.16.0

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值