kubernetes部署杂记

kubernetes中文社区–部署文档

  • 基于系统ubuntu 19
  • 简记:
    • master,node:安装kubelet,kubeadm,docker,kubectl(node可不装)
      1
      2
      3
      4
      5
      kubelet:运行在每个节点上的主要的“节点代理”,它按照 PodSpec 中的描述工作 

      kubeadm:快速创建和加入集群的工具

      kubectl:是Kubernetes 的命令行工具(CLI),是Kubernetes 用户和管理员必备的管理工具。kubectl提供了大量的子命令,方便管理Kubernetes集群中的各种功能。
    • master:kubeadm init(初始化集群)
    • nodes:kubeadm join(加入集群)

安装https支持

1
apt install apt-transport-https ca-certificates curl software-properties-common

加载docker key

1
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

加载docker源

1
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic stable"

加载kubernetes key

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

加载kubernetes 源

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

刷新源

1
apt update

基础环境部署

1
2
apt install docker-ce kubelet kubeadm kubectl
systemctl enable docker kubelet

查询需要的镜像

1
kubeadm config images list

编写shell脚本,通过docker拉取镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash

images="
kube-apiserver:v1.17.0
kube-controller-manager:v1.17.0
kube-scheduler:v1.17.0
kube-proxy:v1.17.0
pause:3.1
etcd:3.4.3-0
coredns:1.6.5
"

for imageName in ${images} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
done

初始化集群

1
kubeadm init

初始化参数示例

1
kubeadm init --pod-network-cidr=10.10.0.0/16 --service-cidr=10.100.0.0/16

加入集群示例

1
kubeadm join ip:port --token <token> --discovery-token-ca-cert-hash <cert>

获取集群当前token(token有效期为24小时)

1
kubeadm token list

获取当前节点证书加密字符

1
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

kubectl get cs 查看核心组件健康状态

kubectl get nodes 获取节点状态信息

kubectl get pods -n kube-system 获取pod信息,-n指定名称空间

kubectl get ns 获取名称空间


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!