安装kubernetes

1.所有节点安装docker
yum -y install wget
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce

systemctl enable docker && systemctl start docker



2.配置镜像下载加速器
mkdir /etc/docker
cat > /etc/docker/daemon.json << EOF
{
    "registry-mirrors": ["https://b9pmye1o.mirror.aliyuncs.com"]
}
EOF

systemctl restart docker
docker info



3.添加阿里云YUM软件源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpqcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.qpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF



4.安装kubeadm, kubelet和kubectl
由于版本更新频繁,这里指定版本号部署:
yum install -y kubelet-1.19.0 kubeadm-1.19.0 kubectl-1.19.0
systemctl enable kubelet




master: kube-apiserver, scheduler, controller-manager, etcd
node: kubelet (非容器化)、kube-proxy
kubeadm不单纯是简化部署k8s集群,采用了容器化方式部署k8s组件。



5.部署Kubernetes Master

https://kubengetes.io/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubead
m/#initializing-your-control-plane-node

#192.168.3.12 (Master) 执行
$ kubeadm init \
--apiserver-advertise-address=192.168.3.12 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.19.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all


--apiserver-advertise-address 集群通告地址
--image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
--kubernetes-version K8s版本,与上面安装的一致
--service-cidr 集群内部虛拟网络,Pod统一访问入口
--pod-network-cidr Pod网络,,与下面部署的CNI网络组件yaml中保持一致




kubectl get node可以看到已经启起来了

kubeadm init初始化工作:
1、[preflight]环境检查和拉取镜像 kubeadm config images pu11
2、[certs]生成k8s证书和etcd证书/etc/kubernetes/pki
3、[kubeconfig]生成kubeconfig文件
4、[kubelet-start]生成kubelet配置文件
5、[controi-plane]部署管理书点组件,用镜像启动容器
6、[etcd]用etcd部署数据库,用镜像启动容器
7、[upload-config] [kubelet] [upload-certs]上传配置文件到k8s中
8、[mark-control-plane] 给管理节点添加一个标签node-role.kubernetes.io/master='' 并且添加一个污点[node-role.kubernetes.io/master:NoSchedule]
9、[bootstrap-token] 自动为kubelet颁发证书
10、[addons] 部署插件,CoreDNS,kube-proxy

最后,搭贝连接k8s集群的认证文件到默认路径下
按控制台提示执行:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config


systemctl status kubelet 查看服务
docker ps 查看启动的进程,或kubectl get pods -n kube-system





6、复制kubeadm init的控制台代码,加入Kubernetes Node

如:


kubeadm join 192.168.3.12:6443 --token pi9mo4.a6a30iyf46wwgh1h \
    --discovery-token-ca-cert-hash sha256:9710a51d23b187b2b6f63c3001723819e90f9aacc8b49321a196039f2c37cd38



    默认token有效期为24小时,当过期之后,该tken就不可用了。这时就需要重新创建token,

    直接命令快捷生成:
kubeadm token create --print-join-command
https://kubernetes.io/does/reference/setup-tools/kubeadm/kubeadm-join/


7、 部署容器网络 (CNI)
journalctl -u kubelet #查日志
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network
journalctl -u kubelet #查日志
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network

注意:只需要部署下面其中一个,推荐Calico。
Calico是一个纯三层的数据中心网络方案,Calico支持广泛的平台,包括Kubernetes、 Qpenstack等。
Calico 在每•
-个计算节点利用 Linux Kernel 实现了一个高效的虚拟路由器(yRouter) 来负责数据转发,而每个
vRouter 通过 BGP 协议负责把自己上运行的workload 的路由信息向整个 Calico 网络内传播。
此外,Calico项目还实现了Kubernetes 网络策略,提供ACL功能。

$ wget --no-check-certificate https://docs.projectcalico.org/manifests/calico.yaml
curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O
下载完后还需要修改(vi calico.yaml)里面定义Pod网络 (CALICO IPV4POOL CIDR),与前面kubeadm init指定的一样
修改完后应用清单:
$ kubectl apply -f calico.yaml
$ kubectl get pods -n kube-system


cat calico.yaml |grep 'image:'
image: docker.io/calico/cni:v3.25.0
image: docker.io/calico/cni:v3.25.0
image: docker.io/calico/node:v3.25.0
image: docker.io/calico/node:v3.25.0
image: docker.io/calico/kube-controllers:v3.25.0
docker pull docker.io/calico/cni:v3.25.0



8.部署Dashboard
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml


以下位置,添加一行。type: NodePort
---

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard
  type: NodePort


命令:

kubectl apply -f recommended.yaml
kubectl get pods,svc -n kubernetes-dashboard


创建service account并綁定默认cluster-admin管理员集群角色:
#创建用户
$ kubectl create serviceaccount dashboard-admin -n kube-system
#用户授权
$ kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
#获取用户Token
$ kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}' )


使用输出的token登录Dashboard.
文/程忠 浏览次数:0次   2023-02-07 08:59:52

相关阅读


评论:
点击刷新

↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑