k3s安装

设置hostname 唯一, k8s1为master,其他为node

hostnamectl set-hostname --static k8s1
hostnamectl set-hostname --static k8s2
hostnamectl set-hostname --static k8s3

三台机器都配置
vi /etc/hosts

192.168.7.176 k8s1
192.168.7.125 k8s2
192.168.7.123 k8s3

安装docker

apt-get install -y docker.io

master安装,默认使用container,可以指定docker

master运行

curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
  • 指定docker
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_EXEC="server --docker" sh -

查看node

kubectl get node -o wide

查看token

cat /var/lib/rancher/k3s/server/token
K10f75c7935abda173f0af314bb38f1f5b7b3f1290f24c0d63ac1fb46294e5f67c2::server:d67ddc5eb895313910bbbad9819e9d67

node安装,默认使用container,可以指定docker

curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://k8s1:6443 K3S_TOKEN=K10f75c7935abda173f0af314bb38f1f5b7b3f1290f24c0d63ac1fb46294e5f67c2::server:d67ddc5eb895313910bbbad9819e9d67 sh -
  • 指定docker
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_EXEC="--docker" K3S_URL=https://k8s1:6443 K3S_TOKEN=K10f75c7935abda173f0af314bb38f1f5b7b3f1290f24c0d63ac1fb46294e5f67c2::server:d67ddc5eb895313910bbbad9819e9d67 sh -

kubectl命令补全tab

source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

运行nginx, 小demo

mkdir -p k3s/nginx && cd k3s/nginx

cat nginx-deployment.yml 
apiVersion: apps/v1    #与k8s集群版本有关,使用 kubectl api-versions 即可查看当前集群支持的版本
kind: Deployment    #该配置的类型,我们使用的是 Deployment
metadata:            #译名为元数据,即 Deployment 的一些基本属性和信息
  name: nginx-deployment    #Deployment 的名称
  labels:        #标签,可以灵活定位一个或多个资源,其中key和value均可自定义,可以定义多组,目前不需要理解
    app: nginx    #为该Deployment设置key为app,value为nginx的标签
spec:            #这是关于该Deployment的描述,可以理解为你期待该Deployment在k8s中如何使用
  replicas: 3    #使用该Deployment创建一个应用程序实例
  selector:        #标签选择器,与上面的标签共同作用,目前不需要理解
    matchLabels: #选择包含标签app:nginx的资源
      app: nginx
  template:        #这是选择或创建的Pod的模板
    metadata:    #Pod的元数据
      labels:    #Pod的标签,上面的selector即选择包含标签app:nginx的Pod
        app: nginx
    spec:        #期望Pod实现的功能(即在pod中部署)
      containers:    #生成container,与docker中的container是同一种
      - name: nginx    #container的名称
        image: nginx:alpine    #使用镜像nginx创建container,
        ports:
          - containerPort: 80   #内部服务暴露的端口
cat nginx-service.yml 
apiVersion: v1
kind: Service  #该配置的类型,我们使用的是 Service 服务类型
metadata:
  name: nginx-service  #该服务类型的名称
spec:
  selector:    #选中的app部署实例
    app: nginx #为该Deployment设置key为app,value为nginx的标签
  ports:  #暴露的端口
  - protocol: TCP  # 走得tcp 协议
    port: 80 #默认端口
    targetPort: 80 #内建服务端口
    nodePort: 30080 #对外服务端口
  type: NodePort
kubectl create -f nginx-deployment.yml -f nginx-service.yml