前言

k8s版本:1.18
docker版本:5:19.03.9~3-0

1 初始化系统

1.1 关闭交换区

swapoff -a && sysctl -w vm.swappiness = 0

1.2 关闭防火墙

systemctl stop ufw && systemctl disable ufw

1.3 清空docker的东西

sudo apt-get remove docker docker-engine docker.io containerd runc

1.4 修改主机名字,便于区分

sudo hostnamectl set-hostname master
vim /etc/hosts
192.168.193.103 hosts

2 安装docker

参考官网install on ubuntu

2.1 Set up the repository

1 更新软件包索引并安装软件包以允许使用 基于 HTTPS 的安装库:

sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

2 添加 Docker 的官方 GPG 密钥:

sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

3 使用以下命令设置安装库:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

2.2 Install Docker Engine

1 更新apt

sudo apt-get update

Receiving a GPG error when running ?
解决方法:sudo chmod a+r /etc/apt/keyrings/docker.gpg
sudo apt-get update

2 安装Docker Engine, containerd, and Docker Compose,这里指定版本号

首先列出可用的 存储库中的版本:

# List the available versions:
apt-cache madison docker-ce | awk '{ print $3 }'

5:19.03.9~3-0~ubuntu-bionic
5:20.10.15~3-0~ubuntu-bionic
5:20.10.14~3-0~ubuntu-bionic
5:20.10.13~3-0~ubuntu-bionic

选择所需的版本并安装:

VERSION_STRING=5:19.03.9~3-0~ubuntu-bionic
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin

通过运行映像验证 Docker 引擎安装是否成功:

sudo docker run hello-world

补充:

安装最新版本:直接用以下命令
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3 修改/etc/docker/daemon.json文件,后续k8s初始化可能会出错

主要是修改"exec-opts": [“native.cgroupdriver=systemd”]

cat <<EOF >/etc/docker/daemon.json
{
    "exec-opts": ["native.cgroupdriver=systemd"],    #记住这个systemd,后续初始化可能会出错
    "log-driver": "json-file",
    "log-opts":
    {
        "max-size": "100m"
    },
    "registry-mirrors": [
        "https://dockerhub.azk8s.cn",
        "https://reg-mirror.qiniu.com",
        "https://quay-mirror.qiniu.com"
     ],
    "storage-driver": "overlay2"
}
EOF

使该文件生效并重启docker

mkdir -p /etc/systemd/system/docker.service.d

systemctl daemon-reload
systemctl restart docker

3 安装k8s

直接在root模式下操作

3.1 添加阿里云的 GPG 密钥

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

3.2 设置repository url

cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

3.3 安装k8s

sudo apt-get update
#这里指定版本号1.18.10-00
sudo apt-get install -y kubeadm=1.18.10-00 kubectl=1.18.10-00 kubelet=1.18.10-00

3.4 初始化

kubeadm init \
    --kubernetes-version=v1.18.10 \
    --pod-network-cidr=10.244.0.0/16 \
    --apiserver-advertise-address=192.168.193.103 \      #修改为自己的ip
    --image-repository registry.aliyuncs.com/google_containers

注意!!!:
初始化成功后,注意最后的提示信息与节点加入命令,大致如下(按实际情况):

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
kubeadm join 223.193.6.2:6443 --token 57bxyl.yvjd6rr94p0rbxu6 \
    --discovery-token-ca-cert-hash sha256:b375301a83fb68f4a394f64a80a2672006b7af098e7c6bb539b142833186c163

3.5 查看节点信息

只有master节点时,也是可以感知自身信息的

sudo kubectl get nodes

可以发现此时主节点状态是 notready
因为没有装网络插件!

方法一:安装Calico插件(作者选择的该插件)
将下载好的calico.yaml文件放到安装目录下,直接运行以下命令:

kubectl apply -f calico.yaml

或者,没有下载好的yaml文件,直接:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

方法二:安装Flannel插件(未尝试)

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#Edit kube-flannel.yml file, add - --iface=interface-name

containers:
      - name: kube-flannel
        image: quay.io/coreos/flannel:v0.11.0-arm
        command:
        - /opt/bin/flanneld
        args:
        - --ip-masq
        - --kube-subnet-mgr
        - --iface=eno1  #视实际情况修改

End
#Deployment
kubectl apply -f kube-flannel.yml

3.6 修改主节点也可作为从节点

kubectl taint nodes --all node-role.kubernetes.io/master-

3.7 安装dashboard插件

将下载好的dashboard文件夹放到安装路径下

cd dashboard
kubectl apply -f dashboard_cluster_role_binding_admin.yaml
kubectl apply -f dashboard_service_account_admin.yaml
kubectl apply -f recommended.yaml
cd ..

修改recommended.yaml文件,添加端口号以在浏览器里打开

---

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort        #添加的
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30443   #添加的
  selector:
    k8s-app: kubernetes-dashboard

---

获得token

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kubernetes-dashboard-token  | awk '{print $1}')

得到admin-user的token后,在浏览器输入https://192.168.193.103(自己机器的ip地址):30443,然后输入token就能进入dashboard。

补充:新版本k8s安装dashboard 的方式不一样了,不自动生成token

#install dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

#创建 dashboard-admin 用户
kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard

#绑定 clusterrolebinding
kubectl create clusterrolebinding dashboard-admin-rb --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin

#创建文件 dashboard-admin-token.yaml
apiVersion: v1
kind: Secret
metadata:
name: dashboard-admin-secret
namespace: kubernetes-dashboard
annotations:
kubernetes.io/service-account.name: dashboard-admin
type: kubernetes.io/service-account-token

#创建token
kubectl apply -f dashboard-admin-token.yaml

#获取token
kubectl describe secret dashboard-admin-secret -n kubernetes-dashboard

3.8 安装metrics插件

#apiserver, enable aggregator-routing
#/etc/kubernetes/manifests/kube-apiserver.yaml
sed -i '23a \ \ \ \ - --enable-aggregator-routing=true' /etc/kubernetes/manifests/kube-apiserver.yaml
#...
#spec:
#  containers:
#  - command:
#...
#  - --enable-aggregator-routing=true
#metrics-server.yaml
kubectl apply -f metrics-server.yaml
##image failed
docker pull k8simage/metrics-server:v0.5.0
docker tag k8simage/metrics-server:v0.5.0 k8s.gcr.io/metrics-server/metrics-server:v0.5.0

以上是master节点的操作!!!

从节点也需要安装doker与k8s,但不需要初始化节点,用主节点初始化得出的命令,加入到主节点中即可!!!

4 k8s node节点重新加入master集群

4.1 删除node节点

kubectl delete node node1

4.2 重置节点

主节点与从节点都:

Kubeadm reset

根据提示删除文件

rm -rf $HOME/.kube/config
rm -rf /etc/cni/net.d
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐